a736d66c47
UX: Panorama-Hinweis bleibt 4s sichtbar (erste 2x), Text + Querformat, SW by-v1034
2026-05-16 13:03:42 +02:00
a65e5a2723
Feature: Dark-Mode Overlay auf Welten-Panorama (rgba 0,0,0,0.45), SW by-v1033
2026-05-16 13:01:33 +02:00
fc8d396247
Fix: Geburtstags-Banner nur für aktiven Hund
...
bday/bdayYear: nur truthy wenn bdayDog.id === dog.id (aktiver Hund)
otherBdayDog: zeigt Hinweis wenn ein ANDERER Hund Geburtstag hat
SW by-v1031, APP_VER 1031
2026-05-16 12:13:15 +02:00
b54d9fda99
Fix: users.geburtstag Migration + Format TT.MM statt MM-DD
...
- database.py: ALTER TABLE users ADD COLUMN geburtstag TEXT (fehlte!)
- profile.py: Validierung auf \d{2}\.\d{2} (TT.MM Format)
- settings.js: Placeholder/Pattern auf TT.MM geändert
- worlds.js: Birthday-Check auf DD.MM Format angepasst
SW by-v1029, APP_VER 1029
2026-05-16 12:02:52 +02:00
a4377033ec
Feature: User-Geburtstag im Profil + Glückwunsch in JETZT-Welt
...
Settings:
- Feld 'Dein Geburtstag (optional)' im Profil-Formular (Format MM-TT)
- Hinweis: nur für Geburtstagsgrüße, kein Jahr nötig
- profile.py: geburtstag gespeichert + Format-Validierung MM-DD
JETZT-Welt wenn heute User-Geburtstag:
- Greet-Text: 'Herzlichen Glückwunsch' statt Tageszeit-Gruß
- Animiertes Geburtstags-Reminder-Card (confetti + cake Icons)
- 'Alles Gute zum Geburtstag, [Name]!'
SW by-v1028, APP_VER 1028
2026-05-16 11:55:34 +02:00
1328e2c4e3
Feature: HUND-Geburtstag-Hint für Nicht-aktiven Hund
...
Wenn ein anderer Hund (nicht der angezeigte) Geburtstag hat:
- Cake-Icon (Phosphor) animiert bounce in der Info-Karte unten
- "[Name] hat heute/morgen Geburtstag!" + Pfeil-Button
- Klick → wechselt direkt zum Geburtstagshund + zeigt Birthday-Banner
Kein Tab-Indicator (nur HUND-Welt). SW by-v1027, APP_VER 1027
2026-05-16 11:51:06 +02:00
82869e3f12
Fix: Drag-and-Drop in Welten-Konfig für Desktop (Pointer Events)
...
touchstart/touchmove/touchend → pointerdown/pointermove/pointerup:
- Pointer Events funktionieren auf Mouse (Desktop) + Touch (Mobile) gleich
- setPointerCapture() für sauberes Drag auch wenn Maus das Element verlässt
- e.touches[0] → e.clientX/clientY direkt aus dem Pointer Event
- Nur linke Maustaste (e.button === 0) startet Drag
SW by-v1011, APP_VER 1011
2026-05-16 09:24:08 +02:00
1b3b150b50
Desktop: Welten-Konfig als zentrierter Dialog, Chips kompakter
...
- Desktop (_isDesktop = innerWidth >= 768):
Overlay zentriert (nicht Bottom-Sheet), max-width 1100px, border-radius 20px
Grid: repeat(auto-fill, minmax(120px, 1fr)) statt repeat(4, 1fr)
Chip-Höhe: 64px statt 80px, Gap 6px statt 8px
- Mobile: unverändert (Bottom-Sheet wie bisher)
- SW by-v1010, APP_VER 1010
2026-05-16 09:20:20 +02:00
a8c63e87da
Experiment: Chip-Layout unten — Hintergrundbild bekommt mehr Raum
...
- Section-Labels entfernt ('Deine Bereiche', 'Alles über X', 'Die Welt da draußen')
- Chip-Grid: Höhe 80→74px, Gap 8→7px
- world-bottom gap 8→5px
- Footer-Links: Padding reduziert, Schrift 11→10px
- CSS-Version ?v=1001 für immutable-Cache-Busting
- SW by-v1002, APP_VER 1002
2026-05-15 21:18:44 +02:00
f962cf2f4d
Fix: Chip-Sichtbarkeit geräteübergreifend konsistent
...
Root cause: _mergeDefaults() interpretierte fehlende Chips als 'neu'
und fügte sie wieder ein — auch bewusst ausgeblendete.
Fix:
- _saveConfig(): berechnet cfg.hidden = alle Default-Chips die keiner
Welt zugewiesen sind; wird mit der Config auf dem Server gespeichert
- _mergeDefaults(): prüft hidden-Set und allAssigned-Set; fügt nur echte
Neu-Chips ein (nicht in hidden, nicht bereits anderer Welt zugewiesen)
- Verhindert auch Doppelzuweisung wenn ein Chip zwischen Welten verschoben
SW by-v1001, APP_VER 1001
2026-05-15 19:08:34 +02:00
be12550df1
Fix: Lost-Hund — kein Doppeleintrag nach Sync, pulsierender Marker, Verwerfen-Button, 20km-Alert
...
- Deduplication in _loadReports(): Pending-Einträge die bereits auf dem Server
sind (Race-Condition beim Sync) werden automatisch aus dem Pending-Store entfernt
- Verwerfen-Button für offline-gespeicherte Meldungen (pending), Notiz-Button nur
für Server-Einträge sichtbar
- Pulsierender Kreis-Marker (CSS @keyframes by-lost-ping) statt statischem Pin;
Pending-Einträge in Orange, Server-Einträge in Rot
- Card-Click für pending deaktiviert (kein Detail-Modal für unsynchronisierte Daten)
- worlds.js: Alert-Radius für vermisste Hunde von 5 auf 20 km erhöht (wie Giftköder)
- SW by-v990, APP_VER 990
2026-05-15 17:37:16 +02:00
d20e63496c
Feat: AGB-Link im Footer (Welt-Welt) + AGB-Checkbox im Upgrade-Modal
...
- worlds.js: 'Datenschutz · AGB' in der Welt-Welt-Fußzeile
- settings.js: AGB-Checkbox über Widerrufs-Checkbox; beide müssen gecheckt sein bevor 'Anfrage senden' aktiv wird
2026-05-15 16:19:46 +02:00
07db68aea2
Fix: Geburtstag aller Hunde + Kotbeutel-Stationen in Stats (SW by-v962)
...
- worlds.js: bdayDog = _dogs.find(...) — Geburtstag gilt für alle Hunde, nicht nur den aktiven
- Banner, KI-Call, "Was hat sich X gewünscht?" nutzen bdayDog.name
- stats.py: kotbeutel-Count aus user_map_pois WHERE type='kotbeutel'
- landing: Stats-Band 5. Kachel "Kotbeutel-Stationen"
2026-05-14 22:00:52 +02:00
2b672c89df
Fix: Welten refresh nach Foto-Upload — _refreshPending Flag (SW by-v936)
...
show() re-renderte nur bei User-Wechsel. Wenn refresh() während unsichtbarer Welten
aufgerufen wurde, blieb das alte Bild beim Zurücknavigieren.
Fix: _refreshPending=true wenn !_visible; show() rendert bei nächstem Aufruf neu.
2026-05-14 12:28:03 +02:00
3585958c47
UX: Hinweis 'Welten bearbeiten' im Ausgeblendete-Funktionen-Sheet (SW by-v929)
2026-05-14 11:41:46 +02:00
00457f52f9
Fix: Datenschutz Hintergrundbild + Dog-Refresh nach Anlegen (SW by-v928)
...
- dogs.py: welcome-dashboard Foto-Queries filtern jetzt auch nach user_id
- worlds.js: Background Cache-Key enthält user_id (kein Cross-User Leakage)
- worlds.js: Worlds.refresh(appState) neu
- dog-profile.js: Worlds.refresh() nach Hund anlegen aufrufen
2026-05-14 11:35:53 +02:00
a27b8ea5b4
Fix: P/Z-Badges komplett aus allen Welt-Views entfernt (SW by-v924)
...
- _renderJetzt: false,false statt f.pro/_isRoleBasedPro/f.role=breeder
- _openAllChips: P-Badge entfernt
- _isRoleBasedPro() nur noch als ungenutzte Funktion (bleibt für Kompatibilität)
2026-05-14 11:07:24 +02:00
1081466704
Fix: HUND-Teaser zeigt nur kostenlose Features — Gassi durch Wurfbörse ersetzt (SW by-v923)
2026-05-14 10:56:23 +02:00
0a28c68953
Fix: P/Z-Badges nur im Welten-Einrichten-Modal für Admins (SW by-v922)
...
- Normale Welt-Views (JETZT/HUND/WELT): keine P/Z-Badges auf Chips
- Config-Modal: P-Badge (Pro) und Z-Badge (Züchter) nur wenn isAdmin=true
- isAdmin-Variable im _openConfigModal()-Scope ergänzt
2026-05-14 10:46:55 +02:00
3a3002aff3
Fix: Welten-Config auto-merge neuer Default-Chips — Läufigkeit erscheint automatisch (SW by-v918)
2026-05-13 20:31:27 +02:00
4a52a52cff
Feature: Z-Badge für Züchter-Kacheln in Welten-Admin-Ansicht (SW by-v916)
2026-05-13 20:24:00 +02:00
b911c41583
Feature: Läufigkeit in HUND-Welt-Kacheln (nur Züchter) + laeufi in hund-Liste (SW by-v915)
2026-05-13 20:21:19 +02:00
bda61a0e40
Feature: Trauer-Feature, Futter-Verträglichkeit, Multi-Hund-Fixes, Wetter-Ort (Sprint 47)
...
- dog-profile.js: Verstorben-Button, Gedenkseite, KI-Abschiedstext
- database.py: futter_eintraege/reaktionen, route_dogs, exercise_progress.dog_id
- routes/ernaehrung.py: Futter-Verträglichkeit mit 20 Reaktionstypen + Analyse
- routes/routen.py: route_dogs Many-to-Many, Routen editierbar
- routes/training.py: exercise_progress per dog_id
- routes/ki.py: /ki/abschied Trauer-KI
- weather.py: Nominatim Ortsname parallel geladen
- ui.js: dogChip/bindDogChip, visualViewport-Modal
- api.js: gedenken, gedenkseite, futter-Methoden, route_dogs
- worlds.js: Ortsname im Wetter-Chip
- uebungen.js: _progressLoaded-Flag, dog-spezifischer Fortschritt
- trainingsplaene.js: dog_id Unterstützung
- diary.js/health.js: P-Badge Cleanup
- map.js: Wetter-Ort-Anzeige entfernt
- wetter.js: Ort in Wetter-Detail
2026-05-11 19:28:38 +02:00
265d3d4fe2
Fix: HUND-Welt Avatar-Klick setzt activeDog korrekt vor dog-profile Navigation (SW by-v856)
2026-05-11 17:30:26 +02:00
79fa5684b9
Feature+Fix: Referral-Admin, Pro-Gates, Karten-Layer, onDogChange, Staging-Media (SW by-v855)
...
Features:
- Admin: Referral-Tab (Virality Factor, Top-Werber, letzte Einladungen)
- Karte: Regenradar (RainViewer, zoom→7, color=4), Temperatur-Layer (OWM) mit Zahlen-Grid + Legende
- Wetter-Chip: Umschwung-Warnung bei ≥40%-Sprung in Niederschlagswahrscheinlichkeit
- Freundschaftsanfragen: Accept/Decline direkt in Notifications (kein Pro nötig)
- Freunde-Seite für Standard-User freigeschaltet
Pro-Gates:
- KI-Trainer, Routenvorschläge, Regenradar, Temperatur-Layer jetzt Pro-Feature
- Pro-Badge (P) auf Chips für Admins/Mods in allen Welten + Welten-einrichten
- Oranger Banner auf Pro-Seiten für Admin/Mod/Manager
Bugfixes:
- onDogChange: uebungen.js (Cache leeren + _render), trainingsplaene.js (war leer)
- robots.txt vereinfacht (nur Disallow, kein Allow-Durcheinander)
- Hintergrund-Foto: Querformat-Filter korrigiert (kein Fallback auf Hochformat)
- Staging Media: FileResponse mit korrektem MIME-Type, no-cache statt immutable
- Staging Docker: MEDIA_DIR=/data/media + /prod-media:ro Fallback-Handler
- Staging-Fix: Bild-Upload auf zweitem Hund (war Read-only file system)
2026-05-11 17:23:29 +02:00
70af387147
Feature: User-Feedback, Regen-Uhrzeit im Wetter-Chip, Admin-Karten klickbar (SW by-v833)
...
- Feedback-Modal im Settings (Kategorie + Text → E-Mail an support@banyaro.app )
- Wetter-Chip (Karte + Gassi-Score): zeigt nächste Regenstunde ab ≥20% Wahrscheinlichkeit
- Gassi-Score-Chip: zweizeilige Wetter-Info, linksbündig, volle Chipbreite
- Admin-Übersicht: Stat-Karten anklickbar → navigiert direkt zum jeweiligen Tab
- ui.js: visualViewport-Listener hebt Modal über Tastatur (alle Modals)
- api.js: Pydantic v2 Array-Detail korrekt als Fehlermeldung extrahiert
- map.js: Wetter-Fallback über watchPosition wenn getCurrentPosition scheitert
- Update-Loop-Fix: index.html ?v= synchron mit APP_VER halten (alle 4 Stellen)
2026-05-10 12:52:55 +02:00
97a03ce006
Fix: SW-Update nuklear (unregister all), touch-action pan-y für Scroll, /force-update Route, Geburtstags-KI user_id, konto-loeschen Import (SW by-v791)
2026-05-09 18:09:53 +02:00
2ff6d4dfe4
Feature: Hintergrundbild Portrait=Panorama (track/300vw) vs Landscape=Vollbild (overlay/100vw) mit Orientation-Listener (SW by-v784)
2026-05-08 18:58:31 +02:00
247ded6103
Fix: Hintergrundbild auf worlds-overlay statt worlds-track — cover statt 100%-Track-Breite (war 3x überzoomt) (SW by-v783)
2026-05-08 18:51:43 +02:00
e0fb6a78e4
UX: Geburtstags-Banner Emojis → Phosphor Icons (confetti, cake/gift, sparkle, balloon, star, magic-wand) (SW by-v782)
2026-05-08 18:47:49 +02:00
34fe59a672
Fix: Geburtstags-KI — Rate-Limit entfernt, KI_MODE=cloud auf Staging, bessere Fehlermeldungen (SW by-v781)
2026-05-08 18:41:02 +02:00
9ebd40aaae
Feature: Geburtstags-KI — 2 Modi (morgen: Ideen, heute: Hundeperspektive), DB-Cache, Abend-Tagebuch-Hinweis (SW by-v780)
2026-05-08 18:24:27 +02:00
5664616a2a
Fix: Welten-Config — Sicherheitsnetz entfernt (Rolle-Chips ausblendbar), Duplikat-Schutz (SW by-v778)
2026-05-08 15:27:03 +02:00
55ae22615d
Feature: Geburtstags-Banner mit Feuerwerk-Animationen im world-reminder Stil (SW by-v777)
2026-05-08 13:20:03 +02:00
662190e308
Feature: Geburtstags-Banner in HUND-Welt — heute & morgen, mit Alter und Animation (SW by-v776)
2026-05-08 13:16:51 +02:00
ce14bb1d2c
Refactoring: Inline-Styles → CSS-Klassen (worlds.js, dog-profile.js, settings.js) — 20 neue w3-/by-Klassen (SW by-v773)
2026-05-08 12:22:04 +02:00
3b8c9a72d8
UX: Wetter-Chip Subtext 9px/75% — kleiner als wj-chip-val, besser lesbar als 50% (SW by-v772)
2026-05-08 12:02:56 +02:00
08382de8cb
UX: Wetter-Chip Temperatur/Regen-Text als wj-chip-val — gleiche Lesbarkeit wie Nachbar-Chips (SW by-v771)
2026-05-08 11:30:50 +02:00
572fbf642f
Fix: Wetter-Chip ohne farbigen Rand, Update-Prüfung nutzt APP_VER+API+location.replace('/') (SW by-v769)
2026-05-08 11:22:55 +02:00
4a6c056742
Feature: Schnell-Gassi pingt nur noch Streak, kein Tagebucheintrag mehr (SW by-v768)
2026-05-08 11:17:38 +02:00
7d89ed8bd2
Fix: Schnell-Gassi zeigt korrekte Meldung wenn offline gequeuet statt falsches Erfolgs-Toast (SW by-v764)
2026-05-08 10:15:31 +02:00
cf2191efeb
Fix: 'Weitere Funktionen' zeigt nur ausgeblendete Chips — bereits konfigurierte werden gefiltert (SW by-v752)
2026-05-07 16:43:30 +02:00
bd7b694874
Feature: FAB → 'Alle Funktionen' — kompaktes Chip-Grid aller verfügbaren Seiten (SW by-v751)
2026-05-07 16:39:22 +02:00
fdbd5448bc
Fix: FAB-Overlay z-index 300→460 — war hinter worlds-overlay (z-index 450) versteckt (SW by-v750)
2026-05-07 15:51:03 +02:00
fd87c9af7b
UX: Pro-Chips komplett ausgeblendet für Standard-User (kein 25% Opacity mehr) (SW by-v747)
2026-05-06 20:47:13 +02:00
e4b661222c
Fix: Züchter-Chips im Safety-Net nicht mehr ausgeschlossen — _chipAllowed() entscheidet für alle (SW by-v745)
2026-05-06 20:02:00 +02:00
b8a240e8e5
Fix: JETZT-Welt locked-Parameter fehlte in features.map → Pro-Chips jetzt auch dort 25% (SW by-v744)
2026-05-06 19:55:58 +02:00
4009a1d2a7
Fix: Breeder-Chips nie aus Sicherheitsnetz erzwingen — nur Admin/Mod/Social (SW by-v743)
2026-05-06 19:39:03 +02:00
4a4e98ea6f
Fix: Rolle-gebundene Chips (Admin/Mod/Social) immer sichtbar unabhängig von persönlicher Config (SW by-v742)
2026-05-06 19:36:44 +02:00
b81c968e87
UX: Pro-Chips Opazität 25%, Release v1.5.0 vorbereitet (SW by-v741)
2026-05-06 19:31:25 +02:00