e397b9dff5
Fix: SW-Cache /api/dogs nach Foto-Upload löschen (SW by-v937)
...
_renderHund() liest Hunde aus _cachedGet('/dogs') — SW-gecacht mit altem foto_url.
Fix: swCacheDelete für /api/dogs, /api/dogs/{id} + welcome-dashboard, plus w3_dogs.
2026-05-14 12:34:26 +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
fbb070032a
Fix: SW-Cache welcome-dashboard nach Foto-Upload löschen (SW by-v935)
...
Root cause: /api/dogs/{id}/welcome-dashboard ist SW-gecacht.
Nach Foto-Upload lieferte SW alten Response mit alter random_photo.url.
Fix: API.swCacheDelete() + localStorage-Key nach Upload invalidieren.
2026-05-14 12:18:48 +02:00
aa379d8e08
Fix: Foto-Upload → sofortiger Refresh von Profil + DogSwitcher + Welten (SW by-v934)
2026-05-14 12:11:59 +02:00
08f1806be3
Fix: Foto-Upload im Hunde-Profil Edit-Modal (SW by-v933)
...
Root cause: fotoFile-Referenz wurde NACH UI.modal.close() geholt — DOM-Element
#dp-form-foto existiert nach Modal-Close nicht mehr → files[0] = undefined → Upload übersprungen.
Fix: fotoFile VOR modal.close() sichern; File-Objekt bleibt gültig auch ohne DOM.
2026-05-14 12:03:25 +02:00
781e3383bd
Fix: Karte lädt wieder + safe_media_path + Foto-Löschung (SW by-v932)
...
- map.js: appState→_appState im Template, addEventListener mit ?. (kein Crash ohne Buttons)
- media_utils.py: safe_media_path lstrip-Bug — 'dogs/' wurde zu 'ogs/' gekürzt;
jetzt korrekte removeprefix-Logik → Altes Hundeprofil-Foto wird jetzt wirklich gelöscht
2026-05-14 11:58:00 +02:00
e7b6cb3c33
Fix: Karte — Regenradar- und Temperatur-FABs nur für Pro sichtbar (SW by-v931)
2026-05-14 11:50:43 +02:00
567478a866
Fix: Altes Hundeprofil-Foto wird beim Überschreiben gelöscht (SW by-v930)
...
- dogs.py /photo: alte foto_url vor Upload merken, nach Speichern von Disk löschen
- dog-profile.js: Hintergrund-Cache nach Foto-Wechsel invalidieren
2026-05-14 11:47:08 +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
2a3afa0604
Fix: KI-Notiz-Assistent Toggle nur für Pro-Nutzer sichtbar (SW by-v927)
2026-05-14 11:29:59 +02:00
3b37c14600
UX: Upgrade-Modal mit vollständigen Feature-Listen (SW by-v926)
...
Pro (29€/Jahr): 3 Gruppen — Hunde (bis 10, getrennte Daten),
Community (Gassi-Treffen, Chat, Playdate), Tools (Ernährung, Reise, Notizblock, Karten)
Züchter (49€/Jahr): Pro-Inklusive-Badge + 3 Züchter-Gruppen —
Zucht-Management (Kartei, Wurf, Warteliste, Läufigkeit, Wurf-Rang),
KI & Analyse (KI-Assistent, Stammbaum, IK-Rechner, Tierschutz-Check, Jahresbericht),
Sichtbarkeit & Export (Profil, Wurfbörse, Datenexport, Privater Bereich)
2026-05-14 11:23:39 +02:00
4332b1195e
Refactor: Züchter-Antrag in Upgrade-Flow integriert (SW by-v925)
...
- /breeder/apply: Dokument jetzt optional (File(None)), kann per Mail nachgereicht werden
- _showUpgradeModal('breeder'): enthält jetzt Zwinger-Formular (Zwingername*, Rasse*,
Verein, Stadt, VDH-Checkbox, optionales Dokument)
→ sendet /breeder/apply + /auth/upgrade-request in einem Schritt
- Züchter-Profil-Karte in Settings: 'Züchter werden'-Button entfernt
→ für neue User ohne Antrag wird die Card vollständig ausgeblendet
→ 'Neu beantragen' bei Ablehnung öffnet jetzt _showUpgradeModal('breeder')
- Verifizierte Züchter: Card unverändert (Profil, Edit, KI-Settings)
2026-05-14 11:17:49 +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
108191b339
Fix: Staging APP_URL setzen — Verify-Links zeigten auf Production-DB
2026-05-14 10:22:51 +02:00
706e84186e
Fix: Admin Züchter-Liste — NULLS LAST durch CASE ersetzen, is_zucht_hund entfernt
2026-05-14 10:14:47 +02:00
52160e4dc0
Fix: Admin Züchter-Tab — Alle Züchter Liste + Antraege-Section (SW by-v921)
...
- GET /api/admin/breeders: neuer Endpunkt listet alle aktiven Züchter
mit Zwingername, Rasse, Stadt, Würfe/Zuchthunde-Zähler, subscription_tier
- _renderZuechter: zwei Sektionen parallel geladen
- "Offene Anträge" (wie vorher, aber mit Section-Header auch wenn leer)
- "Alle Züchter": Tabelle analog Nutzer-Tab mit Abo-Button → _changeTier
- api.js: API.breeder.allList() hinzugefügt
- SW by-v921, APP_VER 921
2026-05-14 10:06:48 +02:00
f6b37717b4
Feature: Upgrade-Anfragen-System — User-Flow + Admin-Panel (SW by-v920)
...
- DB: upgrade_requests-Tabelle (user_id, tier, message, fulfilled_at)
- POST /api/upgrade-request: Anfrage speichern + Admin-Benachrichtigungsmail
- GET/POST /api/admin/upgrade-requests[/{id}/fulfill]: Admin-Endpunkte
— fulfill setzt subscription_tier + sendet Bestätigungsmail an User
- action-items: upgrades_pending zählt offene Anfragen → Badge im Admin
- Admin-Tab "Upgrades": Tabelle offener/erledigter Anfragen, Freischalten-Button
mit Confirm-Modal, automatischer Tier-Setzung und Bestätigungsmail
- Settings: Upgrade-Modal sendet echte API-Anfrage statt nur mailto
— doppelte Anfrage wird erkannt (already:true → Toast statt Fehler)
- api.js: API.auth.upgradeRequest(tier, message) hinzugefügt
- SW by-v920, APP_VER 920
2026-05-14 09:59:11 +02:00
d61fd155c5
Feature: Abo & Tarif in Einstellungen — Upgrade-UI für Pro + Züchter (SW by-v919)
...
- /api/me gibt subscription_tier jetzt zurück (fehlte im SELECT)
- settings.js: "Pro kommt bald" durch echte Abo-Karte ersetzt
- Zeigt aktuellen Tarif mit farbigem Badge (Kostenlos/Pro/Züchter/Admin)
- Standard-Nutzer: zwei Upgrade-Buttons (Pro 29€/Jahr, Züchter 49€/Jahr)
- Pro-Nutzer: Pro-Badge + optionaler Züchter-Upgrade
- Züchter/Admin: Status-Badge, keine Upgrade-Buttons
- Upgrade-Modal: Features-Liste + ehrlicher Hinweis auf manuelle Freischaltung
+ mailto-Button mit vorausgefülltem Betreff und Account-E-Mail
- SW by-v919, APP_VER 919
2026-05-14 09:48:01 +02:00
eaa2e02e88
SEO: llms.txt v1.5.1 + sitemap /zuechter + JSON-LD Pricing (Pro 29€/Züchter 49€)
...
- llms.txt: Dual-Audience-Positionierung, echte Preise, neue Züchter-Features
(Warteliste, Läufigkeit, Wurf-Buchstabe/-Name, Privater Header, Profilfotos),
neue URL /zuechter, SW by-v918, Datum 2026-05-14
- landing.html JSON-LD: 3 Offers (kostenlos/Pro 29€/Züchter 49€), 7 neue featureList-Einträge,
dateModified 2026-05-14, Beschreibung mit Preisen
- zuechter.html JSON-LD: 2 Offers (49€/39€ Gründer), 5 neue Features, dateModified + softwareVersion
- sitemap.xml: neue statische Datei (Backup-Referenz, dynamic route in main.py)
- main.py sitemap: /zuechter mit priority 0.9 hinzugefügt
2026-05-14 09:43:21 +02:00
c5d4e730d9
Feature: Preise live — Pro 29€/Jahr, Züchter 49€/Jahr (Gründer 39€) auf Landing + Züchter-Seite
2026-05-14 09:31:49 +02:00
509d4eda2b
Fix: UMAMI_URL in docker-compose.yml ergänzt — Analytics-Fehler auf Admin-Seite
2026-05-14 09:24:01 +02:00
3da4a1b6d7
Fix: Züchter Icon — volles Orange #C4843A + weißes Icon für maximalen Kontrast
2026-05-14 09:19:05 +02:00
5f5f3e9271
UX: Züchter-Karte Icon heller — rgba .35 + #f5c07a für besseren Kontrast
2026-05-14 09:09:59 +02:00
0a7bb931b3
UX: Landing-Page für Hundebesitzer + Züchter — Split-Hero, Zwei-Welten-Section, Verzahnungs-Section
2026-05-14 08:36:58 +02:00
a3acf97938
Fix: /zuechter auf Staging → Redirect zu banyaro.app/zuechter (Production)
2026-05-13 22:32:17 +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
85864d8ef2
Fix: laeufi.js UI.esc → UI.escape (nicht existent → crash → 🚧 ) (SW by-v917)
2026-05-13 20:27:22 +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
6956870827
Fix: Logo-URL /media/ korrekt; Züchter-Section im Sidebar mit Label+Trennlinie (SW by-v914)
2026-05-13 20:15:16 +02:00
e11efa23f0
Fix: Zuchtkartei Header-Update nach Status-Laden — Zwingername korrekt (SW by-v913)
2026-05-13 20:07:54 +02:00
65811720f5
Fix: wurf_rang/wurf_name ALTER TABLE außerhalb executescript (SW by-v912)
2026-05-13 20:01:34 +02:00
53f0cb37d6
Feature: Wurf-Buchstabe (A–Z) + Wurf-Name — DB, Backend, Formular, Kartenanzeige (SW by-v912)
2026-05-13 19:58:50 +02:00
ca9d9a05c5
UX: Privater-Header — Zwingername als H2-Überschrift, Logo 48px, alle 3 Züchterseiten (SW by-v911)
2026-05-13 19:54:30 +02:00
ccf5a8b7ba
UX: Privater-Header mit Zwingername + Logo auf allen Züchter-Seiten (SW by-v910)
2026-05-13 19:48:58 +02:00
a577e6d8d9
UX: Privater-Bereich-Header auf Zuchtkartei, Wurfverwaltung, Läufigkeit (SW by-v909)
2026-05-13 19:44:25 +02:00
7fb4177dbd
Fix: Breeder-FAB an document.body — verschwindet zuverlässig via destroy() (SW by-v908)
2026-05-13 19:40:21 +02:00
0399282e4c
Fix: Wurfbörse auto-fill Grid — 1 Karte füllt volle Breite, keine fixen Spalten mehr (SW by-v907)
2026-05-13 19:35:05 +02:00
cf1ed0fdbc
Fix: Züchter-Seiten page-container-wide (1040px) statt 680px — Wurfbörse, Zuchtkartei, Würfe, Läufigkeit (SW by-v907)
2026-05-13 19:31:01 +02:00
f35a0efbaf
UX: Zuchtkartei Toolbar flex-wrap — kein horizontaler Scroll mehr (SW by-v906)
2026-05-13 19:27:01 +02:00
a29c7574d3
UX: Zuchtkartei Tabs flex-wrap — umbrechen statt scrollen (SW by-v905)
2026-05-13 19:23:13 +02:00
c583b69923
UX: Zuchtkartei Gesundheit/Genetik/Titel als by-tab Pill-Tabs wie Übungen (SW by-v904)
2026-05-13 19:19:55 +02:00
38e7ad99ae
Fix: Profilfotos — breeder status liefert jetzt id, s.profile.id korrekt (SW by-v903)
2026-05-13 19:13:34 +02:00
f7a2a3861e
Feature: Zuchtkartei Profilfotos-Button — Upload, Logo setzen, Sichtbarkeit (SW by-v902)
2026-05-13 19:09:29 +02:00
c417891546
Fix+Feature: data-modal-close global fix, Breeder-Profil Logo+Galerie (SW by-v901)
2026-05-13 18:55:28 +02:00
b17706e7ba
Feature: Züchter-Profil Komplett-Redesign — Hero, Hunde+Tests, Würfe, Gesundheitsstatistik (SW by-v900)
2026-05-13 18:47:49 +02:00
d5a3a1bb05
Fix: Zuchtkartei Toolbar Mobile — overflow-x:auto + flex-shrink:0 (SW by-v899)
2026-05-13 18:27:02 +02:00