/* Minimaler Service-Worker: App-Shell-Cache für Offline-Hinweis. */ const CACHE = "grotti-shell-v1"; const SHELL = ["/", "/static/grotti.css?v=54", "/static/api.js?v=28", "/static/ui.js?v=2"]; self.addEventListener("install", (event) => { event.waitUntil(caches.open(CACHE).then((c) => c.addAll(SHELL).catch(() => undefined))); self.skipWaiting(); }); self.addEventListener("activate", (event) => { event.waitUntil( caches.keys().then((keys) => Promise.all(keys.filter((k) => k !== CACHE).map((k) => caches.delete(k))) ) ); self.clients.claim(); }); self.addEventListener("fetch", (event) => { const req = event.request; if (req.method !== "GET") return; const url = new URL(req.url); if (url.pathname.startsWith("/api/")) return; event.respondWith( fetch(req).catch(() => caches.match(req).then((hit) => hit || caches.match("/"))) ); });