diff --git a/backend/main.py b/backend/main.py
index 13b6b3a..72e0c35 100644
--- a/backend/main.py
+++ b/backend/main.py
@@ -129,6 +129,49 @@ async def share_target(request: Request):
headers={"Cache-Control": "no-cache"}
)
+# Cache-Reset-Seite — löscht SW + Caches, leitet zur App weiter
+@app.get("/update")
+async def force_update():
+ from fastapi.responses import HTMLResponse
+ html = """
+
+
+
+
+ Ban Yaro — Aktualisieren
+
+
+
+
+
Ban Yaro
+
App wird aktualisiert…
+
+
+
+
+"""
+ return HTMLResponse(html, headers={"Cache-Control": "no-store"})
+
+
# SPA Fallback — ALLE nicht-API-Routen gehen zur index.html
@app.get("/{full_path:path}")
async def spa_fallback(full_path: str):
diff --git a/backend/static/sw.js b/backend/static/sw.js
index faf7df6..c05aeaf 100644
--- a/backend/static/sw.js
+++ b/backend/static/sw.js
@@ -9,11 +9,11 @@ const CACHE_STATIC = `${CACHE_VERSION}-static`;
// index.html wird NICHT pre-gecacht (immer Network-First)
const STATIC_ASSETS = [
'/css/design-system.css',
- '/css/layout.css?v=32',
- '/css/components.css?v=32',
- '/js/api.js?v=32',
- '/js/ui.js?v=32',
- '/js/app.js?v=32',
+ '/css/layout.css',
+ '/css/components.css',
+ '/js/api.js',
+ '/js/ui.js',
+ '/js/app.js',
'/manifest.json',
'/icons/icon-192.png',
];