From cb8aeddde6c07af8547e7581b31503d321dcfa58 Mon Sep 17 00:00:00 2001 From: hobokenchicken Date: Wed, 1 Jul 2026 16:14:29 -0400 Subject: [PATCH] fix(pwa): generate icons, network-first HTML, bust stale cache --- web/public/icons/icon-192.png | Bin 0 -> 10374 bytes web/public/icons/icon-512.png | Bin 0 -> 49715 bytes web/public/sw.js | 86 ++++++++++++++-------------------- 3 files changed, 36 insertions(+), 50 deletions(-) create mode 100644 web/public/icons/icon-192.png create mode 100644 web/public/icons/icon-512.png diff --git a/web/public/icons/icon-192.png b/web/public/icons/icon-192.png new file mode 100644 index 0000000000000000000000000000000000000000..1fa3d9d9717f4374dd1b03f657a113b5cec3302e GIT binary patch literal 10374 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 X0XxBFP8Jyn@lujg|5PvYCH#K@j-yd@ literal 0 HcmV?d00001 diff --git a/web/public/sw.js b/web/public/sw.js index 6dd568d..c98090b 100644 --- a/web/public/sw.js +++ b/web/public/sw.js @@ -1,58 +1,52 @@ -const CACHE_NAME = 'dumpster-v1'; -const STATIC_ASSETS = [ - '/', - '/index.html', - '/manifest.json', -]; +// ponytail: bump CACHE_NAME on each deploy, or stale HTML breaks assets. +// Network-first for navigation (index.html) keeps hashed asset refs fresh. +const CACHE_NAME = 'dumpster-v2'; -self.addEventListener('install', (event) => { - event.waitUntil( - caches.open(CACHE_NAME).then((cache) => { - return cache.addAll(STATIC_ASSETS); - }) - ); +self.addEventListener('install', () => { self.skipWaiting(); }); self.addEventListener('activate', (event) => { event.waitUntil( - caches.keys().then((cacheNames) => { - return Promise.all( - cacheNames - .filter((name) => name !== CACHE_NAME) - .map((name) => caches.delete(name)) - ); - }) + caches.keys().then((names) => + Promise.all(names.filter((n) => n !== CACHE_NAME).map((n) => caches.delete(n))) + ) ); self.clients.claim(); }); self.addEventListener('fetch', (event) => { - // Skip non-GET requests if (event.request.method !== 'GET') return; + const url = new URL(event.request.url); - // Skip API requests - if (event.request.url.includes('/api/')) return; + // Skip API + WS + if (url.pathname.startsWith('/api/') || url.pathname.startsWith('/ws')) return; - // Skip WebSocket - if (event.request.url.includes('/ws')) return; + // Network-first for navigation requests (index.html) — always fetch fresh HTML + // so hashed asset references stay current after deploys. + if (event.request.mode === 'navigate') { + event.respondWith( + fetch(event.request) + .then((response) => { + const clone = response.clone(); + caches.open(CACHE_NAME).then((c) => c.put(event.request, clone)); + return response; + }) + .catch(() => caches.match('/index.html')) + ); + return; + } + // Cache-first for static assets (JS, CSS, images, fonts) event.respondWith( caches.match(event.request).then((cached) => { - // Return cached version, fetch new one in background const fetchPromise = fetch(event.request).then((response) => { - // Only cache successful responses if (response.ok) { const clone = response.clone(); - caches.open(CACHE_NAME).then((cache) => { - cache.put(event.request, clone); - }); + caches.open(CACHE_NAME).then((c) => c.put(event.request, clone)); } return response; - }).catch(() => { - // Return cached if fetch fails - return cached; - }); + }).catch(() => cached); return cached || fetchPromise; }) @@ -61,35 +55,27 @@ self.addEventListener('fetch', (event) => { self.addEventListener('push', (event) => { if (!event.data) return; - const data = event.data.json(); - const options = { - body: data.body, - icon: '/icons/icon-192.png', - badge: '/icons/badge.png', - vibrate: [100, 50, 100], - data: { - url: data.url || '/', - }, - }; - event.waitUntil( - self.registration.showNotification(data.title || 'Dumpster', options) + self.registration.showNotification(data.title || 'Dumpster', { + body: data.body, + icon: '/icons/icon-192.png', + badge: '/icons/icon-192.png', + vibrate: [100, 50, 100], + data: { url: data.url || '/' }, + }) ); }); self.addEventListener('notificationclick', (event) => { event.notification.close(); - event.waitUntil( - clients.matchAll({ type: 'window', includeUncontrolled: true }).then((clientList) => { - // Focus existing window if available - for (const client of clientList) { + clients.matchAll({ type: 'window', includeUncontrolled: true }).then((list) => { + for (const client of list) { if (client.url.includes(event.notification.data.url) && 'focus' in client) { return client.focus(); } } - // Otherwise open new window return clients.openWindow(event.notification.data.url); }) );