Fix: Force-Update Cooldown + robusteres Cache-Clear, SW by-v1105

Symptom: 'Einen Moment, wir besorgen neue Leckerlis' Loading-Screen
erscheint beim User wiederholt beim Wechsel in andere Bereiche.

Ursachen:
1. In dieser Session wurden viele Bumps in kurzer Zeit ausgerollt
   (1100 → 1104). Jeder Versions-Mismatch zwischen App-Cache und
   Server triggert force-update.
2. /force-update Cache-Delete war fire-and-forget mit nur 1.5s
   Reload-Timer — auf iOS-PWA oft zu kurz für asynchrone unregister/
   caches.delete, daher landete der Reload manchmal noch im alten
   Cache-Stand → erneuter Mismatch → erneuter force-update.

Fixes:
- app.js: Cooldown 5 Min nach force-update — verhindert Loop bei
  mehrfachen schnellen Bumps. Mismatch wird erkannt aber nicht mehr
  sofort reagiert.
- /force-update: async/await für SW-Unregister + Cache-Delete bevor
  Reload. Safety-Timeout 4s. Reload-URL mit ?_t= Cache-Bust.
This commit is contained in:
rene 2026-05-27 07:51:36 +02:00
parent 9a066cb24c
commit b0ae71ba69
6 changed files with 43 additions and 25 deletions

View file

@ -86,14 +86,14 @@
<title>Ban Yaro</title>
<!-- Theme + theme-color Statusleiste vor CSS setzen -->
<script src="/js/boot-early.js?v=1104"></script>
<script src="/js/boot-early.js?v=1105"></script>
<!-- CSS: Reihenfolge ist wichtig — ?v= zwingt Browser zur Neuladung -->
<link rel="stylesheet" href="/css/design-system.css?v=1104">
<link rel="stylesheet" href="/css/layout.css?v=1104">
<link rel="stylesheet" href="/css/components.css?v=1104">
<link rel="stylesheet" href="/css/utilities.css?v=1104">
<link rel="stylesheet" href="/css/lists.css?v=1104">
<link rel="stylesheet" href="/css/design-system.css?v=1105">
<link rel="stylesheet" href="/css/layout.css?v=1105">
<link rel="stylesheet" href="/css/components.css?v=1105">
<link rel="stylesheet" href="/css/utilities.css?v=1105">
<link rel="stylesheet" href="/css/lists.css?v=1105">
</head>
<body>
@ -617,11 +617,11 @@
<div id="modal-container"></div>
<!-- JS: Reihenfolge ist wichtig — erst Basis, dann Features -->
<script src="/js/api.js?v=1104"></script>
<script src="/js/ui.js?v=1104"></script>
<script src="/js/app.js?v=1104"></script>
<script src="/js/worlds.js?v=1104"></script>
<script src="/js/offline-indicator.js?v=1104"></script>
<script src="/js/api.js?v=1105"></script>
<script src="/js/ui.js?v=1105"></script>
<script src="/js/app.js?v=1105"></script>
<script src="/js/worlds.js?v=1105"></script>
<script src="/js/offline-indicator.js?v=1105"></script>
<!-- Feature-Seiten werden lazy geladen -->
@ -631,7 +631,7 @@
<!-- Boot: Offline-Banner + SW-Registration (extrahiert für CSP) -->
<script src="/js/boot.js?v=1104"></script>
<script src="/js/boot.js?v=1105"></script>
</body>