diff --git a/skills/datastore/assets/sw.js b/skills/datastore/assets/sw.js
index 903d71f..b06bb5a 100644
--- a/skills/datastore/assets/sw.js
+++ b/skills/datastore/assets/sw.js
@@ -1,5 +1,5 @@
-// Minimal service worker for Mila PWA installability & offline resilience
-const CACHE_NAME = 'mila-v1';
+// Minimal service worker for Family PWAs (Mila & Moritz) with instant cache-bypassing navigation
+const CACHE_NAME = 'family-pwa-v2';
self.addEventListener('install', (event) => {
self.skipWaiting();
@@ -19,7 +19,16 @@ self.addEventListener('activate', (event) => {
self.addEventListener('fetch', (event) => {
if (event.request.method !== 'GET') return;
- // Network-first strategy: Always fetch live real-time updates from MinIO
+
+ // For HTML documents/navigations: ALWAYS bypass HTTP cache to get latest live server rendering
+ if (event.request.destination === 'document' || event.request.mode === 'navigate') {
+ event.respondWith(
+ fetch(event.request, { cache: 'no-cache' }).catch(() => caches.match(event.request))
+ );
+ return;
+ }
+
+ // Assets (images, fonts, scripts): network-first with offline cache fallback
event.respondWith(
fetch(event.request).catch(() => caches.match(event.request))
);
diff --git a/skills/datastore/scripts/update_moritz_website.py b/skills/datastore/scripts/update_moritz_website.py
index 6aec716..20ac5bb 100644
--- a/skills/datastore/scripts/update_moritz_website.py
+++ b/skills/datastore/scripts/update_moritz_website.py
@@ -537,6 +537,8 @@ def generate_dashboard_html(engine: DatastoreEngine) -> str:
+
+
Moritz Health — Energiebilanz & Sport
@@ -587,6 +589,9 @@ def generate_dashboard_html(engine: DatastoreEngine) -> str:
+