fix: Plus-Icon symmetrisch + Service-Worker Network-First für HTML

- Erstellen-Button in der Sidebar: SVG-Path war asymmetrisch
  (M19 13h-6v9...) — Vertikalbalken hing nach unten heraus. Jetzt
  Standard-Plus mit gleich langen Armen.
- Service Worker holt index.html und version.js ab sofort per
  Network-First — neue Releases greifen damit beim nächsten
  Seiten-Reload, ohne dass der SW manuell deregistriert werden muss.
  Statics bleiben Cache-First für Offline-Tauglichkeit; auf
  Aktivierung wird der alte Cache komplett gelöscht.

Version v9 → v10.
This commit is contained in:
Scarriffle
2026-05-07 19:49:48 +02:00
parent f4bcdf458b
commit ebe250ca01
3 changed files with 36 additions and 13 deletions

View File

@@ -1,7 +1,7 @@
// Calendarr Service Worker
// Cache-first for static assets, network-first for /api/* (graceful offline)
const CACHE_VERSION = 'calendarr-v9';
const CACHE_VERSION = 'calendarr-v10';
const STATIC_ASSETS = [
'/',
'/index.html',
@@ -65,6 +65,29 @@ self.addEventListener('fetch', event => {
return;
}
// Network-first for navigation (HTML) and the version-defining files —
// ensures users always get the freshest entry point so new releases
// take effect on the next reload without a manual SW unregister.
const isHtml = req.mode === 'navigate'
|| url.pathname === '/'
|| url.pathname === '/index.html';
const isVersionFile = url.pathname === '/static/js/version.js';
if (isHtml || isVersionFile) {
event.respondWith(
fetch(req).then(resp => {
if (resp && resp.status === 200) {
const clone = resp.clone();
caches.open(CACHE_VERSION).then(c => c.put(req, clone)).catch(() => {});
}
return resp;
}).catch(() =>
caches.match(req).then(c => c || caches.match('/index.html'))
)
);
return;
}
// Cache-first for everything else (static)
event.respondWith(
caches.match(req).then(cached => {