diff --git a/Brain.md b/Brain.md index 9708cd1..d30a8c8 100644 --- a/Brain.md +++ b/Brain.md @@ -189,4 +189,5 @@ volumes: - **PWA-Kachel Entfernung:** Die ungenutzte "PWA Installierbar"-Statistik-Kachel wurde aus der oberen Übersichtsleiste (`index.html`) entfernt. Das Layout der verbleibenden zwei Kacheln ("Online" & "Dienste") wurde in `style.css` auf ein stabiles, zentriertes 2-Spalten-Raster für Desktop und mobile Ansichten angepasst. - **Kompakte Service-Kategoriefilter:** Die Kategorieauswahl (`.segments`) wurde aus der klebrigen (`sticky`) oberen `.control-bar` herausgelöst und in einem separaten `#categoryFilters`-Bereich direkt über dem Dienste-Grid platziert. Sie verbraucht dadurch im ungescrollten Zustand keinen kostbaren Platz mehr auf Mobilgeräten. - **Visual-Premium Redesign & Untertitel:** Die Filter-Pills wurden verkleinert (Höhe von 36px auf 28px reduziert, kleinere Schriftgröße `0.78rem` und kompakteres Padding), linksbündig ausgerichtet und mit sanften Hover- & Aktiv-Transitions versehen. Zudem wurde der fälschlicherweise hinzugefügte dunkle Hintergrundbalken auf der `.control-bar` vollständig entfernt, um den nahtlosen Backdrop-Blur-Effekt über dem globalen Farbverlauf wiederherzustellen. Der Untertitel der Landing Page wurde von *"Cloud, Medien, Code..."* auf den prägnanten Namen *"Die Selfhost-Werkstatt"* abgeändert. - - **Cache-Buster & PWA Cache Update:** Die Cache-Busting-Parameter für `style.css` und `app.js` wurden in `index.html` hochgestuft (`v=32` bzw. `v=38`). Im Service-Worker (`sw.js`) wurde der Cache-Name auf `mischlabs-pwa-v24` erhöht und die App-Shell-Liste entsprechend angepasst, um ein sofortiges Update der App bei allen Nutzern ohne manuelles Cache-Leeren zu garantieren. + - **Favoriten-Zähler statt Online-Status:** Die "Online"-Statistik-Kachel in der Kopfzeile wurde durch eine dynamische "Favoriten"-Statistik-Kachel ersetzt, um direkt die Anzahl der geladenen Lesezeichen anzuzeigen. Die Reihenfolge wurde auf "Dienste" zuerst und "Favoriten" an zweiter Stelle geändert. Das Erreichbarkeits-Monitoring im Hintergrund läuft weiterhin stabil, um die Status-Punkte der einzelnen Dienste-Karten aktuell zu halten. + - **Cache-Buster & PWA Cache Update:** Die Cache-Busting-Parameter für `style.css` und `app.js` wurden in `index.html` auf `v=33` bzw. `v=39` hochgestuft. Im Service-Worker (`sw.js`) wurde der Cache-Name auf `mischlabs-pwa-v25` erhöht und die App-Shell-Liste entsprechend angepasst, um ein sofortiges Update der App bei allen Nutzern ohne manuelles Cache-Leeren zu garantieren. diff --git a/app.js b/app.js index a25b2a1..f26dd71 100644 --- a/app.js +++ b/app.js @@ -25,7 +25,7 @@ const searchInput = document.querySelector('#serviceSearch'); const segments = [...document.querySelectorAll('.segment')]; const viewOptions = [...document.querySelectorAll('.view-option')]; const emptyState = document.querySelector('#emptyState'); -const onlineCount = document.querySelector('#onlineCount'); +const favoriteCount = document.querySelector('#favoriteCount'); const serviceCount = document.querySelector('#serviceCount'); const lastChecked = document.querySelector('#lastChecked'); const dashboardSections = document.querySelector('#dashboardSections'); @@ -218,6 +218,10 @@ function createFavoriteCard(favorite) { } function renderFavorites() { + if (favoriteCount) { + favoriteCount.textContent = String(favorites.length); + } + if (!favoritesSections) return; if (!MischLabsAuth.isAuthenticated()) { @@ -466,9 +470,7 @@ async function probeService(card) { async function refreshStatus() { const results = await Promise.allSettled(cards.map(probeService)); - const online = results.filter((result) => result.status === 'fulfilled' && result.value).length; const unknown = results.filter((result) => result.status === 'fulfilled' && result.value === null).length; - onlineCount.textContent = String(online); lastChecked.textContent = `Status geprueft: ${new Date().toLocaleTimeString('de-DE', { hour: '2-digit', minute: '2-digit' @@ -477,7 +479,6 @@ async function refreshStatus() { function scheduleStatusRefresh() { const run = () => refreshStatus().catch(() => { - onlineCount.textContent = '--'; lastChecked.textContent = 'Status aktuell nicht verfuegbar.'; }); @@ -598,7 +599,9 @@ MischLabsAuth.handleCallback() }) .catch(() => { dashboardSections.innerHTML = '

Dashboard-Konfiguration konnte nicht geladen werden.

'; - onlineCount.textContent = '--'; + if (favoriteCount) { + favoriteCount.textContent = '--'; + } }); // ========================================================================== diff --git a/index.html b/index.html index f1dfb50..7133651 100644 --- a/index.html +++ b/index.html @@ -15,7 +15,7 @@ - +
@@ -29,14 +29,14 @@
-
- -- - Online -
9 Dienste
+
+ -- + Favoriten +
@@ -140,6 +140,6 @@
- + diff --git a/sw.js b/sw.js index d4d0300..026d0d2 100644 --- a/sw.js +++ b/sw.js @@ -1,12 +1,12 @@ -const CACHE_NAME = 'mischlabs-pwa-v24'; +const CACHE_NAME = 'mischlabs-pwa-v25'; const APP_SHELL = [ '/', '/index.html', '/favorites.html', '/offline.html', - '/style.css?v=32', + '/style.css?v=33', '/auth.js?v=2', - '/app.js?v=38', + '/app.js?v=39', '/favorites.js?v=1', '/services.json?v=1', '/manifest.webmanifest?v=4',