Index: src/views/shell.ejs
===================================================================
--- src/views/shell.ejs	(revision 85b51bfed40ba560eccbc20fd7df36c861e6618b)
+++ src/views/shell.ejs	(revision 87696ce368ae084de890aa4e682f4294c7825feb)
@@ -496,4 +496,13 @@
   window.__modBoot = true;
 
+  // ?v=N — cache-buster voor ALLE modules in assets/js/mod, net als bij
+  // audio-player.js hierboven. BUMP BIJ ELKE WIJZIGING IN DIE MAP. Zonder
+  // query staat /assets op max-age=1y, en dan blijft een browser die de
+  // pagina eerder bezocht een jaar lang de oude module draaien: een
+  // reparatie bereikt precies de bezoekers die hem al hebben.
+  // Eén nummer voor de hele map. Te vaak bumpen kost één download; te weinig
+  // bumpen kost een bugfix die nooit aankomt.
+  var MOD_V = 1;
+
   // name -> 1 (aan het laden) of de module-namespace (geladen). Een module
   // die `init` exporteert draait die bij ELKE paginawissel waarop hij actief
@@ -514,5 +523,5 @@
       if (loaded[name]) { start(name, loaded[name]); return; }
       loaded[name] = 1;
-      import('/assets/js/mod/' + name + '.js').then(function (m) {
+      import('/assets/js/mod/' + name + '.js?v=' + MOD_V).then(function (m) {
         loaded[name] = m;
         start(name, m);
