From 99ad69e8cfae04c446bad19924dcc12e630300cc Mon Sep 17 00:00:00 2001 From: MacRimi Date: Fri, 14 Aug 2026 20:17:45 +0200 Subject: [PATCH] Event-only modal cache + Settings edit gating + ES i18n polish MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Modal caches now refresh on events only — the periodic prewarmer runs one-shot at startup, mount points split into static/runtime endpoints, and backups get a client 6-hour gate. Updates tab shows post-apply feedback and the script terminal no longer closes the parent modal. Settings adds edit gating on 3 cards with the 3-level contrast rule applied consistently. ES translation batch (~25 fixes) and What's New for 1.2.4.1-beta refreshed. --- AppImage/components/health-thresholds.tsx | 7 + AppImage/components/host-backup.tsx | 112 +++-- AppImage/components/lxc-update-detection.tsx | 8 +- AppImage/components/notification-settings.tsx | 8 +- AppImage/components/release-notes-modal.tsx | 37 +- AppImage/components/settings.tsx | 454 ++++++++++++++---- AppImage/components/virtual-machines.tsx | 325 +++++++++++-- AppImage/messages/de/common.json | 29 +- AppImage/messages/en/common.json | 23 +- AppImage/messages/es/common.json | 207 ++++---- AppImage/messages/fr/common.json | 29 +- AppImage/messages/it/common.json | 29 +- AppImage/messages/pt/common.json | 29 +- AppImage/messages/sk/common.json | 38 +- AppImage/messages/sv/common.json | 28 +- AppImage/scripts/flask_server.py | 215 ++++++--- AppImage/scripts/lxc_apps.py | 12 +- AppImage/scripts/lxc_mount_points.py | 195 +++++++- scripts/post_install/auto_post_install.sh | 22 +- 19 files changed, 1317 insertions(+), 490 deletions(-) diff --git a/AppImage/components/health-thresholds.tsx b/AppImage/components/health-thresholds.tsx index 2106412d..323b404b 100644 --- a/AppImage/components/health-thresholds.tsx +++ b/AppImage/components/health-thresholds.tsx @@ -741,6 +741,13 @@ export function HealthThresholds() { {t("settings.healthThresholds.description")} + {/* Intentional exception to the global "edit mode contrast" + rule: the numeric inputs already carry semantic colored + backgrounds (red critical, amber warning, blue customised) + which are meaningful and more graphical than a plain form. + A sunken selector would either erase those tints or force + us to `!important` every one — cleaner to keep this card + untouched in edit mode. */} {loading ? (
diff --git a/AppImage/components/host-backup.tsx b/AppImage/components/host-backup.tsx index 827b30a7..1953ef99 100644 --- a/AppImage/components/host-backup.tsx +++ b/AppImage/components/host-backup.tsx @@ -795,7 +795,7 @@ function KeyfileActionsBar({ {/* Current status — icon + colour by state, no truncated fp. */} {escrowMode !== undefined && ( -
+
{t("backup.keyfileManagement.uploadToPbs")} {currentIsFull ? ( @@ -1122,7 +1122,7 @@ export function HostBackup() { className={`text-[10px] uppercase tracking-wide ${ j.profile_mode === "custom" ? "border-cyan-500/40 text-cyan-400 bg-cyan-500/5" - : "border-border text-muted-foreground bg-background/40" + : "border-border text-muted-foreground bg-card" }`} title={ j.profile_mode === "custom" @@ -1322,7 +1322,7 @@ export function HostBackup() { key={`${u.source}:${u.display_id}`} type="button" onClick={() => setInspectingArchive(u)} - className="w-full text-left flex items-center justify-between gap-3 p-3 rounded-md border border-border bg-background/40 hover:bg-white/5 hover:border-blue-500/40 transition-colors group" + className="w-full text-left flex items-center justify-between gap-3 p-3 rounded-md border border-border bg-card hover:bg-white/5 hover:border-blue-500/40 transition-colors group" title={t("backup.archives.inspectTitle")} >
@@ -1986,7 +1986,7 @@ function InspectModal({ rows mixed in only when they carry data. Backend + encryption badges live here (instead of the header, where they used to overlap the close button). */} -
+
{t("backup.archives.backup")}
@@ -2081,7 +2081,7 @@ function InspectModal({ {/* In-flight export task feedback (Download for PBS/Borg). */} {exportTask && ( -
+
{t(`backup.taskStates.${exportTask.state}`)} @@ -2404,7 +2404,7 @@ function InspectModal({ : t("backup.archives.deleteBorgDescription", { repo: remoteArc?.repo_name ?? "" })} -
+
{archive?.source === "local" ? localArc?.id : remoteArc?.snapshot}
@@ -3318,7 +3318,7 @@ function CreateJobDialog({ return ( { if (!v) onClose() }}> - + {isEdit ? ( @@ -3388,7 +3388,7 @@ function CreateJobDialog({ type="button" onClick={() => setBackend(b)} className={`text-left p-3 rounded-md border transition-colors ${ - backend === b ? "border-blue-500 bg-blue-500/5" : "border-border bg-background/40" + backend === b ? "border-blue-500 bg-blue-500/5" : "border-border bg-card" } hover:bg-white/5`} >
@@ -3419,7 +3419,7 @@ function CreateJobDialog({
-
+
{t("backup.destinations.generateNewSshKey")}