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
acf8040238
Knigge: card-body statt inline Padding — SW by-v420
2026-04-26 10:02:10 +02:00
aa49ff1f85
Knigge: Padding auf Voting/KI-Rat/Haftpflicht-Cards — SW by-v419
2026-04-26 09:50:44 +02:00
c272812661
Knigge: page-container (kein Doppel-Padding), Radfahrer-Icon, SW by-v418
2026-04-26 09:43:31 +02:00
aeed35078f
Knigge: page-container + Padding — kein Rand-zu-Rand-Layout, SW by-v417
2026-04-26 09:39:32 +02:00
231f7976c5
Icons Runde 2: poison/wiki/movies/social + 16 Sprite-Icons — SW by-v416
...
Sprite: thermometer-hot, heartbeat, bone, lightning, plant, pill,
circle-dashed, stethoscope, backpack (erste-hilfe),
music-notes, lightbulb, sparkle, link-simple, globe,
heart-straight, check-circle (social/movies)
poison.js: ✅ → check-circle (Bestätigt-Badge, Button, Popup, Toast)
wiki.js: 📸 → camera (Community-Fotos Heading)
movies.js: ✅ ⚠️ ★🐾 🎬 ⭐ → check-circle/warning/star/paw-print/film-slate
social.js: 🎵 📸 🌐 Plattformen, ✓👁📌 ✨ 🏷🔗 ✅ 🤍 💬 ↗️ → Phosphor
2026-04-26 09:36:31 +02:00
fd76eddfb9
Icons: Emoji/Unicode → Phosphor in 8 Dateien + 16 neue Sprite-Icons — SW by-v415
...
Sprite: arrow-up/down, bug, check-circle, ear, fish, flask, flower,
medal, question, scissors, tent, ticket, tooth, trend-up/down
poison.js: TYPEN (❓ 🎣 ☠️ ⚗️ ⚠️ ) → question/fish/skull/flask/warning
events.js: TYPEN (🎪 🏆 🎓 🐕 🛍️ 🥇 📌 ) → ticket/trophy/graduation-cap/dog/shopping-bag/medal/push-pin
dog-profile.js: Pflege-Emojis (✂️ 💅 🦷 👂 👁🐾 🦟 🌸 ❤️ 🐶 ) → Phosphor
trainingsplaene.js: (🐶 🐕 🦮 ) → dog mit SVG-Icon
health.js: ▲▼→ → trend-up/trend-down/arrow-right
uebungen.js: ↑↓→★ → trend-up/trend-down/arrow-right/star
admin.js: ✓✗ → check/x in HTML-Templates
moderation.js: ✓✗ → check/x Buttons
2026-04-26 09:26:13 +02:00
f6586c88ee
Giftköder: Tiergift-Nummern raus, Erste-Hilfe-Button direkt zu Vergiftung
...
poison.js: nur noch Polizei 110 + Button → Erste Hilfe (Tab lebensgefahr)
erste-hilfe.js: init() akzeptiert params.tab zum direkten Tab-Sprung
SW by-v414, APP_VER 393
2026-04-26 09:04:10 +02:00
5ca522780b
SW: app.js/ui.js/api.js auf Network-First — iOS cached nie alte Versionen
...
Cache-First für app.js führte dazu dass iOS im normalen Safari-Tab
den alten APP_VER servierte → alte Seiten-Skripte wurden geladen.
Alle Kern-JS-Dateien sind jetzt Network-First wie CSS und Seiten-Module.
SW by-v413, APP_VER 392
2026-04-26 08:56:10 +02:00
1400033862
Welcome: Redesign — Hero-Gradient, Icon-Grid, luftiger — SW by-v411
...
- Hero: warmer Gradient-Hintergrund, großes Icon, CTA direkt darin
- Features: 4×4 Icon-Grid (Desktop 8-spaltig) statt dense Kachel-Karten
- Eingeloggte User: persönliche Begrüßung im Hero
- Install: kompakte Karte am Ende
- Burger-Hinweis entfernt (unnötig)
2026-04-26 08:35:31 +02:00
a698bec817
Desktop: Settings max-width 640→860px via page-container — SW by-v410
2026-04-26 08:30:06 +02:00
e2af505eac
Desktop: Forum, Chat, Walks auf 860px — einheitliche Breite, SW by-v409
2026-04-26 08:26:35 +02:00
770d75100e
Desktop: Nachrichten + Gassi-Treffen auf max-width 1100px — SW by-v408
...
Chat: position:absolute→width:100%, page-body als zentrierter flex-Container
Walks: max-width none→1100px (konsistent mit Forum)
2026-04-26 08:20:13 +02:00
6930e6f848
OSM: Auto-Retry max 3x (30/60/90s), doppelte Tile-Fetches verhindert
...
Retry-Limit verhindert Endlos-Loop. Delay wächst (30s→60s→90s) damit
mehr Tiles gecacht sein können. Kartenbewegung setzt Counter zurück.
_fetching-Set im Backend verhindert parallele Doppel-Requests pro Tile.
SW by-v407, APP_VER 387
2026-04-25 22:54:12 +02:00
66af669653
Karte: Auto-Retry nach 20s wenn 0 Marker — SW by-v407
...
Wenn der erste Scan 0 OSM-Marker liefert (Cache leer, Hintergrund-Fetch
läuft), automatisch nach 20 Sekunden nochmal scannen. User muss die
Karte nicht manuell verschieben um Marker zu sehen.
2026-04-25 22:47:25 +02:00
8d3a620275
Fix: Karte-Scan wenn Diary-Karte vorher geöffnet — SW by-v406
...
diary.js lädt Leaflet ohne MarkerCluster. Wenn der User zuerst die
Diary-Karte öffnet, findet _loadLeaflet() in map.js ein gesetztes
window.L und überspringt das Laden komplett — inklusive MarkerCluster.
L.markerClusterGroup() schlägt dann still fehl (catch { return 0; }),
und alle OSM-Layer zeigen 0 Marker.
Fix: Leaflet-Basis und MarkerCluster separat prüfen:
- window.L fehlt → lade Leaflet-Basis
- window.L.markerClusterGroup fehlt → lade MarkerCluster
2026-04-25 21:46:36 +02:00
553e9e7854
Sprint 12+13: Tagebuch Day-One-Redesign, Notiz-Feature, Icon-Fixes, SW by-v405
...
Tagebuch:
- Day-One-Listenansicht: Wochentag + Tageszahl + Meta-Zeile (Zeit/Ort/Wetter)
- 4 Ansichten: Liste, Medien-Mosaik, Kalender (mit Sprungbuttons), Karte (GPS-Marker)
- Detail-Ansicht inline im Content-Bereich (kein Fullscreen-Overlay mehr)
- Hero-Bild vollständig sichtbar (object-fit:contain), Lightbox mit Safe-Area
- 2-Spalten-Layout Desktop: Text + Leaflet-Karte + POI-Liste
- EXIF-GPS-Extraktion bei Foto-Upload, historisches Wetter via Archive-API
- NoteStation-Import: Fotos in diary_media (80 Einträge migriert, 94 Medien)
- Stats-Endpoints: /diary/stats, /diary/calendar, /diary/locations
Notiz-Feature:
- Generische notes-Tabelle (parent_type + parent_id + meta_json)
- 📝 -Button in 8 Bereichen, Notizblock-Seite mit KI-Analyse
- KI-Toggle in Einstellungen, notes_ki_enabled in User-Profil
Icons & Design:
- fill:currentColor Fix für welcome/onboarding/friends.js
- --c-icon Variable, --c-text-muted Dark Mode aufgehellt
- 15+ neue Phosphor-Icons aus lokaler Kopie
- CSS Network-First im SW, Cache-Control-Middleware
Infrastruktur:
- Wiki-Anreicherungs-Scheduler-Jobs entfernt (abgeschlossen)
- auth.py: notes_ki_enabled + is_social_media im User-Response
2026-04-25 20:44:46 +02:00
4f58a784c7
Admin: Social-Media-Tab mit Manager-Übersicht, Plattform-Auswertung und Post-Nachweis, SW by-v370
2026-04-25 10:27:39 +02:00
e2bb1a4b2d
Social: Vorschläge merken ( 📌 ), Post-Link nachträglich eintragen, Quick-Post ohne prompt(), SW by-v369
2026-04-25 10:23:17 +02:00
092230c4e1
Wiki: Placeholder-Icon auf Phosphor 'dog' umgestellt (statt unförmigem Custom-SVG), SW by-v368
2026-04-25 10:15:29 +02:00
af4b1a4a55
Registrierung: Hundepassphrase-Generator (3 Wörter + Zahl, 60+ Hundewörter), SW by-v367
2026-04-25 10:08:42 +02:00
6064a1d750
Wiki-Foto-System: Gallery-Flow, Community-Fotos, Wiki-Fotos-Badge
...
- review_submission: Fotos ins gallery/-Verzeichnis statt breeds/ kopieren;
foto_url der Rasse nur überschreiben wenn noch keins vorhanden (Erstbild)
- Rassen-Detail-API: user_fotos (approved submissions) mitliefern
- Rassen-Listen-API: user_foto-Subquery als Fallback wenn foto_url leer
- achievements: neue Badge-Kategorie "Wiki-Fotos" (bronze 1, silber 3, gold 10)
mit wiki_fotos-Metrik in check_and_award und my_achievements
- Badge-Check + Push nach Foto-Approval
- wiki.js: Karten-Bild nutzt r.foto_url || r.user_foto
- wiki.js: Detail-Ansicht zeigt Community-Foto-Galerie (scrollbar, clickable)
- Dockerfile: breeds/gallery + breeds/submissions im Image anlegen
- SW by-v366, APP_VER 351
2026-04-25 09:53:24 +02:00
b608d5635f
Admin: Kachel 'Fotos freizugeben' + pending_fotos in Stats-API, SW by-v365
2026-04-25 09:44:17 +02:00
034f7ef21f
Moderation: Foto-Freigabe repariert (rasse_id join, delegate an wiki-API), SW by-v364
2026-04-25 09:41:56 +02:00
d603b7bae1
Wiki: Bildrechte-Bestätigung bei Foto-Einreichung (Checkbox + DB + Mod-Badge), SW by-v363
2026-04-25 09:35:06 +02:00
de73c7901e
Wiki: Hunde-Silhouette als Placeholder für fehlende Rassenfotos (SW by-v362)
...
- _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
2026-04-25 09:27:19 +02:00
d0921a28e9
Admin-Wartung: obsolete Buttons entfernt, Enrichment-Status + Foto-Laden hinzugefügt
...
- Temperament→Deutsch-Button entfernt (0 englische Temperamente in DB)
- Gemma-Einträge-zurücksetzen entfernt (0 Gemma-Einträge, alle Claude Haiku)
- Neuer Button: Enrichment-Status (GET /api/admin/wiki/enrichment-status)
zeigt Gesamt/Angereichert/Kein-Wiki/Ausstehend/Fotos/Modelle-Verteilung
- Neuer Button: Fotos laden (POST /api/admin/wiki/fetch-photos)
führt fetch_wiki_images.py --limit 50 aus und zählt gespeicherte Fotos
- SW by-v361, APP_VER 346
2026-04-25 08:53:28 +02:00
5aba366b21
Deploy: SW by-v360, APP_VER 345
2026-04-25 08:23:45 +02:00
22225d5717
Pflege: Fell schneiden vs. trimmen + Tagebuch Medien-Button nach oben
...
- dogs.py: Pflegeart-Filter (trimmen/schneiden) anhand Rassen-Beschreibung
- dog-profile.js: Badge '✂️ Schneiden' / '✋ Trimmen' bei Fell-Kategorie
- diary.js: Fotos/Videos-Button direkt nach Textfeld (vor Ort und Meilenstein)
- ki.py: Standardmodell auf claude-sonnet-4-6 umgestellt
2026-04-25 08:21:49 +02:00
8d5c7a19b1
Admin: KI-Anfragen nach Quelle aufschlüsseln (cloud/local/luna)
...
- ki_daily_calls: PK auf (user_id, date, source) erweitert + Index; Migration
baut Tabelle mit neuer Struktur neu auf, behält Altdaten als 'cloud'
- ki.py: return_source=True-Parameter gibt (text, 'cloud'|'local') zurück
- training.py: ki_source aus ki.complete() auslesen, in DB speichern
- social.py: _ki_complete_tracked() zählt Luna-Anfragen mit source='luna';
alle Content-Endpoints (generate, evaluate, training-tip, breed-of-day,
pflege-tipp) nutzen tracking-Variante
- admin.py: Stats aufgeteilt in ki_cloud/ki_local/ki_luna je heute+Monat
- admin.js: KI-Karte zeigt 9 Zeilen mit ☁️ Claude / 🖥️ LM Studio / 🌙 Luna
- SW by-v359, APP_VER 344
2026-04-25 08:20:29 +02:00
74b6c03bb3
Social: Modernes Design — Cards, Pill-Buttons, Shadows, SW by-v359
2026-04-25 08:19:45 +02:00
8ba8f4dfa3
Moderations-Panel: neue Seite /moderation für Mods und Admins
...
- Backend: routes/moderation.py mit GET /stats, /reports, /users, /fotos
und PATCH-Endpoints für Ban/Unban und Foto-Review
- Frontend: pages/moderation.js mit 4 Tabs (Übersicht, Fotos, User, Forum)
- Sidebar-Eintrag (nur für Moderatoren/Admins sichtbar, gelb)
- Page in index.html registriert, pages-Objekt in app.js ergänzt
- Router in main.py eingebunden (/api/moderation)
- SW-Cache by-v357, app.js/ui.js/api.js auf v=94
2026-04-25 08:19:19 +02:00
ba5547f993
Pflege-System: Pflegetipps im Hundeprofil + Rassen-Autocomplete
...
- GET /api/dogs/{id}/pflege: rassenspezifische Pflegetipps
- pflege_tipps DB-Tabelle (43 Tipps, 10 Kategorien) geseedet
- dogs.rasse_id für Wiki-Verknüpfung (Migration)
- Hundeprofil: Tipp des Tages + alle Tipps aufklappbar
- Hundeprofil-Edit: Rassen-Autocomplete mit Wiki-Match-Badge
- Social: Post-Bestätigung (Gepostet!-Button, Quick-Mark, Pending-Banner)
- Social: Pflegetipp-Button (allg. + rassenspezifisch)
- Social: Diversitäts-Check, Kategorie-Tagging
- Social: 104 Übungen, Übungsübersicht-Modal
- Admin: Social-Media-Tracking-Sektion
- SW by-v356, APP_VER 343
2026-04-24 20:56:47 +02:00
548210b908
Social: 104 Übungen in 7 Kategorien + Übungsübersicht-Modal
...
Grundkommando(10) Tricks(18) Problemverhalten(12) Mental(8)
Körperpflege(7) Hundesport(6) Welpe-Basics(5) + erweitert auf 104 total
Modal zeigt alle Übungen mit Nutzungs-Counter, SW by-v350
2026-04-24 20:22:40 +02:00
1cb0c2df77
Social: Trainingstipp-Generator, Übungen in DB, 3 Stil-Varianten
...
- training_exercises Tabelle mit 13 Übungen aus App-Bibliothek
- POST /social/training-tip: Stil-Varianten tutorial/community/aspirational
- exercise_id in social_content für Wiederholungs-Tracking
- Admin-Stats: Social-Media-Sektion mit Status-Übersicht + letzte 10 Posts
- SW by-v349, APP_VER 336
2026-04-24 20:13:22 +02:00
0df6d569c1
Social Media Manager: Route, DB, KI-Prompts, Frontend, Rolle; SW by-v338
2026-04-24 19:13:30 +02:00
d90d4f1eeb
breed_enricher: Wikipedia-grounded via Haiku, ki_source-Spalte, Gemma-Reset; SW by-v337
2026-04-24 18:43:31 +02:00
eb6eaea04e
SW by-v336, APP_VER 323 — admin Qualitätsbewertungs-Button
2026-04-24 18:36:22 +02:00
fdca0a7ecc
admin: Qualitätsbewertungs-Button mit Scores-Tabelle
2026-04-24 18:33:02 +02:00
988cffcbd4
Karte refresh(): _scheduleOsmLoad() aufrufen — OSM-Marker nach Seitenwechsel ohne Pan, SW by-v335
2026-04-24 11:19:40 +02:00
005552042d
Karte: invalidateSize() in refresh() — leere Karte nach Seitenwechsel, SW by-v334
2026-04-24 11:07:22 +02:00
c503737fb1
Desktop Tab-Grid: Gesundheit (5 Sp.), Admin (4 Sp.), Karte-Legende (8 Sp.), SW by-v332
2026-04-24 10:58:12 +02:00
7ac421fcf9
Routen-Validierung: >15 km/h Ø zählt nicht für Stats/Trophäen, SW by-v331
2026-04-24 09:46:15 +02:00
9213b58d3c
Fix App.checkNearbyAlerts Export, Karte refresh nach Meldung, Button 'Absenden', SW by-v330
2026-04-24 09:29:23 +02:00
5a755e4922
Burger-Badge via Alerts-Check, Alert-Linie stärker, Linie weg nach Erledigen, SW by-v329
2026-04-24 09:17:15 +02:00
fc7d743153
Badge-System: personal/general Split, Punkte ohne Zahl, SW by-v328
2026-04-24 08:39:41 +02:00
0a3ad2207e
Badges: Chat-Punkt am Avatar, Notif-Punkt am Burger, Aktuelles aus Sidebar, SW by-v327
2026-04-24 08:33:32 +02:00