aea5f04bc1
Fix: Von-Gründer-eingeladen → 100% dauerhaft (statt 50%); SW by-v972
2026-05-15 12:25:41 +02:00
810c78ae8b
Feat: Referral/Gründer-Rabatt vollständig integriert (SW by-v971)
2026-05-15 12:22:31 +02:00
db4d5cb1b6
Legal: Widerrufs-Checkbox, AGB-Abschnitt, Rechnungsnotiz (SW by-v970)
2026-05-15 12:07:13 +02:00
24a1aecda4
Fix: Leistungszeitraum '12 Monate ab Rechnungsdatum' statt festem Datum (SW by-v969)
2026-05-15 11:45:13 +02:00
b14a251bdc
Feat: Entwurf bearbeiten (PATCH), erneut senden; SW by-v968
2026-05-15 11:33:48 +02:00
0a466ef6ce
Feat: Rechnungsadresse — Profil, Upgrade-Modal Hinweis, Rechnung-erstellen-Button in Upgrade-Cards (SW by-v967)
2026-05-15 10:59:12 +02:00
fa513be7f5
Release v1.6.0 — Rechnungs-System (SW by-v966)
...
- Rechnungserstellung mit fortlaufender Nr. RG-YYYY-NNNN
- PDF-Generierung (fpdf2) mit §14-UStG-Pflichtangaben
- Kleinunternehmer-Modus (§19 UStG) via ENV
- Mail-Versand mit PDF-Anhang (Brevo/SMTP)
- Speicherung in /scaninput + Paperless-ngx REST-API
- Admin-Panel: Invoice-Tab, Pay/Cancel-Modals, Cashflow
- Quartalsbericht als CSV-Download + Mail-Versand
- Action-Items: offene Rechnungen im To-Do-Band
- Stornonummern ST-YYYY-NNNN
- docker-compose: /volume1/scaninput:/scaninput
2026-05-15 10:07:10 +02:00
b68a12587a
Feature: Rechnungs-System (invoices) — Backend komplett
...
- DB-Migration: invoices + invoice_items Tabellen inkl. Indizes
- routes/invoices.py: vollständiger Admin-Router (prefix /api/admin/invoices)
- CRUD: Liste, Detail, Erstellen, Senden, Bezahlen, Stornieren
- PDF-Generierung via fpdf2 mit §14-UStG-Pflichtangaben (Kleinunternehmer-Hinweis)
- Cashflow-Übersicht und Quartalsbericht
- PDF-Download-Endpunkt
- Speicherung in /scaninput + optionaler Paperless-Upload
- mailer.py: send_email() + Backends um optionale PDF-Anhänge erweitert
(Brevo: base64, SMTP: MIMEApplication)
- main.py: invoices_router registriert
- docker-compose.yml: /volume1/scaninput:/scaninput Volume hinzugefügt
2026-05-15 10:04:23 +02:00
129badf010
Fix: Hero-Stats zeigt vollständigen Text 'Mülleimer für Kotbeutel' (SW by-v965)
2026-05-14 22:37:29 +02:00
cf6e5920ae
Fix: APP_VER-Mismatch (Dauer-Aktualisieren-Bug), Mülleimer-Zahl im Hero (SW by-v964)
2026-05-14 22:15:17 +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
be87930e5b
Fix: Foto-Strip + Ban-Yaro-Bild mit Inline-Styles (SW by-v961)
2026-05-14 19:55:34 +02:00
6f8644c70f
Landing: Ban Yaro persönlich — Foto + Geschichte als Split-Section (SW by-v960)
2026-05-14 19:50:12 +02:00
59ddf047ba
Perf: Fotos JPG→WebP, 18 MB → 373 KB (SW by-v959)
...
cwebp: eric-ward 1200px, chewy 1400px, baptist-standaert 1600px,
foto-strip 700x700px — alle q80-82
2026-05-14 19:42:41 +02:00
2a59b775e2
Fix: Eric-Ward-Split mit Inline-Styles und auto-fit Grid (SW by-v958)
2026-05-14 19:33:21 +02:00
7867507e7d
Landing: 7 Unsplash-Fotos mit Fotografen-Credits eingebaut (SW by-v957)
...
- Eric Ward: emotionaler 50/50-Split nach Stats-Band
- Baptist Standaert: subtiles Hintergrundbild Demo-Section
- Alvan Nee / Nicholas Brownlow / Wade Austin Ellis / Tamas Pap: 4er-Foto-Strip vor Testimonials
- Chewy: Header-Bild Welpenkäufer-Section
- Alle Fotos mit © Name · Unsplash Credit-Overlay
2026-05-14 19:25:14 +02:00
e610613b58
Fix: Dark-Mode CSS-Syntax korrigiert — html.dark + @media getrennt (SW by-v956)
...
Ungültige Syntax (@media..., html.dark kombiniert) aufgelöst.
Zwei separate valide Blöcke: html.dark{} für JS-Klasse, @media{} als Fallback.
2026-05-14 19:15:46 +02:00
10964c6509
Fix: Dark-Mode JS-Fallback via matchMedia + html.dark Klasse (SW by-v955)
...
matchMedia-Listener setzt html.dark als Fallback für macOS 26 / Brave
die prefers-color-scheme Media Query nicht korrekt weiterleiten
2026-05-14 19:07:36 +02:00
e548c43010
Fix: Dark-Mode Landing mit color-scheme Meta-Tag und !important-Overrides (SW by-v954)
...
- <meta name="color-scheme" content="light dark"> ergänzt
- color-scheme: light dark / dark in :root
- Alle Dark-Mode-Regeln auf !important umgestellt um Inline-Styles zu schlagen
- #funktionen, #warum, #vergleich, #preise, #ueber ergänzt
2026-05-14 19:01:37 +02:00
996ee9c97e
Fix: Landing Dark-Mode, OS-Icons→Phosphor, force-update-Loop (SW by-v953)
...
- main.py APP_VER 951→953 behebt Update-Loop auf Desktop
- Dark-Mode: vollständige @media (prefers-color-scheme: dark) Regeln für alle Sections
- Emojis im Verbindung-Block (🏡 🔍 🐶 ) durch Phosphor SVG ersetzt
- 🐾 in Testimonials und Footer durch paw-print SVG ersetzt
2026-05-14 18:34:02 +02:00
c8f9bd4c09
Fix: Konto-Löschen-Dialog body→message (SW by-v951)
2026-05-14 16:51:39 +02:00
da4879b4c4
Fix: Kündigung-Anzeige auch ohne Ablaufdatum (SW by-v950)
2026-05-14 16:45:36 +02:00
959fff4651
UX: Kündigung-Toast zeigt Ablaufdatum (SW by-v949)
2026-05-14 16:41:52 +02:00
b3f1c6bdf3
UX: Routen Standby — Fingerabdruck unter Ring, iOS-Banner Safe-Area (SW by-v948)
2026-05-14 16:35:09 +02:00
2cf87bab7e
UX: Routen Standby — Fingerabdruck-Button statt ganzer Bildschirm (SW by-v947)
2026-05-14 16:29:09 +02:00
1ea8127aaf
Fix: needs_dog_selection TEXT '0' war truthy — INTEGER + === 1 Check (SW by-v946)
2026-05-14 14:02:17 +02:00
3b666c545f
Feature: Abo-Kündigung + Ablaufdatum + Dog-Auswahl nach Downgrade (SW by-v945)
2026-05-14 13:56:55 +02:00
44b3fba191
Fix: Action-Items nach Upgrade-Freischaltung sofort aktualisieren (SW by-v944)
2026-05-14 13:46:11 +02:00
8d9c9b275d
Fix: Upgrades-Confirm-Modal — body→message, confirmLabel→confirmText (SW by-v943)
2026-05-14 13:26:38 +02:00
9da8665aca
UX: Upgrade-Tab — Cards statt Tabelle, Freischalten-Button immer sichtbar (SW by-v942)
2026-05-14 13:20:11 +02:00
6762efa04e
UX: Upgrade-Freischaltung — reichhaltige HTML-Bestätigungsmail (SW by-v941)
2026-05-14 13:17:23 +02:00
60e5c9ba35
Fix: Admin-Endpoints umgehen SW-Timeout — kein 'Offline' bei langen Jobs (SW by-v940)
2026-05-14 13:08:52 +02:00
8080d7cda1
Fix: no such column d.user_id — diary hat kein user_id, Dog-Check reicht (SW by-v939)
2026-05-14 12:48:05 +02:00
3f0e09e5d2
Perf: Wiki Breed-Fotos nutzen _preview.webp + breeds/ in generate-previews (SW by-v938)
2026-05-14 12:42:20 +02:00
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