a2d089bce4
Fix: SMTP_SUPPORT_PASS Fallback in mailer, scaninput Logging
2026-05-15 11:29:16 +02:00
41a4808ad5
Fix: Storno sendet PDF+Mail+Scaninput; /scaninput Volume in staging ergänzt
2026-05-15 11:18:48 +02:00
8e36eb0611
Fix: PDF — breiter Header-Balken mit Logo, eine Seite, Hinweis-Prefix, Footer fix
2026-05-15 11:13:28 +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
95b70d5119
Fix: Rechnungs-PDF komplett neu — DIN-5008-Layout, Überlagerung behoben, Bankverbindung, Footer, Deutsche Formatierung
2026-05-15 10:45:49 +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
5dddacff96
Feat: Admin action-items invoices_unpaid, CSV-Download, Quartalsbericht-Versand
2026-05-15 10:06:04 +02:00
77093774f9
Feat: Admin-Rechnungs-Endpoints — invoices_unpaid, CSV-Download, Quartalsbericht-Versand
...
- action_items(): invoices_unpaid (status='sent') zum Return-Dict hinzugefügt
- GET /api/admin/invoices/quarterly/{year}/{q}/csv — CSV-Download (Semikolon-getrennt, UTF-8-BOM für Excel)
- POST /api/admin/invoices/send-quarterly-report — sendet CSV-Anhang an Steuerberater + Zusammenfassung an René (SMTP_FROM); graceful fallback wenn attachments noch nicht von mailer.py unterstützt
2026-05-15 10:04:46 +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
9c359bb07e
Feat: Rechnungs-Management Tab in Admin-Oberfläche
...
Neuer 'Rechnungen'-Tab mit vollständiger Invoice-Verwaltung:
- Invoice-Liste mit Status-Badges (draft/sent/paid/cancelled) und kontextuellen Aktionen
- Modal: Neue Rechnung erstellen (dynamische Positionen, Live-Vorschau Netto/Brutto)
- Modal: Als bezahlt markieren (Datum + Betrag)
- Modal: Stornieren mit Pflichtgrund
- Modal: Detail-Ansicht mit Positionen-Tabelle
- Cashflow-View: Übersichtskacheln + Monatstabelle + Quartalsbericht-CSV-Download
- Action-Items Badge für offene Rechnungen (invoices_unpaid aus action-items API)
2026-05-15 09:56:42 +02:00
c032b9a3fb
Fix: Stats-Kotbeutel → waste_basket Typ in osm_pois (zeigt echte Mülleimer-Zahl)
2026-05-14 22:47:14 +02:00
6495a5ff6b
Fix: Stats-Kotbeutel aus osm_pois statt user_map_pois (zeigt 125.750 statt 2)
2026-05-14 22:45:50 +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
58046ce0c7
Fix: Kotbeutel-Stationen → Mülleimer für Kotbeutel in Stats-Band (SW by-v963)
2026-05-14 22:07: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
ebff9d820d
Merge branch 'develop'
2026-05-14 19:59:30 +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
f9160307bc
Landing: emotionaler Hero, Social-Proof-Stats, Testimonial-Slots, Scroll-Animationen (SW by-v952)
...
- Hero-Headline: "Weil jeder Moment mit ihm zählt." (warm/emotional statt Feature-Liste)
- CTA umbenannt: "Kostenlos starten" statt "Ich bin Hundebesitzer"
- Hero-Stats-Zeile: live Nutzer/Hunde/km-Zähler (nur wenn >0)
- Stats-Band: orangener Balken mit 4 Live-Kennzahlen nach der Zwei-Welten-Section
- Testimonial-Section: 3 Platzhalter-Karten zwischen Features und Züchter-Bereich
- Scroll-Animationen: IntersectionObserver auf alle Cards (fade-up)
- API: /api/stats/public — öffentlicher Endpoint, 5-Min-Cache
2026-05-14 18:23:23 +02:00
dc09b09cc3
Merge branch 'develop'
2026-05-14 17:19:05 +02:00
7e939cf854
SEO: landing.html canonical /info → / (primäre URL ist die Root)
2026-05-14 17:19:05 +02:00
cd3e3bdbf6
Merge branch 'develop'
2026-05-14 17:01:46 +02:00
35bc38eb34
Fix: Analytics-Tab zeigt verständliche Fehlermeldung bei Umami-Auth-Fehler
2026-05-14 17:01:46 +02:00
86c5400c2e
Merge branch 'develop'
2026-05-14 16:54:59 +02:00
c8f9bd4c09
Fix: Konto-Löschen-Dialog body→message (SW by-v951)
2026-05-14 16:51:39 +02:00
0bd4c33557
Fix: Kündigungs-Mail + Settings — Ablaufdatum korrekt formatiert (SW by-v950)
2026-05-14 16:47:57 +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
8aa7feb91e
Merge branch 'develop'
2026-05-14 16:37:47 +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
ea655590f7
Merge branch 'develop'
2026-05-14 15:04:11 +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
0069454b24
Merge branch 'develop'
2026-05-14 13:46:11 +02:00
44b3fba191
Fix: Action-Items nach Upgrade-Freischaltung sofort aktualisieren (SW by-v944)
2026-05-14 13:46:11 +02:00
c50e43201c
Merge branch 'develop'
2026-05-14 13:26:38 +02:00
8d9c9b275d
Fix: Upgrades-Confirm-Modal — body→message, confirmLabel→confirmText (SW by-v943)
2026-05-14 13:26:38 +02:00
24217f81d5
Merge branch 'develop'
2026-05-14 13:20:11 +02:00
9da8665aca
UX: Upgrade-Tab — Cards statt Tabelle, Freischalten-Button immer sichtbar (SW by-v942)
2026-05-14 13:20:11 +02:00
29e39ee14a
Merge branch 'develop'
2026-05-14 13:17:23 +02:00
6762efa04e
UX: Upgrade-Freischaltung — reichhaltige HTML-Bestätigungsmail (SW by-v941)
2026-05-14 13:17:23 +02:00