feat(ui): Update-Modal mit Multi-Package-Liste + Live-Progress

Vorher: Update-Banner war eine Inline-Alert mit "Apply now"-Button —
ein Click → Hintergrund-Apt-Run, kein Feedback ob's durch ist.

Jetzt:
* Banner zeigt nur noch Hint + "Details anzeigen"-Button.
* Modal listet alle Pakete mit Upgrade (installed → available),
  prominenter Warnhinweis dass edgeguard-api+scheduler restartet
  werden (~2-5s Unterbrechung) — HAProxy/nft/WG/Squid/Unbound/Chrony
  bleiben durch.
* "Jetzt anwenden" startet den apt-Run, Modal schaltet auf Apply-
  Mode (kein Cancel mehr, Progress-Alert mit aktueller→Ziel-Version).
* Polling von /system/health auf 2s erhöht während Apply. Sobald
  health.version == target → success-toast + auto-reload der UI
  (1.5s delay damit das neue UI-Bundle gecached werden kann).

Pattern entlehnt von enconf/mail-gateway. Plus i18n-Erweiterung
für update.modalTitle / modalIntro / modalWarn / applyingHint /
applyingDetail / success.

Version 1.0.45.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Debian
2026-05-11 07:56:57 +02:00
parent 9464322450
commit f4ccfc3c0c
9 changed files with 158 additions and 40 deletions

View File

@@ -284,9 +284,16 @@
},
"update": {
"available": "Update verfügbar: {{pkg}} {{installed}} → {{available}}",
"viewDetails": "Details anzeigen",
"applyNow": "Jetzt aktualisieren",
"applying": "Update läuft …",
"started": "Update wurde gestartet — der Server wird in Kürze neu starten."
"applyingHint": "Pakete werden installiert + Services restartet. Verbindung kann kurz brechen — die UI lädt automatisch neu sobald Version {{version}} live ist.",
"applyingDetail": "aktuell {{current}} · Ziel {{target}}",
"started": "Update wurde gestartet — der Server wird in Kürze neu starten.",
"success": "Update auf {{version}} abgeschlossen.",
"modalTitle": "EdgeGuard-Update",
"modalIntro": "Folgende Pakete werden aktualisiert:",
"modalWarn": "Während des Updates werden edgeguard-api + edgeguard-scheduler neu gestartet (~2-5 Sekunden Service-Unterbrechung). HAProxy + nft + WireGuard + Squid + Unbound + Chrony bleiben durchgehend aktiv."
},
"wg": {
"title": "WireGuard",

View File

@@ -284,9 +284,16 @@
},
"update": {
"available": "Update available: {{pkg}} {{installed}} → {{available}}",
"viewDetails": "View details",
"applyNow": "Apply now",
"applying": "Update in progress …",
"started": "Update has started — the server will restart shortly."
"applyingHint": "Packages are installed and services restarted. Connection may briefly break — the UI reloads automatically once version {{version}} is live.",
"applyingDetail": "current {{current}} · target {{target}}",
"started": "Update has started — the server will restart shortly.",
"success": "Updated to {{version}}.",
"modalTitle": "EdgeGuard update",
"modalIntro": "The following packages will be updated:",
"modalWarn": "During the update edgeguard-api + edgeguard-scheduler restart (~2-5 s service interruption). HAProxy + nft + WireGuard + Squid + Unbound + Chrony stay up the whole time."
},
"wg": {
"title": "WireGuard",