Frontend: "Neue Version verfügbar"-Banner nach Deploy

Die Cache-Header waren schon optimal (index.html no-store, Assets
immutable) – aber eine bereits laufende SPA holt sich nach einem
Deploy keinen neuen Code, bis der Nutzer neu lädt. Das fängt kein
Cache-Header ab.

useVersionCheck holt die (server-seitig no-store) index.html
periodisch (5 min) + beim Zurückkehren zum Tab, extrahiert die Menge
der referenzierten Vite-Asset-Hashes als Signatur und vergleicht sie
mit dem Startstand. Ändert sie sich (= neuer Build deployt), zeigt
UpdateBanner oben im Layout einen dezenten Hinweis mit "Jetzt neu
laden".

Kein Backend-/Build-Change; im Dev-Modus No-op (Vite-Dev liefert
keine /assets/<hash>-Dateien → leere Signatur → kein Alarm).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-07-27 16:56:35 +02:00
co-authored by Claude Opus 4.7
parent fd8be1d5c4
commit 6b08762ff9
4 changed files with 124 additions and 0 deletions
+11
View File
@@ -97,6 +97,17 @@ isolierte Instanz (keine Multi-Tenancy im Code), Provisioning + Abrechnung
## ✅ Erledigt
- [x] **🔄 „Neue Version verfügbar"-Banner (offener-Tab-Problem)**
- Cache-Header waren schon optimal (index.html `no-store`, Assets
`immutable`) aber eine laufende SPA holt sich nach einem Deploy
nicht von selbst neuen Code. Neuer `useVersionCheck`-Hook holt die
(immer frische) index.html periodisch + beim Zurückkehren zum Tab,
vergleicht die Vite-Asset-Hash-Signatur mit dem Startstand. Bei
Änderung erscheint ein dezentes Banner „Neue Version verfügbar →
Jetzt neu laden" (`UpdateBanner`, oben im Layout).
- Kein Backend-/Build-Change nötig; im Dev-Modus automatisch No-op
(keine `/assets/<hash>`-Dateien → leere Signatur).
- [x] **👁 Kundenportal: Toggle „Deaktivierte Verträge anzeigen"**
- Der Admin-/Mitarbeiter-Blick (CustomerDetail) hatte den Toggle schon;
jetzt auch in der Kundenportal-Vertragsübersicht (`ContractList`,