623ef648b7
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>