Skip to content

v0.17: Positions-Period-Popover · Test-Suite +66 · Math-Dedupe · Doc-Refresh#103

Merged
jonax1337 merged 1 commit into
mainfrom
release/v0.17
May 22, 2026
Merged

v0.17: Positions-Period-Popover · Test-Suite +66 · Math-Dedupe · Doc-Refresh#103
jonax1337 merged 1 commit into
mainfrom
release/v0.17

Conversation

@jonax1337
Copy link
Copy Markdown
Owner

Summary

Polish-Release. Konkreter UX-Schmerzpunkt im Rechnungs-Editor entfernt, eine ordentliche Test-Investition obendrauf.

  • Positions-Zeitraum (BG-26, BT-134/135) neu als Popover-Chip. Vorher beengter Inline-Block in der Beschreibungs-Spalte mit zwei nebeneinander stehenden Text-Toggles. Jetzt: kompakter Chip-Trigger, Klick öffnet 300-px-Popover mit Tab-Switcher (Einzeltag/Zeitraum), DatePicker(s) mit Min-Date-Constraint im Range-Mode, Footer mit Entfernen/Fertig. Befüllt zeigt der Chip das Datum mit Akzent-Border (`15.05.2026` oder `15.05.2026 – 22.05.2026`). InvoiceEdit, OfferEdit und RecurringEdit teilen sich die neue Komponente.
  • Test-Suite +66 Cases. Vitest 87→134, Pytest 52→71. Neue Vitest-Suites für `currency` (24), `date` (11), `totals` (12); neue Pytest-Suites für `i18n` (14) und `line_period` XML-Emission (5).
  • 15 zuvor stille Pytest-Failures auf Windows behoben. Drei Test-Module riefen java/KoSIT ohne Stdin-Umleitung auf, KoSIT crashte beim `FileInputStream.available()`-Check auf Console-Handle — same root cause wie v0.16.1 (`validator.rs`). Fix: leere reguläre Datei als stdin.
  • Math-Module dedupliziert. `computeLineTotal` / `computeTotals` lebten dreimal in den DB-Modulen (invoices/offers/expenses). Pure Math jetzt in `src/lib/utils/totals.ts`; die DB-Module re-exportieren. Tests decken damit den Production-Code direkt ab.
  • PeriodSwitcher: 6 svelte-check-Warnings zu `state_referenced_locally` behoben — `untrack()` für Initial-Snapshot der Period-Props.
  • NotFound-Screen poliert. Raw `text-neutral-500` → `text-muted-foreground`, Lucide-Icon, animierter Back-Link konsistent zur Unified-Hover-Konvention.
  • Doc-Refresh. README Buchhaltungs-Light/Dashboard/Daten-Sektionen um v0.14-v0.16-Features ergänzt (Katalog, Skonto, EPC-QR, Teilzahlungen, Bank-Import, Bulk-Aktionen, Auto-Backup, Onboarding, Liquiditäts-Vorschau, PDF-EN). Banking-Claim entschärft (kein Live-Banking, lokaler CAMT/MT940-Import existiert). Roadmap aktualisiert. CLAUDE.md Current-State auf v0.16.1 / schema 26 / release/v0.17.

Keine DB-Migration — Schema bleibt auf `user_version = 26`. v0.17 ist reine UI-/Code-Polish.

Test plan

  • `pnpm check` → 0 Errors, 0 Warnings
  • `pnpm test` → 134/134 grün
  • `cd sidecar && pytest tests/` → 71/71 grün (vorher 37 grün / 15 rot)
  • Manueller Smoke-Test `pnpm tauri:dev`:
    • Positions-Zeitraum-Popover in InvoiceEdit (leer, Einzeltag setzen, auf Zeitraum wechseln, Min-Date prüfen, Entfernen)
    • Selbes in OfferEdit (inkl. readOnly bei angenommenen Angeboten)
    • Selbes in RecurringEdit
    • Bestehende Rechnung mit Line-Period laden — Popover zeigt korrekt Range/Einzeltag
    • PDF-Generation roundtrip auf einer Rechnung mit Line-Period
  • `pnpm tauri:build` auf einer Plattform durchspielen

🤖 Generated with Claude Code

…· Doc-Refresh

Polish-Release. Drei Detail-Fixes plus eine ordentliche Test-Investition:

UI
- Neue LinePeriodPopover-Komponente (src/lib/ui/) — kompakter Chip-Trigger
  öffnet ein 300-px-Popover mit Tab-Switcher Einzeltag/Zeitraum, DatePicker(s)
  und Footer (Entfernen/Fertig). Befüllt zeigt der Chip den Wert mit
  Akzent-Border. Ersetzt den beengten Inline-Block in InvoiceEdit, OfferEdit
  und RecurringEdit. Detail-Beschreibungs-Toggle steht jetzt als zweiter
  Chip daneben — Beschreibungs-Cell deutlich aufgeräumter.
- NotFound polish: text-muted-foreground statt raw text-neutral-500, Lucide-
  Icon, animierter Back-Link konsistent zur Unified-Hover-Konvention (v0.13).
- PeriodSwitcher: 6 svelte-check-Warnings zu state_referenced_locally
  behoben — untrack() für Initial-Snapshot der Period-Props.

Code-Health
- computeLineTotal/computeTotals dedupliziert: pure Math jetzt in
  src/lib/utils/totals.ts, die drei db-Module (invoices, offers, expenses)
  re-exportieren. expenses passt sich semantisch an mit isKleinunternehmer:
  false.

Tests
- Vitest +47 (134 total, vorher 87): neue Suites currency.test.ts (24),
  date.test.ts (11), totals.test.ts (12). Coverage für Multi-Currency-
  Konvertierung, DST-Boundary, Storno-Vorzeichen-Propagation.
- Pytest-Sidecar +19 (71 total, vorher 52): test_i18n.py (14) mit DE/EN-
  Key-Parität + Placeholder-Drift-Check, test_line_period.py (5) für
  BillingSpecifiedPeriod-Emission im ZUGFeRD-XML.
- 15 zuvor stille Pytest-Failures auf Windows behoben — drei Test-Module
  riefen java/KoSIT ohne Stdin-Umleitung auf, KoSIT crashte beim
  FileInputStream.available()-Check auf Console-Handle. Same root cause
  wie v0.16.1 (validator.rs). Fix: leere reguläre Datei als stdin.

Docs
- README: Buchhaltungs-Light + Dashboard-Sektionen um v0.14-v0.16-Features
  ergänzt (Katalog, Skonto, EPC-QR, Teilzahlungen, Bank-Import, Bulk-
  Aktionen, Auto-Backup, Onboarding-Wizard, Liquiditäts-Vorschau, PDF-EN).
  Roadmap aktualisiert (EN-PDF shipped, EN-UI noch offen). "Banking"-Claim
  geschärft (kein Live-Banking, aber lokaler CAMT/MT940-Import).
- CLAUDE.md: Current-State auf v0.16.1 / schema 26 / release/v0.17 +
  Test-Suite-Übersicht.
- Version-Bump in package.json, tauri.conf.json, Cargo.toml, Cargo.lock.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@jonax1337 jonax1337 merged commit b18d9e5 into main May 22, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant