PWA-Installierbarkeit: Seite kann jetzt als App installiert werden (Desktop-Icon)

Recherche (developer.chrome.com, Lighthouse-Doku, Stand 2026): Chrome/Edge
zeigen "App installieren" bei gültigem Web App Manifest (name, icons inkl.
512x512, start_url, display:standalone) UND einem registrierten Service
Worker mit fetch()-Handler — reines Manifest reicht für den zuverlässigen
Install-Prompt nicht mehr aus.

- Neues manifest.json (Name, Theme-/Hintergrundfarbe passend zum dunklen
  Design, Icons 192x192 + 512x512 aus dem bestehenden Husky-Favicon erzeugt)
- Neuer sw.js: minimaler Service Worker, primär für die Installierbarkeit,
  cached nebenbei die wichtigsten Shell-Dateien (Network-first mit
  Cache-Fallback, kein Offline-Vollausbau)
- main.js: registriert den Service Worker nur bei http(s) (nie bei
  file://, damit die Seite laut Projektregel weiterhin per Doppelklick
  ohne Server funktioniert — stiller Fallback statt Konsolenfehler)
- Alle 28 HTML-Seiten: <link rel="manifest"> + <meta name="theme-color">
  im <head> ergänzt (identischer Ankerpunkt nach dem Favicon-Link geprüft
  und automatisiert eingefügt)

Installation für Dogi: Seite in Chrome/Edge öffnen → Symbol rechts in der
Adressleiste ("App installieren") oder Menü ⋮ → "DogFather Universe
installieren" → landet als eigenes Fenster + Icon auf Desktop/Startmenü.
This commit is contained in:
2026-08-03 01:50:56 +02:00
parent c4be588f05
commit c940538b1d
33 changed files with 172 additions and 0 deletions
+17
View File
@@ -869,4 +869,21 @@
const sprache = getSprache();
return feld[sprache] || feld.de || "";
};
/* ===================================================================
PWA: Service-Worker-Registrierung
Voraussetzung dafür, dass Chrome/Edge auf dem Desktop "App
installieren" anbietet (Icon landet dann auf dem Desktop/Startmenü).
Bewusst defensiv: registriert NUR über http(s), niemals bei file://
(dort schlägt die Registrierung ohnehin fehl, die Seite muss aber
laut Projektregel auch per Doppelklick funktionieren — deshalb kein
ungefangener Fehler in der Konsole). ===================================================================== */
if ("serviceWorker" in navigator && /^https?:$/.test(location.protocol)) {
window.addEventListener("load", () => {
navigator.serviceWorker.register("/sw.js").catch(() => {
/* Stiller Fallback — Seite funktioniert auch ohne Service Worker,
nur ohne Installierbarkeit/Offline-Cache. */
});
});
}
})();