Index: src/server.js
===================================================================
--- src/server.js	(revision 9e9e6f98000b96d6c64d6c0cc5d9eb951ada9804)
+++ src/server.js	(revision e2ea5c49d99947fd02bdda292a25027f868b7225)
@@ -478,5 +478,5 @@
   res.set('Cache-Control', 'no-cache');
   res.send(`
-const CACHE_VERSION = 'pcms-v17-' + new Date().toISOString().split('T')[0];
+const CACHE_VERSION = 'pcms-v18-' + new Date().toISOString().split('T')[0];
 self.addEventListener('install', e => {
   e.waitUntil(caches.open(CACHE_VERSION).then(c => c.addAll(['/'])));
@@ -503,5 +503,9 @@
   try { if (new URL(e.request.url).origin !== self.location.origin) return; } catch (err) { return; }
   e.respondWith(
-    fetch(e.request).then(resp => {
+    // { cache: 'no-store' }: go to the network for the page, bypassing the browser's
+    // HTTP cache, so an online visitor ALWAYS gets the fresh site and never a
+    // heuristically-cached copy served through the SW. The cache is only a
+    // last-resort offline fallback (the .catch below).
+    fetch(e.request, { cache: 'no-store' }).then(resp => {
       // Network-first: always serve fresh when online. Also refresh the '/' offline
       // fallback with the homepage we just served, so a later cold start on a flaky or
