Files
Florian Zumpe 74090723c4
Sonarqube Scanner / Prepare environment (push) Successful in 13s
Sonarqube Scanner / Build and test (push) Successful in 33s
Sonarqube Scanner / SonarQube analysis (push) Successful in 1m38s
Sonarqube Scanner / Deploy to Server (push) Successful in 7s
sorted markdown and added favicon
2026-10-04 09:06:48 +02:00

90 lines
5.1 KiB
Markdown

# App-Dateien, Strecken und Speicheranzeige
## App offline speichern
Der Startschalter **App offline speichern** lädt ausschließlich die App-Oberfläche:
HTML, CSS, JavaScript, lokale Bibliotheken, Symbole und Wichtel-Grafiken. Der
Server liefert dafür `/api/offline-manifest`. Keine Routenliste, Streckendetails,
GPX-Dateien oder Streckenmedien werden durch diesen Schalter gespeichert.
Nach einem vollständigen Download sind die App-Dateien offline verfügbar.
**App-Dateien aktualisieren** ersetzt sie durch einen neuen vollständigen Stand.
Ausschalten entfernt nur diesen App-Stand; separat gespeicherte Strecken,
lokale Entwürfe und Fortschritt bleiben erhalten. Der Fragezeichen-Button
neben dem Schalter erklärt die Trennung.
Beim ersten Start dieser Fassung wird ein alter automatisch erzeugter
Gesamtstand aus Version 1 entfernt, weil dieser auch alle Strecken enthielt.
Der neue App-Download wird danach erst durch erneutes Einschalten angefordert.
Bei bereits aktivem alten Cache zuerst dessen Aktualisierungsbutton verwenden,
dann neu laden, damit die neue Oberfläche aus dem Cache geladen wird.
## Einzelne Strecken
In der Ansicht einer veröffentlichten Strecke gibt es drei Aktionen:
- **Strecke offline speichern** lädt genau diese Strecke samt Details, Wegpunkten,
GPX-Datei, Bildern und Audio für die App. Danach heißt der Button
**Offline-Strecke aktualisieren**. Ein gescheiterter Download aktiviert keinen
Teilstand; ein vorhandener vollständiger Stand bleibt erhalten.
- **Offline-Strecke entfernen** entfernt nur die Browser-Kopien dieser Strecke.
- **GPX herunterladen** lädt eine normale GPX-Datei in den vom Browser verwendeten
Download-Ordner. Diese Datei enthält den Track und gegebenenfalls GPX-Wegpunkte,
aber keine separat gespeicherten Bilder oder Audiodateien. Downloads außerhalb
des Browser-Speichers lassen sich nicht durch die App löschen oder messen.
Für einen vollständigen Offline-Neustart zuerst die App-Dateien und dann die
gewünschten Strecken speichern. Offline zeigt die Streckenliste nur ausdrücklich
gespeicherte veröffentlichte Strecken sowie die bereits vorhandenen lokalen
Entwürfe. Ohne gespeicherte Strecken bleibt die Liste der Serverstrecken leer.
Die normale Online-Liste wird nicht dauerhaft übernommen. GPS-Berechtigungen
werden weiterhin benötigt. Externe Karten gehören nicht zum Download.
Lokale Entwürfe bleiben im bestehenden GPX-/JSON-Speicher mit ihren lokalen
Medien. Server-Schreiboperationen werden nicht offline ausgeführt.
## Speicheranzeige
Startfenster und Streckenverwaltung zeigen zwei Balken:
1. **Website-Speicher**: `navigator.storage.estimate()` liefert eine ungefähre
Belegung und Browser-Quote, einschließlich OPFS, CacheStorage und IndexedDB.
Die Anzeige nennt belegte und noch verfügbare MiB und warnt ab 90 Prozent.
Die Werte sind Browser-Schätzungen, keine garantierte freie Festplattenkapazität.
2. **Local Storage**: Die App zählt Schlüssel und Werte als UTF-16-Zeichen und
zeigt die ungefähre Größe an. Weil dessen separate Grenze nicht abgefragt
werden kann, bezieht sich der Balken ausdrücklich auf einen Richtwert von
5 MiB. Die tatsächliche Grenze und deren Berechnung hängen vom Browser ab.
Freier Website-Speicher bedeutet deshalb nicht, dass große Bilder noch in
einen lokalen Entwurf passen.
Die Anzeige aktualisiert sich beim Start, nach Strecken-/Medienänderungen,
nach Offline-Downloads und beim Zurückkehren zur App. Ein manueller
Aktualisierungsbutton ist vorhanden. Ein `QuotaExceededError` wird unabhängig
von den angezeigten Schätzungen als „Speicher voll“ gemeldet. Nicht verfügbare
Browser-Schätzungen werden als unbekannt angezeigt; es gibt keine schreibenden
Versuche, den Speicher bis zur Grenze zu füllen.
Die Daten liegen bevorzugt im geschützten Browser-Dateisystem (OPFS), ersatzweise
in CacheStorage. Die App fragt dauerhaften Speicher an; eine Ablehnung blockiert
Downloads nicht. Browserbereinigung, Platzmangel oder Löschen der Website-Daten
können die Kopien entfernen. HTTPS oder localhost und ein Service Worker werden
für die Offline-Funktion benötigt. Die bestehende 24-Stunden-Bereinigung des
optionalen Fortschrittsspeichers betrifft diese Kopien nicht.
## Prüfung auf dem Gerät
1. Archiv entpacken, Server neu starten und die neue Oberfläche laden.
2. App-Schalter aktivieren und die Download-Bestätigung abwarten.
3. Eine Strecke öffnen und explizit offline speichern; GPX herunterladen testen.
4. Offline schalten und die Seite neu laden: Gespeicherte Strecke, Bilder, Audio
und Spulen prüfen. Nicht gespeicherte Strecken sollen nicht erscheinen.
5. App-Schalter ausschalten: Gespeicherte Strecke und lokale Entwürfe behalten.
6. Eine gespeicherte Strecke entfernen: Andere Offline-Strecken behalten.
7. Beim Ergänzen lokaler Bilder beide Speicheranzeigen und Fehlertexte prüfen.
Automatisierte Tests prüfen Manifest-Ausschlüsse, getrennte Speicherstände,
OPFS/CacheStorage, Fehler und Abbruch, Audio-Byte-Ranges, Offline-API-Fallback,
Upgrade eines alten Gesamtstands sowie beide Speicheranzeigen. Ein echter
Browser-/Gerätetest wurde in der Ausführungsumgebung nicht durchgeführt.