const CACHE = "tv-remote-shell-v1"; const SHELL_FILES = ["/", "/styles.css", "/app.js", "/manifest.json"]; self.addEventListener("install", (event) => { event.waitUntil(caches.open(CACHE).then((cache) => cache.addAll(SHELL_FILES))); 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(); }); // Network-first for API calls (never serve stale remote-control state), // cache-first for the static shell so the app still opens offline. self.addEventListener("fetch", (event) => { const url = new URL(event.request.url); if (url.pathname.startsWith("/api/")) return; event.respondWith( caches.match(event.request).then((cached) => cached || fetch(event.request)) ); });