325ba333fd
UX: Suchfeld über Tabs, zusammen mit Stand-erfassen-Button — SW by-v497, APP_VER 474
2026-04-29 13:14:21 +02:00
a3679354c8
Feature: Übungen Desktop 2-zeilige Tabs + globale Suche über alle Kategorien — SW by-v496, APP_VER 473
2026-04-29 13:07:41 +02:00
81ee1a063e
Feature: Übungs-Suche, fehlende Legacy-Übungen nachmigriert (110 gesamt) — SW by-v495, APP_VER 472
2026-04-29 12:26:32 +02:00
4c3638c17c
Fix: Tagesübung-Scroll via _scrollTarget nach exercises-Load statt fixem Timeout — SW by-v494, APP_VER 471
2026-04-29 11:54:38 +02:00
6d9f4a097e
Feature: Alle 104 Übungen aus DB in Übungsseite — 9 Tabs, DB-basiert, abwärtskompatibel — SW by-v493, APP_VER 470
2026-04-29 11:44:47 +02:00
175984e80f
Fix: Tagesübung nur JS-kompatible exercise_ids, Scroll per exercise_id; Landing+llms.txt Sprint-20 — SW by-v492, APP_VER 469
2026-04-29 11:34:28 +02:00
fe2e718827
Feature: ORS Admin-Card — Wochensumme + 30-Tage-Gesamt im Header — SW by-v491, APP_VER 468
2026-04-29 11:25:11 +02:00
69cbf3c599
Fix: Übungen-Tab kaputt nach Exercise-Chip-Navigation — DB-Kat-Mapping + refresh()-Fix — SW by-v490, APP_VER 467
2026-04-29 11:13:22 +02:00
e22dcc3c3d
Feature: Analytics 30-Tage Dual-Chart, Referrers, Umami-Credentials — SW by-v489, APP_VER 466
2026-04-29 11:06:18 +02:00
a4da7144d6
Feature: App-Version in Einstellungen + manueller Update-Check — SW by-v488, APP_VER 465
2026-04-29 10:54:56 +02:00
e507f4c086
Feature: Welpenwachstum — SVG-Kurve, Stats-Zeile, Veränderung-Spalte im Gewichtsverlauf — SW by-v487, APP_VER 464
2026-04-29 10:49:40 +02:00
dc737d0c48
Feature: KI-Nutzung im Admin mit 30-Tage-Sparkline + Top-Nutzer-Tabelle — SW by-v486, APP_VER 463
2026-04-29 10:42:00 +02:00
392359df45
Feature: ORS-Stats im Admin-Panel — Tagesverbrauch/2000, 30-Tage-Sparkline, Top-Nutzer — SW by-v485, APP_VER 462
2026-04-29 10:10:59 +02:00
69140a261e
Fix: Exercise-Chip Click-Handler nach async Chip-Update binden — SW by-v484, APP_VER 461
2026-04-29 10:04:43 +02:00
59feecb30b
Fix: Tagesbild stabil (date-seeded statt random), preview_url für schnelleres Laden — SW by-v483, APP_VER 460
2026-04-29 10:02:39 +02:00
117d32fcc3
Fix: Übung-des-Tages-Chip scrollt direkt zur Übung (kategorie + name als init-params) — SW by-v482, APP_VER 459
2026-04-29 09:39:54 +02:00
d9a0be489b
Feature: Übung des Tages — personalisiert aus exercise_progress, 4. Chip auf Welcome — SW by-v481, APP_VER 458
2026-04-29 09:26:41 +02:00
7048499624
Feature: ORS-Wochenlimit (20/Woche), Tages-Cache, Privilegien-Bypass, Datenschutz-Update — SW by-v480, APP_VER 457
2026-04-29 08:23:55 +02:00
ca8bb495b0
Feature: Gassirunden-Chip auf Welcome öffnet direkt ORS-Vorschlag im Routen-Tab — SW by-v479, APP_VER 456
2026-04-29 08:18:16 +02:00
369eae5e5a
Feature: Rundweg-Vorschläge via OpenRouteService — 2/4/6 km, 3 Varianten, Navigation+Speichern — SW by-v478, APP_VER 455
2026-04-29 08:04:25 +02:00
b09a569689
Fix: Welcome-Chip ohne Standort leer, Foto vertikal zentriert (object-fit) — SW by-v477, APP_VER 454
2026-04-29 07:38:39 +02:00
4e1e7ca37e
Feature: Welcome-Chips — Termin nur <60 Tage, Übung des Tages als Fallback, async Gassirunde-Bank — SW by-v476, APP_VER 453
2026-04-29 07:34:22 +02:00
db386da2c0
Feature: Welcome-Dashboard für eingeloggte User — Hundefoto-Hero, Stats-Chips, Feature-Karten — SW by-v475, APP_VER 452
2026-04-29 06:35:42 +02:00
c8ae514c01
Feature: Tierschutz-Check, KI-Züchter-Features, Export, SEO-Update
...
Tierschutz-System (immer aktiv, nicht abschaltbar):
- welfare_check.py: regelbasierte Prüfung IK, Alter, Deckpause, Wurfanzahl, Genetik
- Grün/Gelb/Rot-Modal bei Wurf anlegen + Probeverpaarung
- Bei kritischem Befund + "Trotzdem fortfahren" → automatische Admin-Mail
- Tierschutz-Check nie durch Nutzer deaktivierbar
KI-Züchter-Features (pro User an/abschaltbar außer Tierschutz):
- routes/zucht_ki.py: 5 Endpunkte — Wurfankündigung, Genetik-Erklärung,
Paarungsanalyse, Hund-Beschreibung, Jahresbericht
- Toggles in Einstellungen (ki_zucht_* Felder)
- KI-Buttons in litters.js + zuchthunde.js
KI-Routing: Privilegierte Rollen (Admin, Züchter, Moderator, Manager)
nutzen Claude Sonnet primär, lokales LLM als Fallback
Datenexport: routes/breeder_export.py — ZIP mit HTML-Dossier + ODS
(odfpy hinzugefügt in requirements.txt)
Admin-Profil: POST /admin/breeder/create-profile für Schnellprofil ohne
Antragsprozess; Admin-Rolle bleibt erhalten
Wurfformular: Dropdown aus Zuchtkartei für Vater/Mutter mit Auto-Fill;
litters.vater_id + mutter_id als FK auf zucht_hunde
Probeverpaarung: heart-fill Icon + Welfare-Block im Ergebnis
Landing Page: Züchter-Section + Feature-Gruppe, Meta-Tags, JSON-LD,
keywords, softwareVersion 2.1
SEO: llms.txt vollständig überarbeitet, robots.txt Züchter-Pfade,
sitemap.xml um Wurfbörse + Züchter-Profile erweitert
SW by-v474, APP_VER 451
2026-04-28 19:49:54 +02:00
91340be5a3
Feature: Vollständige Züchter-Rolle — Antrag, Würfe, Stammbaum, Genetik
...
Basis-Features (Schritte 1–11):
- Züchter-Antrag mit Dokument-Upload, Admin-Prüfung, E-Mail-Benachrichtigungen
- Öffentliches Züchter-Profil + Karten-Marker (lila, certificate-Icon)
- Wurfverwaltung: Würfe, Welpen, Gewichtsverlauf, Foto-System
- Wurfbörse (öffentlich) mit Filtersuche nach Rasse/Status
- Läufigkeits-Tracker: Deckdatum + Wurftermin (+63 Tage, nur für Züchter)
- Interessenten-Chat: Kontakt-Button in Wurfbörse und Züchter-Profil
- Sidebar-Einträge: Zuchtkartei + Wurfverwaltung für Züchter/Admin
Stammbaum & Genetik (Schritte 1–8):
- Zuchtkartei: Hunde-Stammdaten mit Vater/Mutter-Verknüpfung
- Stammbaum-Visualisierung: 4 Generationen, horizontales CSS-Grid
- Gesundheitstests (HD, ED, OCD, Augen…) mit farbigen Ergebnis-Badges
- Genetische Tests (MDR1, PRA, DM…): clear/carrier/affected
- Titel & Auszeichnungen (CAC, CACIB, IPO…)
- Probeverpaarung: IK-Berechnung nach Wright + Ampel-Bewertung
- Teilen-Link für öffentliche Hunde-Profile
- Kaufvertrag: druckbares HTML-Dokument pro Welpe
Technisch: 4 neue Route-Dateien, 5 neue Page-Module, 11 neue DB-Tabellen,
icons shield-check + certificate + tree-structure im Sprite — SW by-v465, APP_VER 444
2026-04-28 18:25:21 +02:00
b3d2d298dc
Fix: Hero-Slide Gesundheit Infinitiv — SW by-v450, APP_VER 429
2026-04-27 19:45:18 +02:00
ddfc20b10d
Feature: Phone-Frame mit 9 App-Screenshots im Hero — SW by-v449, APP_VER 428
...
- 9 Screenshots synchron mit Hero-Text (Fade gemeinsam)
- CSS-Phone-Frame, Statusleiste per margin-top abgeschnitten
- /img Static-Mount in main.py
- Screenshots als JPEG optimiert (8MB → 2.5MB gesamt)
- Vorladen aller Folgebilder beim Start
2026-04-27 19:38:43 +02:00
3b9f69fa0b
UX: Dots→Zähler, Anmelden-Button Kontrast, Trust-Strip einzeilig — SW by-v448, APP_VER 427
2026-04-27 19:14:30 +02:00
3b222cab3d
Fix: Hero-Slide Training kürzer, KI → virtueller Trainer — SW by-v447, APP_VER 426
2026-04-27 18:54:29 +02:00
5aa97d06eb
Fix: Kacheln einklappbar (CSS-Spezifität), Hero-Interval 6s — SW by-v446, APP_VER 425
2026-04-27 18:51:24 +02:00
86d1642fba
UX: Hero-Rotation mit 9 Themen, Kacheln einklappbar — SW by-v445, APP_VER 424
...
- 9 rotierende Hero-Slides (alle 4s, Fade + Dot-Indikatoren)
- Themen: Tagebuch, Karte, Gesundheit+KI, Giftköder, PWA-Erklärung,
Routen, Gassi-Treffen, Training, Forum
- "Und noch mehr"-Kacheln standardmäßig eingeklappt (Toggle)
2026-04-27 18:47:18 +02:00
f3742ed7a9
Landing Page: neue Welcome-Seite für nicht-eingeloggte Besucher — SW by-v444, APP_VER 423
...
Hero mit Farbverlauf, großer Headline, primärer CTA-Button. 4 Feature-Abschnitte
(Tagebuch, Gesundheit, Community, Training). Privacy-Block in Primärfarbe.
Feature-Grid als "und noch mehr". Zweiter CTA am Ende. Eingeloggte sehen
weiterhin die kompakte Ansicht.
2026-04-27 18:28:36 +02:00
9cb4a16cc2
UX: Installationsanleitung mobile-first, alle Plattformen — SW by-v443, APP_VER 422
...
Alle 5 Fälle abgedeckt: Android+Prompt (Button), Android ohne Prompt (Chrome-Schritte),
iOS Safari (Teilen-Menü), iOS non-Safari (Hinweis + Link kopieren), Desktop (Tabs
Android/iOS). Steps mit Icon statt Zahl. Link-kopieren-Button für manuelle Fälle.
2026-04-27 18:22:10 +02:00
e62d94546b
Rechtliches: Datenschutz + Impressum aktualisiert — SW by-v442, APP_VER 421
...
Impressum: TMG→DDG, OS-Plattform + VSBG-Hinweis, zweites Kontaktmedium.
DSE: privater Datenschutz-Abschnitt, KI (lokal + Claude Sonnet Fallback mit
SCCs), Push (FCM/APNS), Webcal, Referral, EXIF/GPS, Routen, Widerruf Art.7(3),
BayLDA, Passphrase statt Passwort.
2026-04-27 06:31:49 +02:00
e35a7a2692
Feature: QR-Code mit Logo im Referral-Block — SW by-v441, APP_VER 420
...
qrcode.min.js (qrcodejs) lazy geladen; QRCode.CorrectLevel.H damit Logo-Overlay
(icon-180.png, 36px) den Code noch lesbar lässt; App.loadScript() public gemacht.
2026-04-27 06:23:01 +02:00
b4c3698a3a
Fix: Installationsanleitung scrollt direkt zur Install-Karte — SW by-v440, APP_VER 419
...
Klick auf "Installationsanleitung" in Settings navigiert jetzt mit params
{ install: true }, welcome.js zeigt die Karte auch bei bereits installierter
PWA und scrollt direkt dorthin.
2026-04-27 06:16:39 +02:00
664fb2a79b
Admin: APP-Version + SW-Version im System-Panel — SW by-v439, APP_VER 418
2026-04-26 17:44:45 +02:00
e0c2b2bdc1
Performance: GZip, Cache-Control, WebP, SQLite-Tuning, Indizes, srcset — SW by-v438, APP_VER 417
2026-04-26 17:40:18 +02:00
5bd07d9598
Media-Previews: _preview.jpg bei Upload, alle Listenansichten — SW by-v437, APP_VER 416
...
- media_utils: generate_preview() (Pillow, max 800px, JPEG q72) + preview_url_from()
- diary.py: Preview beim Bild-Upload, preview_url in media_items + cover_preview_url
in Kalender-, Karten- und Listenabfragen
- forum.py: Preview in _save_upload(), foto_preview_url in Thread-Listen
- Frontend diary.js: cover_preview_url in Listenansicht, Mediengalerie, Kalender,
Karten-Marker + Popup; onerror-Fallback auf Original
- Frontend forum.js: foto_preview_url in Thread-Karten-Thumbnails
- Admin: 'Previews generieren (Bestand)' Button → POST /admin/media/generate-previews
2026-04-26 17:30:00 +02:00
faf433f4cf
Gesundheit: konsistente Phosphor-Icons, keine Emojis — SW by-v436, APP_VER 415
...
- Sprite: bandaids + calendar-plus hinzugefügt
- ICONS-Map: entwurmung→bandaids, medikament→pill, tierarzt→stethoscope,
gewicht→scales, allergie→warning-circle
- Praxen: Notfall-/Anruf-Buttons mit phone/warning SVG statt Emojis
- Terminvorschlag: calendar-plus SVG statt 📅 Emoji
2026-04-26 17:20:27 +02:00
c935d3fbd4
Teil 3: Terminvorschläge + KI-Limit-Bypass für Admins/Mods — SW by-v435, APP_VER 414
...
- timeutils: next_appointment_slot() parst OSM opening_hours, findet Slot
- GET /health/terminvorschlaege: fällige/überfällige Einträge (30-Tage-Horizont)
Impfung/Tierarzt nutzen Praxis-Öffnungszeiten, Rest nächster Werktag 09:00
- Frontend: Terminvorschlags-Karten, bestätigbares Modal, legt Event an
- ki.py: Admins, Moderatoren, Media Manager bypassen CLOUD_WEEKLY_LIMIT
2026-04-26 17:08:18 +02:00
570dcd4e93
KI-Tracking vollständig, Cloud-Limit 20/Woche, Statusmail täglich 06:00 — SW by-v434, APP_VER 413
...
- ki.complete() zählt sich selbst (user_id-Parameter, _track_usage)
- CLOUD_WEEKLY_LIMIT=20, geprüft vor jedem Cloud-Call
- user_id durchgereicht in health, diary, knigge, notes, ki-route
- Admin-Panel: 7-Tage-Ansicht, Limit-Info, Top-Cloud-User-Tabelle
- Statusmail täglich 06:00 CEST statt alle 2h
2026-04-26 17:01:05 +02:00
85836e4e6e
Scheduler aufräumen: Prewarm-Job entfernt, Rassen-Seed monatlich, Admin-Panel Wiki-Label — SW by-v433, APP_VER 412
2026-04-26 16:38:07 +02:00
06bd8525ed
Sprint 15: Zeitzone-Fix, Gewichts-Sync, Öffnungszeiten, KI-Bericht, POI-Moderation — SW by-v432, APP_VER 411
...
- client_time: Browser-Lokalzeit bei allen Creates mitschicken (Tagebuch, Notizen,
Forum, Verlorener Hund, Routen) — kein UTC-Versatz mehr bei Einträgen
- Gewicht-Sync: health typ=gewicht schreibt dogs.gewicht_kg, einmalige Migration
- Praxen: opening_hours + lat/lon/osm_id in tieraerzte-Tabelle, OSM-Nearby-Lookup,
Öffnungszeiten in Karte und Detailansicht
- KI-Gesundheitsbericht: alle 2 Wochen automatisch, ki_health_reports-Tabelle,
Frontend-Banner mit Archiv (letzten 5 Berichte)
- POI-Korrekturen: User schlägt Öffnungszeiten-Änderung vor, Moderatoren-Tab
genehmigt/lehnt ab, user_edited-Flag schützt vor Overpass-Überschreibung
- timeutils.py: safe_client_time() zentral für alle Routen
2026-04-26 15:38:50 +02:00
016eb52d83
Sprint 14: Multi-Fix-Batch — SW by-v428, APP_VER 407
...
KI/Symptom-Check: JSON-Code-Fence stripping in ki.py, Dringlichkeit-Map mit Phosphor-Icons
Gewicht-Sync: health.js aktualisiert appState.activeDog.gewicht_kg auch bei Bearbeitung
Giftköder: icon:'check-circle' → UI.icon('check-circle') in emptyState-Call
Forum-Pills: overflow:hidden + text-overflow:ellipsis auf Desktop und Mobile
Moderation: Admins für Moderatoren unsichtbar, keine Aktions-Buttons auf Admins
Notizblock: Filter-Chips wrap 2-zeilig auf Desktop (min-width:1024px)
Tagebuch: Datenschutz-Hinweis "nur du kannst sie sehen", Sitter sieht keine bestehenden Einträge
diary.py: Sitter-Zugriff gibt leere Liste zurück (GET), Erstellen bleibt erlaubt
2026-04-26 11:06:59 +02:00
02120bb532
Notizblock: Notiz-Button für 6 neue Bereiche + RUBRIKEN + Datenschutz — SW by-v425
...
Neue Notiz-Buttons:
- Tagebuch: in der Detail-Ansicht (nicht Edit-Form)
- Trainingspläne: im Plan-Header pro Plan
- Freunde: in jedem Freund-Karten-Bereich
- Giftköder: in jedem Meldungs-Karten (private Umstände)
- Verlorener Hund: in jedem Eintrag
Notizblock:
- 4 neue RUBRIKEN: trainingsplan, friends, poison, lost
- Datenschutz-Hinweis: "Alle Notizen sind privat"
- lock-simple Icon zum Sprite hinzugefügt
2026-04-26 10:52:28 +02:00
b801571bf0
Notizblock: ph-Icon-Font → SVG-Sprite, 3 neue Sprite-Icons — SW by-v424
...
Alle <i class="ph ph-..."> durch <svg class="ph-icon"><use href="...">
ersetzt. Neue Icons: magnifying-glass, spinner-gap, warning-circle, note.
Spin-Animation für Ladeindikator. Search-Icon-CSS auf width/height.
2026-04-26 10:29:14 +02:00
4eb5b65b80
Notizblock: notes in pages-Objekt eingetragen — SW by-v423
2026-04-26 10:22:17 +02:00
f229f6f4d0
Knigge: Padding direkt auf Frage/Options/Bars-Elemente — SW by-v422
2026-04-26 10:11:24 +02:00
993a3b9a32
Knigge: padding space-5 (20px) statt card-body — SW by-v421
2026-04-26 10:05:52 +02:00