sorted markdown and added favicon
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user