v0.2.3
RustBox CI / rustbox (push) Canceled after 0s

This commit is contained in:
Mateusz Gruszczyński committed 2026-10-31 19:40:19 +01:00
1 parent 5b22add1f3
commit 2c98b8f925
38 files changed
+915 -87

No files matched your search

+25 -9
View File
@@ -45,7 +45,7 @@ async function loadQuota() {
}
function openSettings(tab = "appearance") {
if (tab === "openpgp" && state.authPolicy.pgpEnabled === false) tab = "appearance";
if (!settingsTabAvailable(tab)) tab = "appearance";
selectSettingsTab(tab);
$("#settings-dialog").showModal();
if (tab === "sieve") loadSieve();
@@ -59,7 +59,7 @@ function openSettings(tab = "appearance") {
}
function selectSettingsTab(name) {
if (name === "openpgp" && state.authPolicy.pgpEnabled === false) name = "appearance";
if (!settingsTabAvailable(name)) name = "appearance";
$$(".settings-tab").forEach((button) => button.classList.toggle("active", button.dataset.tab === name));
$$(".settings-panel").forEach((panel) => panel.classList.toggle("hidden", panel.dataset.panel !== name));
}
@@ -371,6 +371,20 @@ function disconnectRealtime() {
if (socket && socket.readyState < WebSocket.CLOSING) socket.close(1000, "Client disconnect");
}
async function resetAllSettings() {
if (!window.confirm("Reset all RustBox settings to defaults? Messages, identities, keys and templates will be kept.")) return;
const button = $("#reset-all-settings");
if (button) button.disabled = true;
try {
await request("/settings/reset", { method: "POST", body: "{}" });
["rustbox.calendarView", "rustbox.threadExpanded", "rustbox.composeFullscreen"].forEach((key) => localStorage.removeItem(key));
window.location.reload();
} catch (error) {
toast(error.message, "error");
if (button) button.disabled = false;
}
}
function capabilityBadge(label, supported) {
return `<span class="capability-badge ${supported ? "supported" : "unsupported"}">${escapeHtml(label)}<strong>${supported ? "yes" : "no"}</strong></span>`;
}
@@ -410,13 +424,15 @@ async function loadDiagnostics() {
smtpStatus.textContent = "Unavailable";
$("#diagnostic-smtp-summary").textContent = error.message;
}
try {
const info = await request("/sieve/status", { method: "GET" });
sieveStatus.textContent = info.connected ? "Connected" : "Unavailable";
$("#diagnostic-sieve-summary").textContent = `${info.tlsMode || ""}${info.implementation ? ` · ${info.implementation}` : ""}${info.extensions?.length ? ` · ${info.extensions.join(", ")}` : ""}`;
} catch (error) {
sieveStatus.textContent = "Unavailable";
$("#diagnostic-sieve-summary").textContent = error.message;
if (state.authPolicy.sieveEnabled !== false) {
try {
const info = await request("/sieve/status", { method: "GET" });
sieveStatus.textContent = info.connected ? "Connected" : "Unavailable";
$("#diagnostic-sieve-summary").textContent = `${info.tlsMode || ""}${info.implementation ? ` · ${info.implementation}` : ""}${info.extensions?.length ? ` · ${info.extensions.join(", ")}` : ""}`;
} catch (error) {
sieveStatus.textContent = "Unavailable";
$("#diagnostic-sieve-summary").textContent = error.message;
}
}
try {
const info = await request("/diagnostics/sync", { method: "GET" });