diff --git a/plugin-designs/doxa-maps-spa/doxa-maps-spa.vue b/plugin-designs/doxa-maps-spa/doxa-maps-spa.vue index 76adc17c0..41788758f 100644 --- a/plugin-designs/doxa-maps-spa/doxa-maps-spa.vue +++ b/plugin-designs/doxa-maps-spa/doxa-maps-spa.vue @@ -657,6 +657,26 @@ function assertNoDuplicateTabKeys(navModel) { return dupes } +// ★ FRESH BUNDLES AFTER A DEPLOY, AT THE SAME URLs (2026-10-02). A host that serves the tree with Last-Modified and no +// Cache-Control (the DX Life landing does) lets a browser run its cached copies for hours: measured, a typed-URL revisit +// after a deploy requested NONE of the gallery, the manifest or the bundles, so a returning reader ran the old files, or +// an old manifest against a new bundle. A version query cannot fix it here: loadScriptOnce keys its registry by the full +// href, so X.js?v= beside a composite's plain X.js would run the bundle twice. So the manifest is always revalidated, and +// when its fingerprint (every bundle's integrity) differs from this reader's last visit to this tree, every listed bundle +// gets ONE conditional request before any tab mounts: a 304 refreshes the cached copy, and a 200 is cancelled at its +// headers, which drops the stale entry. The plain