8d3a620275
Fix: Karte-Scan wenn Diary-Karte vorher geöffnet — SW by-v406
...
diary.js lädt Leaflet ohne MarkerCluster. Wenn der User zuerst die
Diary-Karte öffnet, findet _loadLeaflet() in map.js ein gesetztes
window.L und überspringt das Laden komplett — inklusive MarkerCluster.
L.markerClusterGroup() schlägt dann still fehl (catch { return 0; }),
und alle OSM-Layer zeigen 0 Marker.
Fix: Leaflet-Basis und MarkerCluster separat prüfen:
- window.L fehlt → lade Leaflet-Basis
- window.L.markerClusterGroup fehlt → lade MarkerCluster
2026-04-25 21:46:36 +02:00
988cffcbd4
Karte refresh(): _scheduleOsmLoad() aufrufen — OSM-Marker nach Seitenwechsel ohne Pan, SW by-v335
2026-04-24 11:19:40 +02:00
005552042d
Karte: invalidateSize() in refresh() — leere Karte nach Seitenwechsel, SW by-v334
2026-04-24 11:07:22 +02:00
c503737fb1
Desktop Tab-Grid: Gesundheit (5 Sp.), Admin (4 Sp.), Karte-Legende (8 Sp.), SW by-v332
2026-04-24 10:58:12 +02:00
7ac421fcf9
Routen-Validierung: >15 km/h Ø zählt nicht für Stats/Trophäen, SW by-v331
2026-04-24 09:46:15 +02:00
546551a8db
Zecken-Icon neu: großer Körper, kurze Beine, display:inline fix, SW by-v326
2026-04-24 08:20:25 +02:00
acd93e83e6
Zecken-Icon ohne Dreieck, kein Text, Statusleiste einzeilig (nowrap), SW by-v325
2026-04-24 08:17:48 +02:00
78d0f4289a
Zecken-Icon: SVG Warndreieck mit Zecken-Silhouette (Phosphor-Stil), SW by-v324
2026-04-24 08:14:00 +02:00
544307e443
Wetter: Regenwahrscheinlichkeit im Chip, SW by-v323
2026-04-24 08:08:20 +02:00
d72ee6f89f
Fix Wetter-API-Pfad (/api/api/ → /api/), API.weather.get(), SW by-v322
2026-04-24 08:05:44 +02:00
d32b802649
Wetter in Statusleiste (war hinter Legende versteckt), SW by-v321
2026-04-24 08:03:13 +02:00
0461f936ce
Wetter-Chip auf Karte + Bugfix private Routen zählen für km-Stats
...
- GET /api/weather?lat=&lon= (Open-Meteo, 30-min TTL-Cache)
- Zecken-Warnung regelbasiert: März–Okt + Temp > 7°C
- Karte: Wetterchip oben rechts nach GPS-Fix
- stats.py + achievements.py: is_public-Filter entfernt —
private Routen zählen jetzt für eigene km/Achievements
- SW by-v320, APP_VER 308
2026-04-24 07:59:15 +02:00
65d1cf6c7f
Navigation, Karten-FABs, Nearby-Alerts
...
- Bottom-Nav neu: Karte | Routen | + | Tagebuch | Forum
- + reduziert auf: Giftköder, Gassi-Treffen, Verlorener Hund
- Notification-Badge auf User-Avatar (Header)
- Nearby-Alerts: Nav-Leiste pulsiert rot/orange bei Giftköder/vermisstm Hund in 20km
- SW postMessage bei poison/lost_alert → sofortiger Alert-Check
- Karten-FABs: nur Marker setzen + Standort (Route aufzeichnen + Offline entfernt)
- SW by-v272, APP_VER 262
2026-04-20 19:46:34 +02:00
e56183b642
Feature: Ratings, Lightbox, Forum-Standort, Notifications, Routen-Recording, Chat-Picker
...
- Bewertungssystem (ratings.py): Sterne für Sitter/Walks/Places/Routen
- Admin: Server-Log-Viewer + OSM-Cache-Statistiken
- Chat: "Neue Nachricht"-Button mit Freundesliste-Picker
- Forum: 5 neue Kategorien, Standorteingabe (locationPicker), Absende-Toast, Lightbox
- Freunde: Aktivitäts-Filter (Chips), Freundschaftsanfrage → In-App-Notification
- Sitter: locationPicker statt manuelle Koordinateneingabe + ratingStars
- Tagebuch: Bilder-Lightbox im Detail-View, iOS-Modal-Header-Fix (90svh)
- Routen: Start/Stopp-Button wechselt Zustand, nutzt Page_map.isRecording()
- Benachrichtigungen: Delete-Button sichtbar, typ-basierte Navigation, Toast-Feedback
- OSM: globales Semaphore + 429-Retry-Logic; Scheduler: München-Umland, täglich
- SW by-v225, APP_VER 202
2026-04-19 09:40:35 +02:00
a7753c9cf5
Sprint 16: Chat-Fotos/Online/Read-Receipts, Gesundheit-Dokumente löschen, Bugfixes
...
- Chat: Foto-Versand (POST /api/chat/conversations/{id}/upload, media_url/media_type)
- Chat: Online-Indikator (last_seen Heartbeat, grüner Dot, 3min-Fenster)
- Chat: Read Receipts (read_at, Einzel-/Doppelhaken-Icons)
- Gesundheit: Dokument löschen (DELETE .../dokument, Datei + DB-Eintrag)
- Bug: events.user_id NOT NULL → nullable (Table-Recreation-Migration)
- Bug: scheduler INSERT user_id 0 → NULL
- Bug: Wikidata Rate-Limit: sleep 0.3s→1.0s, retries 2→4, exponentielles Backoff
- SW: by-v146, APP_VER 119
2026-04-17 22:38:33 +02:00
6fcf841594
Sprint 14: Map-Fixes, City-Prewarm, Dog-Animation, Scan-Flash
...
Karte:
- Frankfurt-Fallback (Zoom 10→14 flyTo) mit _frankfurtTimer-Cancel
wenn echter Standort eintrifft
- OSM-Tile-Fetch parallelisiert (asyncio.Semaphore(3))
- Bounds-Fix: invalidateSize() + pad(0.15) vor getBounds()
- map-pin-slash Icon für gesperrten Standort
- Scan-Done-Flash: Statusbar-Pill grün bei 100%
- Schnüffelhund: outer div (by-wander X) + inner SVG (by-sniff Y)
für natürlichere zweiachsige Bewegung
Backend:
- City-Prewarm-Job: ~70 deutsche Großstädte beim Start (+90s) und
wöchentlich (So 01:00), Fortschritts-Mails alle 5h an ADMIN_EMAIL
- ADMIN_EMAIL Env-Var in .env.example dokumentiert
Bugfixes:
- Profil-Edit: /api/profile → /profile (doppelter Prefix)
- Friends: Mobile-Portrait-Layout (flex-wrap, overflow-x:hidden)
- Trainingspläne: Pills text-wrap (flex + white-space:normal)
2026-04-17 14:06:10 +02:00
cd3f118113
Feature: Scan-Fortschritt als SVG-Ring um das Zoom-Statusfeld
2026-04-17 10:44:52 +02:00
49d129e00c
Feature: Scan-Fortschrittsbalken während OSM-Daten geladen werden
2026-04-17 10:39:58 +02:00
abc7e6628a
Fix: FAB-Buttons orange, Kotbeutel-Tüten-Icon + grün, Mülleimer grau
2026-04-17 10:26:59 +02:00
097295c628
Sprint 11: Freunde & Chat + Phosphor-Icon-Vollmigration
...
- Freundschaften (pending/accepted), Nutzersuche, Anfragen per Push
- Direktnachrichten mit Polling, iMessage-Stil, Deep-Links aus Push
- Alle Seiten (map, places, diary, health, dog-profile, sitting, knigge,
forum, wiki, walks) vollständig auf Phosphor-Icons migriert
- Wikidata-Rassen-Scraper (~833 neue Rassen, lokal gespiegelte Fotos)
- TheDogAPI lokal gespiegelt (169 Rassen + Fotos)
- Quiz-Result-Cards horizontal (korrekte Bildproportionen)
- SW by-v89
2026-04-15 21:33:53 +02:00
ebe4ce20cf
Sprint 10: OSM-POI-Cache, Karten-Clustering, Routen-Redesign
...
Karte (map.js):
- OSM Overpass API: Restaurants, Tierärzte, Parkplätze, Bänke, Wasserstellen
- Leaflet.markercluster für alle OSM-Layer
- Standort-Dot mit GPS-Genauigkeitskreis, Wake-Lock bei Aufzeichnung
- Community-Pins setzen/löschen, Meldungen, Crosshair-Placement
- Layer-Sichtbarkeit in localStorage (by_map_visible_v1)
Routen (routes.js + routen.py):
- Komoot-Stil: SVG-Track-Preview, Foto-Upload, Nearby-POIs im Detail-Modal
- Neue Felder: is_public, hunde_tauglichkeit, foto_urls
- Rate-Endpoint (POST /api/routes/{id}/rate)
- Foto-Upload (POST /api/routes/{id}/photo)
- Fix: json_extract $[-1] → $[#-1] (SQLite-kompatibler Pfad für letztes Element)
Backend (osm.py, database.py, scheduler.py):
- /api/osm/pois: OSM-Overpass-Cache mit Tile-Logik (14 Tage TTL)
- /api/osm/user-poi: Community-Marker CRUD
- /api/osm/report: Marker als ungültig melden
- Neue Tabellen: osm_pois, osm_tiles, user_map_pois, osm_reports
- Giftköder-Archiv-Job (täglich 03:00, soft-delete nach Ablauf)
- Giftköder-Archiv-Job als APScheduler-CronJob
UI: Orte-Menüpunkt entfernt (in Karte integriert), APP_VER auf 62
2026-04-15 16:30:10 +02:00
1c8ed88dac
Fix: Karte position:fixed + Mobile-Sidebar CSS-Kaskade
...
- .map-full-layout: position:fixed statt absolute;inset:0 mit
expliziten Offsets (header/nav/sidebar) — unabhängig von
height-Kette, überdeckt Sidebar nicht mehr
- layout.css: Mobile Drawer-CSS nach Base-#sidebar-Regel verschoben
(vorher: display:none hat gewonnen weil später im File)
- map.js: zweites invalidateSize() nach 600ms
- SW by-v28 → by-v29
2026-04-14 17:09:00 +02:00
2ff439a4e3
Fix: Karte — position:absolute;inset:0 statt height:100% (kein parent-height Problem)
2026-04-14 16:51:47 +02:00
d4c3f159d5
Fix: Karte-Höhe via JS, events Leaflet-Pfad, Hamburger-Menü mobile Drawer
2026-04-14 16:47:21 +02:00
b9df636535
Sprint 6: Karte / Orte / Routen mit GPS-Aufzeichnung
...
- backend/routes/places.py: CRUD für hundefreundliche Orte (6 Typen)
- backend/routes/routen.py: CRUD für Gassi-Routen mit GPS-Track (JSON)
- main.py: beide Router eingehängt (/api/places, /api/routes)
- api.js: places + routes erweitert (list, update, delete)
- pages/places.js: Karte + Liste, Typ-Filter, Ort anlegen/bearbeiten
- pages/routes.js: Routen entdecken + GPS-Aufzeichnung mit Stoppuhr
- pages/map.js: zentrale Übersichtskarte (Orte + Giftköder, Layer-Toggle)
- components.css: Styles für alle drei neuen Seiten
- sw.js: by-v19 → by-v20
2026-04-14 06:03:37 +02:00