- Foto-Challenge der Woche: DB-Tabellen, routes/challenges.py (current/submit/vote/winners),
Scheduler-Job jeden Montag 08:00, walks.js Challenge-Tab mit Banner, Galerie, Voting-Herz
- Gassi-Zeiten-Pool: DB-Tabelle gassi_zeiten, routes/gassi_zeiten.py (CRUD + Umkreis),
walks.js Stamm-Gassis-Tab mit Karten, Wochentag-Selector, Mitmachen→Chat
- Rassen-Treffen-Chip: GET /api/friends/same-breed, dog-profile.js zeigt Chip
wenn andere User gleiche Rasse haben, Klick → Forum mit Rassen-Suche vorausgefüllt
- 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)
- 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
- Übersicht: Hero-Card mit Gradient statt grauer Zeile, Vormonat-Trendpfeil (+/-%)
- Kacheln: Icon oben, Betrag in primary-Farbe, Label klein darunter
- Einträge: farbiges Icon-Badge (--kat-color), kompakter Monat-Trennstreifen mit Summe,
Betrag fett rechts, Löschen-Icon direkt am Eintrag ohne Modal-Umweg
- Statistik: gestapelte Top-2-Kategorien-Balken pro Monat (CSS-only),
Donut-Diagramm via CSS conic-gradient, Kategorie-Legende
- CSS: 435 neue Zeilen (exp-*) in components.css angehängt, keine bestehenden geändert
position:fixed auf #bottom-nav funktioniert in iOS PWA-Standalone-Mode nicht
zuverlässig (driftet beim Scrollen). Fix: #app selbst position:fixed;inset:0
→ Nav ist normales Flex-Kind am unteren Rand → kein iOS-Fixed-Bug möglich.
Desktop: #app position:static via Media Query. SW by-v529, APP_VER 506
position:fixed funktioniert auf iOS nur stabil wenn der window-scroll aktiv ist.
Innere Scroll-Container lassen fixed-Elemente während des Scrollens 'driften'.
- #page-content: overflow:visible (window scrollt)
- body.page-fullscreen: Klasse für Karte/Routen/Chat/Gassi/Sitting
→ dort overflow:hidden + interner Scroll wie bisher
- navigate(): setzt/entfernt page-fullscreen bei jedem Seitenwechsel
- SW by-v527, APP_VER 504
- #page-content min-height:0: iOS-Flex-Bug — ohne das schrumpft der Container
nicht und overflow-y:auto greift nicht → body scrollt statt #page-content
- #bottom-nav: transform:translateZ(0) + will-change:transform für stabile
GPU-Compositing-Schicht auf iOS Safari
- #app: height:100% (kaskadiert von body) statt 100dvh
- SW by-v523, APP_VER 500
- body: height:100% + overflow:hidden — body scrollt nie mehr selbst
- #app: height:100dvh (war min-height) + overflow:hidden — exakte Viewport-Höhe
- Desktop (768px+): #app height:auto + min-height:100dvh zurück (kein Bottom-Nav)
- #page-content: -webkit-overflow-scrolling:touch für iOS-Momentum-Scroll
- gruender.js: null-Check vor _renderStats() gegen "null is not an object"-Crash
- SW by-v522, APP_VER 499
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
- _DOG_SILHOUETTE Phosphor-SVG als Modul-Konstante in wiki.js
- Karten-Fallback zeigt SVG statt UI.icon('dog')
- Detail-Ansicht zeigt 56px SVG + „Kein Foto verfügbar" wenn kein Foto
- CSS: wiki-breed-photo-fallback mit Gradient, neue wiki-detail-photo-placeholder-Klasse
- SW by-v362, APP_VER 347