Commit graph

487 commits

Author SHA1 Message Date
40de0f38aa Feature: Tierarzt-Bewertungen — Sterne-Rating pro Praxis mit Detail-Modal (SW by-v700) 2026-05-04 21:02:49 +02:00
c5030024b0 Feature: Hunde-Buch — druckbare HTML-Tagebuchansicht als PDF (SW by-v700)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-04 21:01:54 +02:00
20a4936397 Feature: Ban Yaro Wrapped + Jahrestags- und Monatsrückblick (SW by-v699)
- GET /api/dogs/{id}/wrapped?year= aggregiert km, Gassi-Tage, Fotos,
  Lieblingsmonat/-aktivität, Training, Gesundheit, Wetter-Stats aus SQLite
- Frontend: Wrapped-Fullscreen-Modal in dog-profile.js — 5 Cards mit
  Swipe/Klick-Navigation, Dots, ESC-Taste, Copy-to-Clipboard auf Share-Card
- Scheduler: _job_anniversary_reminders (täglich 09:00) sendet Push wenn
  heute ein Tagebucheintrag von vor 1+ Jahren existiert
- Scheduler: _job_monthly_recap (1. des Monats 10:00) sendet Vormonat-
  Zusammenfassung (km, Einträge, Training) per Push an alle User
- Beide Jobs im Status-Report-Log und Scheduler-Start-Log vermerkt
- SW by-v699, APP_VER 699
2026-05-04 20:54:12 +02:00
0fdc32eaf4 Feature: Hunde-Persönlichkeitstest + Kilometer-Lebenswerk-Badge (SW by-v698)
- personality.js: 10-Fragen-Quiz mit 4 Typen (Abenteurer/Entdecker/Kuschler/Denker), Ergebnis-Speicherung in localStorage, Share-Funktion
- achievements.py: neue Badge-Kategorie km_lebenswerk (Bronze 100 km bis Platin 5000 km)
- settings.js: Lifetime-km-Balken mit Meilenstein-Markierungen bei 100/500/1000/5000 km
- app.js + index.html: personality-Seite registriert
2026-05-04 20:52:51 +02:00
a4e97348ed Feature: Schnell-Gassi-Log + Hunde-Visitenkarte mit QR-Code (SW by-v698)
- Worlds-FAB: neuer 'Schnell-Gassi' Button im Gassi-Chip — öffnet schlankes
  Bottom-Sheet mit Dauer-Toggle (15/30/45/60 min), auto-Wetter aus Cache,
  postet direkt als Tagebucheintrag typ='gassi' ohne GPS-Tracking
- dog-profile.js: 'Visitenkarte teilen' Button öffnet Modal mit gestalteter
  Karte (Hundefoto, Name, Rasse/Alter, Wohnort) + QR-Code via qrserver.com,
  Link-kopieren und native Web-Share-API
2026-05-04 20:52:11 +02:00
6e4bf25581 Feature: Hundeernährungs-Feature — Kalorien-Rechner, Futter-Guide, Giftliste, KI-Berater (SW by-v698) 2026-05-04 20:51:45 +02:00
b1d9fb4f54 Feature: Wetter-Verbesserung im Tagebuch — Auto-Wetter, Chip-Fix, Detail-Fix (SW by-v695)
- diary.js: Weather-Chip in der Liste nutzt jetzt temp_c (korrekter Feldname)
- diary.js: Detail-View zeigt "emoji temp · X km/h Wind · Y% Regen" (precip_prob statt Luftfeuchtigkeit)
- diary.js: Bei neuem Eintrag ohne GPS → Wetter wird via GPS-API vorgeholt und als weather_json mitgesendet
- diary.py: DiaryCreate-Modell um weather_json-Feld erweitert; client-geliefertes Wetter wird gespeichert wenn kein GPS-basiertes Wetter verfügbar
- SW by-v695, APP_VER 695
2026-05-04 20:30:06 +02:00
6152d6bf0e Feature: Meine Wetterrekorde Sektion auf Wetter-Seite (SW by-v694)
- Backend: GET /api/weather/records — liest diary-Einträge mit weather_json
  und berechnet Kältester/Heißester Gassi, Stürmischster Tag, Regentage
- Frontend: #wttr-records 2×2 Grid-Karten unterhalb Hunde-Wetter
  (nur für eingeloggte User mit ≥3 Tagebucheinträgen mit Wetterdaten)
- SW-Version auf by-v694 erhöht, APP_VER auf 694
2026-05-04 20:28:06 +02:00
d081029618 Feature: Wetter-Tapferkeits-, Jahreszeiten- und Schnee-Badges (SW by-v693)
Drei neue Badge-Kategorien in achievements.py:
- wetter_tapfer: Diary-Einträge bei Regen/Kälte/Wind (precip>60, temp<2, wind>50)
- jahreszeiten: Anzahl Jahreszeiten mit mind. 5 Diary-Einträgen (max 4)
- schnee_held: Diary-Einträge bei Schnee (weathercode 71-77)

Beide Funktionen check_and_award und my_achievements erweitert.
2026-05-04 20:26:03 +02:00
6bf088df56 Feature: Goldene Gassi-Stunde — täglicher Push mit bestem Wetterfenster (SW by-v693)
- Scheduler-Job täglich 07:00: berechnet bestes 2h-Fenster via Open-Meteo
- Score-System (max. 10 Pkt): Temperatur, Niederschlag, Wind, Tageszeit
- User-Fallback auf letzten bekannten Standort (push_subscriptions.last_lat/lon) oder München
- Nur Push wenn score >= 3 (kein sinnloser Push bei schlechtem Wetter)
- DB-Migration: users.gassi_stunde_push (Boolean, default 0)
- settings.js: Toggle "Goldene Gassi-Stunde täglich" in App-Einstellungen
- PATCH /api/profile + auth.py /me: gassi_stunde_push Feld
2026-05-04 20:22:02 +02:00
af1508c0de Feature: Fell-Typ Einstellung am Hundeprofil — personalisierte Wetter-Hinweise (SW by-v693)
- DB-Migration: dogs.fell_typ (kurz|mittel|lang|drahtaar|doppel|nackt)
- Hund-Profil Formular: Dropdown "Felltyp" mit 6 Optionen, wird via PATCH /api/dogs/{id} gespeichert
- Wetter: _dogWeatherLabel(d, felltyp) mit fell-spezifischen Hitze-/Kälteschwellen
- Wetter: Fell-spezifische Hinweise (doppel + Hitze, nackt + Kälte, kurz + Frost)
2026-05-04 20:21:02 +02:00
471633867c Feature: Wetter — Gassi-Score, Schnüffel-Index, Hunde-Alter-Hinweis (SW by-v692)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-04 20:18:38 +02:00
759979ffce Feature: Stündliche Niederschlagswahrscheinlichkeit auf Wetter-Seite (SW by-v690)
- Backend: Open-Meteo Forecast-Request um hourly precipitation_probability,
  precipitation und weathercode erweitert; stündliche Daten werden pro Tag
  gruppiert und im API-Response unter "hourly" je Tag ausgeliefert
- Frontend: Neue _renderRainTimeline()-Funktion rendert horizontale
  Balken-Zeitskala für alle 24 Stunden des gewählten Tages; bei "Heute"
  wird automatisch zur aktuellen Stunde gescrollt und "jetzt" hervorgehoben;
  Farb-Gradient von hellgrau (<10%) bis dunkelblau (≥75%)
- SW/APP_VER/CSS auf 690 gebumpt
2026-05-04 20:06:30 +02:00
84e6bfdd82 Feature: Wiki Photo-Gallery mit Thumbnails + Lightbox, alle Fotos einer Rasse anklickbar (SW by-v664) 2026-05-03 21:23:41 +02:00
1d1171e5f2 Fix: Hilfe-? inline neben 'Dein Plan für heute' statt absolut oben rechts (SW by-v663) 2026-05-03 21:13:10 +02:00
0413483692 Feature: Moderation-Kacheln klickbar — direkter Sprung in Tab (SW by-v662) 2026-05-03 21:07:30 +02:00
4cd2a33ca2 Fix: Wiki-Foto-Moderation — 404 = bereits bearbeitet, Liste statt Fehlermeldung (SW by-v661) 2026-05-03 21:02:13 +02:00
e2cbbde7f2 Fix: Wiki-Foto-Freigabe 500 — foto_url fehlte im SELECT auf wiki_rassen 2026-05-03 20:56:24 +02:00
7b8ee7e2b1 Fix: Welten-Config — DB-Load bei jedem Login-Wechsel, einmalige localStorage→DB-Migration (SW by-v660) 2026-05-03 20:54:11 +02:00
71a13d695e Fix: Welten-Config Endpoint-Pfad doppeltes /profile/ entfernt — /api/profile/world-config korrekt (SW by-v659) 2026-05-03 20:47:31 +02:00
eca8d1455d Fix: Nach Login direkt in HUND-Welt landen statt Welcome-Seite (SW by-v658) 2026-05-03 20:41:20 +02:00
3344de27bb Feature: Welten-Wechsel per Mausrad auf Desktop (SW by-v657) 2026-05-03 20:36:19 +02:00
5b73443d0a Fix: iOS-Warnung bei Routenstart — Display wach lassen, GPS stoppt sonst (SW by-v656) 2026-05-03 20:34:00 +02:00
ccb92254b6 Fix: Routenaufzeichnung — Stopp-Button braucht Long-Press (1.8s), DIM-Timer 10s → 5s (SW by-v655)
Verhindert versehentliches Stoppen durch Hosentaschen-Druck: Stopp-Button reagiert
nur auf 1.8s Gedrückt-Halten mit Fill-Animation, Einzeltap tut nichts. DIM-Schutz-
Overlay greift jetzt nach 5s statt 10s.
2026-05-03 20:24:14 +02:00
9103c7950f Feature: Generische Seiten-Hilfe (UI.pageInfo), POI Multi-Select, Tagessprüche-DB (SW by-v654)
- UI.pageInfo(): generische Hilfe-Funktion — erstes Öffnen zeigt Info-Banner, danach ? Button oben rechts; CSS-Klassen pinfo-*
- Übungen-Seite nutzt UI.pageInfo() als erstes Beispiel
- Karte POI: Mehrfachauswahl (außer Giftköder), Kombi-Typen entfernt, type als comma-separated im Backend
- daily_quotes Tabelle in DB (346 Einträge via import_quotes.py importiert)
- GET /widget/quote — deterministischer Tagesspruch (wechselt täglich)
2026-05-03 20:10:01 +02:00
1fdba57365 Feature: UX-Fixes — Zahnrad weg, POI-Kombi-Typen, exp-fab-Position, Welten-Config in DB (SW by-v653)
- worlds-settings Zahnrad komplett entfernt (war auf Mobile sichtbar, auf Desktop schon hidden)
- exp-fab: bottom jetzt calc(--nav-bottom-height + --safe-bottom + --space-2) — kein Overlap mit worlds-back auf iPhone
- Karte POI: neue Typen bank, bank_kotbeutel, bank_kotbeutel_abfall, kotbeutel_abfall (Backend + Frontend)
- Welten-Chip-Config: GET/PUT /profile/world-config, Spalte users.world_config TEXT (Migration), Sync bei Init + Speichern
2026-05-03 19:50:04 +02:00
f0b5e6e89b Fix: Desktop-Welten-Labels — größer (13px), heller, Text-Schatten, Pill-Hintergrund aktiv, SW by-v652 2026-05-03 11:12:54 +02:00
15e2446ea7 Release v1.3.0 2026-05-03 11:09:43 +02:00
747c353444 Chore: Sprint32-36 Zwischenstand — alle Änderungen aus dieser Session committen 2026-05-03 11:09:39 +02:00
f4052fbb7d Feature: Welten-Labels klickbar (JETZT|HUND|WELT), aktives Label hervorgehoben, Desktop-Tab-Optik, SW by-v651 2026-05-03 11:09:14 +02:00
a84df71383 Feature: JETZT-Welt — Streak+Gassirunde+Übung als kompakte 3er-Chip-Zeile, SW by-v650 2026-05-03 11:07:27 +02:00
87d3006aa7 Fix: Swipe-Begrenzung — kein Überziehen über erste/letzte Welt, SW by-v649 2026-05-03 11:04:24 +02:00
bb8ceaf114 Feature: JETZT-Welt — Gassirunde+Übungs-Vorschlag-Balken, Desktop-Zahnrad entfernt, SW by-v648 2026-05-03 11:02:57 +02:00
1d50bf1430 Fix: Desktop-Sidebar entfernt — kein padding-left, Map/Route volle Breite, SW by-v647 2026-05-03 10:57:39 +02:00
cd5aa73df3 Fix: Welten-Overlay Gradient statt flachem Schwarz — Mitte leuchtet, SW by-v646 2026-05-03 10:55:45 +02:00
0488cde13f Fix: Zurück-Button primär-orange, Map/Route vollbild (kein weißer Balken), Map-FABs 54px und über Back-Button, SW by-v645 2026-05-03 10:52:48 +02:00
150776eab4 Feature: Welten-Navigation — Bottom-Nav+Header entfernt, Zurück-FAB (rund, dunkel), SW by-v644 2026-05-03 10:46:12 +02:00
860de6d2a7 Fix: Welten Footer-Links dezent hervorgehoben — heller, Underline, Text-Shadow, SW by-v643 2026-05-03 10:33:49 +02:00
4da2088074 Feature: Welten — Profil-Chip entfernt, Footer-Links (Impressum/Die100/Datenschutz), SW by-v642 2026-05-03 10:31:21 +02:00
9410a8bcd4 Fix: Welten Info-Cards — avatar_url statt foto_url, Hund-Name CSS-Grid 1fr-auto-1fr zentriert, SW by-v641 2026-05-03 10:26:14 +02:00
c266814aa9 Fix: worlds.js doppeltes const dog → SyntaxError behoben, SW by-v640 2026-05-03 10:22:13 +02:00
fc2002847c Feature: Welten Info-Cards — User-Avatar in JETZT, Hunde-Avatar+Cycle+Overlap in HUND, SW by-v639 2026-05-03 10:18:11 +02:00
dfd68f2a07 Feature: Ausgaben-Formular redesigned — Kategorie-Kacheln, €-Prefix, Wiederholungs-Toggle, SW by-v607 2026-05-02 10:58:47 +02:00
c96e98917c Fix: Ausgaben-Tab Icon → currency-eur, SW by-v606 2026-05-02 10:55:43 +02:00
798289ae5a Feature: Daueraufträge in Ausgaben — monatlich/quartalsweise/jährlich, Scheduler, SW by-v605 2026-05-02 10:51:28 +02:00
a63a9ba197 Fix: Symptom-Check-Tab entfernt (KI-Tierarzt-Button übernimmt), SW by-v604 2026-05-02 10:45:50 +02:00
c9e7e50bf4 Fix: Staging MEDIA_DIR=/prod-media direkt (kein Symlink-Umweg), SW by-v603 2026-05-02 10:36:13 +02:00
f76f3d7056 Fix: Recalls leerer State check-circle via UI.icon(), SW by-v602 2026-05-02 10:33:25 +02:00
0994d16489 Bump SW by-v601 — Ausgaben-Redesign + Hundepass-Fixes deployen 2026-05-02 10:13:13 +02:00
fb1a9d27cd Feature: Hundepass — Ausweis integriert, Icons & Kontrast-Fix
- Ausweis-Button aus Profil-Ansicht entfernt; stattdessen "Ausweis öffnen"-Button im Hundepass-Modal-Footer
- Bearbeiten-Button in Gesundheits-Info von btn-link auf btn-secondary (besserer Kontrast)
- 7 fehlende Phosphor-Icons zum Sprite hinzugefügt: file-pdf, notebook, link, identification-card, wave-sine, list-checks, share-network
- Leere Sektionen (Impfungen, Medikamente) zeigen einladenden Empty-State mit Icon statt nacktem Text
2026-05-02 10:12:51 +02:00