Version bump 0.15.0 → 0.16.0 across main.py VERSION, sw.js CACHE_VERSION
(evicts stale PWA caches), README (header + highlights + version section),
ROADMAP stamp, and the CHANGELOG 0.16.0 entry.
Covers everything since 0.15.0: per-module status (independent sound/vibration
lifecycle, new project_modules.status column + migration), live monitoring on
the internal project Overview, browsable vibration events (Events sub-tab +
location filter + sortable columns), 24-Hour session period type, redesigned
project cards + per-module quick-open, the module-folder header restructure, and
five fixes (SLM start false-error, classify-modal dropdown + stuck button,
deployment GPS on existing locations, event date filters).
Deploy: run backend/migrate_add_module_status.py on prod; ships with SLMM v0.4.0.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015m9FuJvk65kJmmP3c9c6r1
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>