diff --git a/VERSION b/VERSION
index 7ff9fa9..1fdcf1c 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1227
\ No newline at end of file
+1228
\ No newline at end of file
diff --git a/backend/static/index.html b/backend/static/index.html
index bf78b9c..ab2e972 100644
--- a/backend/static/index.html
+++ b/backend/static/index.html
@@ -86,14 +86,14 @@
Ban Yaro
-
+
-
-
-
-
-
+
+
+
+
+
@@ -612,11 +612,11 @@
-
-
-
-
-
+
+
+
+
+
@@ -626,7 +626,7 @@
-
+
diff --git a/backend/static/js/app.js b/backend/static/js/app.js
index e792a8b..468016a 100644
--- a/backend/static/js/app.js
+++ b/backend/static/js/app.js
@@ -3,7 +3,7 @@
Router, State-Management, Navigation, Initialisierung.
============================================================ */
-const APP_VER = '1227'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen
+const APP_VER = '1228'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen
const APP_VERSION = '1.6.0'; // ← semantische Version, wird bei make release gesetzt
window.APP_VER = APP_VER; // global verfügbar für andere Module (z.B. offline-indicator)
window.APP_VERSION = APP_VERSION;
diff --git a/backend/static/js/boot.js b/backend/static/js/boot.js
index c564225..09e1624 100644
--- a/backend/static/js/boot.js
+++ b/backend/static/js/boot.js
@@ -34,14 +34,15 @@
// Zentrale Feature-Flag-Helper (boot.js lädt vor allen Modulen)
// ----------------------------------------------------------
window.BY = window.BY || {};
-// Offline-Vektorkacheln (byt://): Staging-Default AN seit 2026-06-06, Production AUS
-// bis Freigabe; localStorage by_offline_tiles '1'/'0' bzw. ?tilesoffline übersteuert.
+// Offline-Vektorkacheln (byt://): Default AN auf allen deployten Hosts (Prod + Staging),
+// localhost bleibt AUS; localStorage by_offline_tiles '1'/'0' bzw. ?tilesoffline übersteuert.
+// Prod-Freigabe René 2026-06-07 (analog by_map_gl, Gerätetests Runde 1+2 bestanden).
window.BY.offlineTiles = function () {
try {
var flag = localStorage.getItem('by_offline_tiles');
if (flag === '1') return true;
if (flag === '0') return false;
- return location.hostname === 'staging.banyaro.app';
+ return /(^|\.)banyaro\.(app|de)$/.test(location.hostname);
} catch (e) { return false; }
};
diff --git a/backend/static/landing.html b/backend/static/landing.html
index 570319a..c662fdf 100644
--- a/backend/static/landing.html
+++ b/backend/static/landing.html
@@ -4,7 +4,7 @@
-
+
Ban Yaro — Die Hunde-App für Deutschland, Österreich & Schweiz
diff --git a/backend/static/sw.js b/backend/static/sw.js
index 9b5f8dc..c0390b0 100644
--- a/backend/static/sw.js
+++ b/backend/static/sw.js
@@ -4,7 +4,7 @@
============================================================ */
// ← EINZIGE Stelle für die Version — STATIC_ASSETS und CACHE_VERSION leiten sich ab
-const VER = '1227';
+const VER = '1228';
const CACHE_VERSION = `by-v${VER}`;
const CACHE_STATIC = `${CACHE_VERSION}-static`;
const CACHE_TILES = 'ban-yaro-tiles-v1'; // bleibt über SW-Updates erhalten
diff --git a/docs/OFFLINE_MAPS_PLAN.md b/docs/OFFLINE_MAPS_PLAN.md
index 32b529e..c440341 100644
--- a/docs/OFFLINE_MAPS_PLAN.md
+++ b/docs/OFFLINE_MAPS_PLAN.md
@@ -1,6 +1,7 @@
# Offline-Karten (GL/Vektor) — Feature-Plan
-**Status:** Runde 2 (adaptives Modell) umgesetzt — **Staging-Default AN**; Production AUS bis Freigabe.
+**Status:** LIVE auf Production + Staging (Default AN auf banyaro.app/.de, Prod-Freigabe René 2026-06-07
+nach bestandenen Gerätetests Runde 1+2). localhost = Leaflet/AUS.
**Stand:** 2026-06-07. Autor: René + Claude (Design).
## Umsetzungsstand (2026-06-06, v1222 auf Staging)
@@ -55,6 +56,17 @@
- Flag-Logik zentralisiert: `boot.js window.BY.offlineTiles()` (vorher 3× dupliziert).
- Meta neu: `regions`-Liste (Cap 30) + `deadzones`; `region` (letztes Gebiet) bleibt für Back-Compat.
+**✅ Gerätetest-Befunde Runde 2 behoben (v1227):**
+- **Giftköder + vermisste Hunde offline sichtbar** (René: „müssen unbedingt sichtbar sein"):
+ Region-Download speichert zusätzlich `/api/poison` + `/api/lost` der Gegend (`p/_poison`,
+ `p/_lost`; Reader `MapOffline.alerts(kind, bbox)`). map.js `_loadAll` fällt **pro Quelle**
+ (nicht alles-oder-nichts) auf localStorage zurück — vorher verhinderte das SW-gecachte
+ `/api/places` den Fallback, während die Bbox-URL `/api/poison?lat=…` scheiterte.
+ lost.js merged den Region-Snapshot in beiden Offline-Pfaden.
+- **Korridor „unsichtbar"**: Logik war korrekt (Node-Stub-Test `downloadCorridor`/`coverage`
+ bestanden) — er lag im bereits gespeicherten Gebiet. Nach dem Speichern werden die
+ gespeicherten Bereiche jetzt blau auf der Routen-Detailkarte eingeblendet (`_detailMap._gl`).
+
**🔲 Offen (Runde 3):**
- **Gerätetest Runde 2** (Budget-Download, Funkloch-Lernen auf echter Gassi-Runde, Korridor,
Coverage-Layer) → dann Prod-Freigabe-Entscheidung (BY.offlineTiles-Default erweitern analog `by_map_gl`).