release: v0.13.2 — PWA cache fix so mobile gets the v0.13.x modal
Mobile operators were never seeing the inline PDF preview, .TXT download, or Review form that v0.13.0 added — every feature was working on desktop browsers but invisible in the PWA. Root cause: backend/static/sw.js had CACHE_VERSION = 'v1', unchanged since v0.12.x. The activate handler deletes any cache not matching CACHE_VERSION, so without a bump the stale sfm-static-v1 cache (with the pre-v0.13.0 event-modal.js) stayed authoritative. cacheFirst strategy served it forever; mobile users effectively saw the v0.12.x modal regardless of how many times we rebuilt the image. Fix: - CACHE_VERSION bumped to 'v0.13.2' (matches backend/main.py VERSION). Comment in sw.js documents the convention: any release touching a static asset must bump this string. - event-modal.js added to the precache list so its lifecycle is explicitly tied to the SW version bump (installed fresh on activate rather than landing via the cacheFirst-then-cached pattern). Mobile users get the new modal on next page nav: SW update check picks up the bumped sw.js, skipWaiting installs it, activate evicts the v1 caches, controllerchange fires, page reloads, fresh event-modal.js loads. Worst case ~1h delay from registration.update() interval; operators can force-refresh by closing + reopening the PWA. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
+11
-2
@@ -1,18 +1,27 @@
|
||||
/* Service Worker for Seismo Fleet Manager PWA */
|
||||
/* Network-first strategy with cache fallback for real-time data */
|
||||
|
||||
const CACHE_VERSION = 'v1';
|
||||
// IMPORTANT: bump this on every release that touches a precached or
|
||||
// runtime-cached static asset (event-modal.js, mobile.js, style.css,
|
||||
// templates served at /, etc.). The activate handler deletes any cache
|
||||
// not matching CACHE_VERSION, so old SW caches get evicted and mobile
|
||||
// PWA users actually receive the new bundles instead of being stuck on
|
||||
// the pre-bump version. Convention: keep it in sync with the Terra-View
|
||||
// version string in backend/main.py.
|
||||
const CACHE_VERSION = 'v0.13.2';
|
||||
const STATIC_CACHE = `sfm-static-${CACHE_VERSION}`;
|
||||
const DYNAMIC_CACHE = `sfm-dynamic-${CACHE_VERSION}`;
|
||||
const DATA_CACHE = `sfm-data-${CACHE_VERSION}`;
|
||||
|
||||
// Files to precache (critical app shell)
|
||||
// Files to precache (critical app shell). event-modal.js is included
|
||||
// so its cache lifecycle is tied to the SW version bump explicitly.
|
||||
const STATIC_FILES = [
|
||||
'/',
|
||||
'/static/style.css',
|
||||
'/static/mobile.css',
|
||||
'/static/mobile.js',
|
||||
'/static/offline-db.js',
|
||||
'/static/event-modal.js',
|
||||
'/static/manifest.json',
|
||||
'https://cdn.tailwindcss.com',
|
||||
'https://unpkg.com/htmx.org@1.9.10',
|
||||
|
||||
Reference in New Issue
Block a user