Turns on the calendar extension (built Feb 2026, stripped in the 2026-03-02 production readiness deploy, never re-enabled): ICS feed settings, calendar workspace, subscribe button on the Viktiga datum page.
Hardening before first real use: feed serve route now requires the creator to still be a company member (offboarding stops the feed); stable pagination (due_date + id, dedupe) on feed queries; fetches inside the logged try block; invoice events limited to sent/paid/partially_paid/overdue; event UIDs rebranded to accounted.se while zero feeds exist; APP_URL fallback fails closed in production; mobile stacking for the deadlines header; settings note that Google Calendar needs default notifications on subscribed calendars; calendar workspace aligned with the design system.
Skeptic reviewed (3 refutations, all fixed) plus one compliance swarm finding (fixed). No migrations.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Fixes#1173. invoices.total_sek stays NULL when the Riksbanken rate
fetch fails at creation, and every `total_sek || total` fallback then
treated a raw foreign amount as kronor:
- lib/calendar/utils: new invoiceSekAmount() returns null for
unconverted non-SEK invoices; period summaries and day totals skip
them and PeriodSummary exposes unconvertedCount. PaymentSummaryCard
shows a one-line note when invoices were excluded; CalendarDayView
renders each invoice in its own currency instead.
- Deadlines page: the overdue attn sum now skips unconverted FX
invoices and appends "(+N i utlandsk valuta)" instead of adding EUR
into a kr total.
- Supplier-invoice payment toast formats the amount with the invoice's
currency (key drops its hardcoded " kr" in both locales).
- AR aging drill-down row labels Betalt with the invoice currency,
mirroring the outstanding cell.
- BankFileColumnMappingStep: comment pinning why SEK is safe there
(generic-csv hardcodes it).
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Add LICENSE (AGPL-3.0-or-later), CONTRIBUTING.md, SECURITY.md, DCO, and NOTICE files.
Rewrite README for open-source audience with self-hosting instructions.
Redesign color palette to grayscale chrome theme across all components.
Add transaction uncategorize API route with tests.
Fix VAT account name mismatches in migration 052.
Improve import page with SIE file support and loading skeleton.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>