Offline-Karten Runde 3: Puls-Icon, rollendes Vorausladen, Ausschnitt-Download, Speicher-Cap

- Offline-Indikator: pulsierendes 32px-Icon oben rechts (unter Kopfzeilen-Hoehe)
  statt Leiste ueber die volle Breite — verdeckte '<- Zurueck' in der
  Routennavigation (Geraetetest Rene)
- Rollendes Vorausladen: setGps laedt alle ~400m still fehlende z14+-2-Kacheln
  um die Position — deckt den Weg schon beim ERSTEN Funkloch-Besuch ab
- Bereichsauswahl light: 'Sichtbaren Ausschnitt speichern' im Offline-Modal
  (downloadBbox, Cap 40 MB, Zu-gross-Schutz)
- Speicher-Cap 250 MB als Soft-Guard fuer automatische Pfade + totalBytes-Zaehler
  + navigator.storage.persist() best-effort; echte LRU vertagt (Refcounting noetig)
- Auto-OSM-Raster-Prefetch entfernt (manueller Leaflet-Pfad bleibt)
- Logik-Tests (Node-Stubs) fuer Bbox/Cap/Throttle/persist bestanden
Bump v1229
This commit is contained in:
rene 2026-06-06 12:34:48 +02:00
parent 3426d2b7c8
commit 763108fa7c
10 changed files with 214 additions and 40 deletions

View file

@ -7307,12 +7307,27 @@ svg.empty-state-icon {
pointer-events: none;
letter-spacing: 0.01em;
}
/* Eingeklappt (5s nach Offline-Gang, boot.js): schmale Icon-Leiste statt 2-Zeilen-Banner
das volle Banner verdeckte die Karten-Steuerung oben (Gerätetest iOS 2026-06-06). */
/* Eingeklappt (5s nach Offline-Gang, boot.js): kleines pulsierendes Icon oben rechts
die Leiste über die volle Breite verdeckte Nav-Elemente (z.B. Zurück" in der
Routennavigation, Gerätetest 2026-06-07). Sitzt UNTERHALB der Kopfzeilen-Höhe,
damit es Buttons (Zentrieren, Legende) nie überlagert. */
#offline-banner.collapsed {
padding: calc(env(safe-area-inset-top, 0px) + 2px) 16px 2px;
top: calc(env(safe-area-inset-top, 0px) + 54px);
left: auto;
right: 8px;
width: 32px;
height: 32px;
padding: 0;
border-radius: 50%;
box-shadow: 0 2px 10px rgba(0,0,0,.35);
animation: by-offline-pulse 2s ease-in-out infinite;
}
#offline-banner.collapsed #offline-banner-text { display: none; }
#offline-banner.collapsed #offline-queue-badge { display: none !important; }
@keyframes by-offline-pulse {
0%, 100% { opacity: 0.55; transform: scale(1); }
50% { opacity: 1; transform: scale(1.1); }
}
#offline-banner.collapsed #offline-banner-text { display: none; }
/* ------------------------------------------------------------
STREAK-WIDGET (Welcome-Seite)