Layout + SW: Tab-Leiste sichtbar + kein veralteter Cache
All checks were successful
Build and push Docker image / build (push) Successful in 15s
Test / test (push) Successful in 15s

- main-content padding-top auf calc(var(--nav-h) + 0.75rem) erhöht
  damit die Tab-Leiste (Radio/Focus/Podcasts/Books) sicher unterhalb
  der fixed Navbar liegt — auf Desktop und Mobile
- SW v10: sendet SW_ACTIVATED an alle offenen Tabs wenn ein neuer SW
  übernimmt; app.js lädt daraufhin neu (außer wenn ein Buch geöffnet
  ist) — verhindert dass der Browser eine uralte HTTP-gecachte Version
  ausliefert

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
marwin 2026-05-30 00:19:00 +02:00
parent aa562f8b4d
commit d7a27b188d
3 changed files with 18 additions and 4 deletions

View file

@ -149,8 +149,8 @@ a:hover {
.main-content { .main-content {
max-width: 1100px; max-width: 1100px;
margin: 0 auto; margin: 0 auto;
padding: 1rem 1.5rem calc(var(--bar-h) + 2rem); padding: calc(var(--nav-h) + 0.75rem) 1.5rem calc(var(--bar-h) + 2rem);
height: calc(100% - var(--nav-h)); height: 100%;
overflow-y: auto; overflow-y: auto;
} }
@ -736,7 +736,7 @@ a:hover {
@media (max-width: 600px) { @media (max-width: 600px) {
.main-content { .main-content {
padding: 0.75rem 0.75rem calc(var(--bar-h) + 1.5rem); padding: calc(var(--nav-h) + 0.5rem) 0.75rem calc(var(--bar-h) + 1.5rem);
} }
.now-playing-bar { .now-playing-bar {

View file

@ -2213,6 +2213,13 @@ if ('serviceWorker' in navigator) {
console.warn('Service worker registration failed:', err); console.warn('Service worker registration failed:', err);
}); });
}); });
// When a new SW activates it sends SW_ACTIVATED — reload to get fresh assets,
// but only if the reader isn't open (would interrupt reading).
navigator.serviceWorker.addEventListener('message', e => {
if (e.data?.type === 'SW_ACTIVATED' && !currentBookId) {
window.location.reload();
}
});
} }
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------

View file

@ -2,7 +2,7 @@
* diora service worker caches the app shell for offline use. * diora service worker caches the app shell for offline use.
*/ */
const CACHE = 'diora-v9'; const CACHE = 'diora-v10';
const PODCAST_CACHE = 'diora-podcast-v1'; const PODCAST_CACHE = 'diora-podcast-v1';
const SHELL = [ const SHELL = [
'/static/css/app.css', '/static/css/app.css',
@ -31,6 +31,13 @@ self.addEventListener('activate', function (event) {
); );
}).then(function () { }).then(function () {
return self.clients.claim(); return self.clients.claim();
}).then(function () {
// Tell all open tabs to reload so they get the latest cached assets
return self.clients.matchAll({type: 'window'}).then(function (clients) {
clients.forEach(function (client) {
client.postMessage({type: 'SW_ACTIVATED'});
});
});
}) })
); );
}); });