From 7ae43310f4a5b2cf6cb0824ac7ab7333eb7f1eac Mon Sep 17 00:00:00 2001 From: VAIO73 <50487331+Vaso73@users.noreply.github.com> Date: Fri, 4 Sep 2026 10:36:51 +0200 Subject: [PATCH 1/4] fix: recognize LXC mount targets with trailing slashes --- AppImage/components/virtual-machines.tsx | 7 +++- AppImage/messages/en/common.json | 3 ++ AppImage/messages/sk/common.json | 3 ++ AppImage/scripts/lxc_mount_points.py | 52 ++++++++++++++++-------- 4 files changed, 47 insertions(+), 18 deletions(-) diff --git a/AppImage/components/virtual-machines.tsx b/AppImage/components/virtual-machines.tsx index e115863b..237b8849 100644 --- a/AppImage/components/virtual-machines.tsx +++ b/AppImage/components/virtual-machines.tsx @@ -606,6 +606,9 @@ function MountPointCard({ mp }: { mp: LxcMountPoint }) { }) const flags = optsEntries.filter((o) => o.value === null).map((o) => o.key) const keyValues = optsEntries.filter((o) => o.value !== null) as Array<{ key: string; value: string }> + const runtimeError = mp.runtime_error === "configured but not mounted" + ? t("vmLxc.details.mountErrors.configuredButNotMounted") + : mp.runtime_error return (
- {mp.runtime_error} + {runtimeError}
)}{t("vmLxc.updates.updaterChoiceHint")}
+{t("vmLxc.updates.helperDetectedChoice")}
} + {method === "helper" && (!helperAvailable || !helperCommand) && ( +{t("vmLxc.updates.helperUnavailableChoice")}
+ )} + {(method === "helper" || method === "custom") && ( +{t("audit.neverRun")}
+ ) : ( ++ {t("audit.lastRun", { + when: new Date((latest.finished_at || latest.started_at) * 1000) + .toLocaleString(), + })} + {stale && ` — ${t("audit.stale", { days: String(ageDays) })}`} +
+ )} +{t("audit.readOnlyNotice")}
++ {t("audit.acceptedNotice", { count: String(acceptedCount) })} +
+ )} +{error}
+ )} + + {latest && visible.length === 0 && ( ++ {t("audit.detail.why")} +
++ {t(`audit.checks.${f.check_id}.rationale`)} +
++ {t("audit.detail.acceptedRisk")} +
+{f.exception.reason}
++ {f.exception.accepted_by} ·{" "} + {new Date(f.exception.accepted_at * 1000).toLocaleDateString()} +
++ {t("audit.detail.affected")} +
++ {t("audit.detail.evidence")} +
+ {/* Wide command output scrolls inside its own box so + the page itself never scrolls sideways. */} +
+ {f.evidence}
+
+ + {t("overview.metricsCachedWarning", { + time: new Date(lastChecked * 1000).toLocaleString(language), + })} +
+ ) +} diff --git a/AppImage/components/network-traffic-chart.tsx b/AppImage/components/network-traffic-chart.tsx index 911e9720..9fb637d9 100644 --- a/AppImage/components/network-traffic-chart.tsx +++ b/AppImage/components/network-traffic-chart.tsx @@ -6,6 +6,7 @@ import { Loader2 } from 'lucide-react' import { fetchApi } from "../lib/api-config" import { getNetworkUnit } from "../lib/format-network" import { useT } from "../lib/i18n/provider" +import { MetricsCacheNotice } from "./metrics-cache-notice" interface NetworkMetricsData { time: string @@ -55,12 +56,13 @@ export function NetworkTrafficChart({ const [data, setData] = useState