Last updated · May 17, 2026

Changelog.

We ship in public. Here’s what’s new, newest first.

Launch

SaaS launch readiness

  • Privacy-first auth — sign up with an account number, no email required.
  • Stripe-backed subscriptions: $8/mo, $60/yr, pay-what-you-want, lifetime tier.
  • GDPR endpoints: GET /api/me/export, DELETE /api/me. One JSON file in, one nuke out.
  • Per-user OpenRouter quotas, Sentry-based observability, recovery flow via Cloudflare email.
Feature

Background AI audit

  • The audit re-categorize run now happens off the request path — no more 504s on long histories.
  • Real-time progress over SSE, fully restartable mid-run.
  • Chat can now create categorization preferences from a single message ("never categorize Spotify as Other").
Redesign

Apple Wallet warm-minimal redesign

  • Whole-app visual rewrite: warm palette, generous spacing, dark mode by default.
  • Dashboard rebuilt around a single hero number + 6-month trend + section breakdown bars.
  • New Pill, Amount, Segmented primitives; Card variants with shadow-card / shadow-raised.
Data

Cash-as-asset model + on-demand audit

  • Cash, taxes, fees, and business sections promoted to first-class assets in net calculation.
  • Settings → Audit re-runs categorization across history with one click. Recovered 48.7K EUR of income mislabeled as Other on the first internal test.
  • 50 transfer pairs auto-linked, 11 duplicates flagged for review.
Redesign

v2 simplified UX

  • Schema rewrite: sections (8 built-ins) → categories → transactions. countsAsOut flag drives net.
  • 66 individual tasks shipped behind a single migration; legacy flat columns dropped.
  • New Settings → Sections + Categories pages, drag-reorder, color picker, audit log with per-row undo.
Platform

Realtime architecture

  • Per-user SSE bus for cross-tab and cross-page sync. Upload progress, new transactions, preference changes all push live.
  • Mobile dashboard hydrates from the same stream — no manual pull-to-refresh required.
Feature

Refresh-safe upload pipeline

  • POST /api/upload now returns 202 immediately; the parse job runs detached.
  • Refresh mid-upload no longer kills the work. A "Resume" banner re-hydrates from /api/uploads on the next visit.
  • Three-layer dedup (statement number, exact, fuzzy ±1 day) plus post-save R1–R5 rules.
Feature

Multi-bank account auto-detection

  • Separate AI call per uploaded file detects the owning bank account from the filename + first 10 rows.
  • New accounts are created atomically with the transactions write — no orphan rows on failure.