Release sent to TestFlight, App Store (pending approval), and Play Store Closed testing (email daniel@fihaven.app to get access).
Bank linking now actually imports something, cards tell you when they're due and let you skip a payment, and the dashboard shows who's really taking the money. Under the hood: two data‑loss bugs fixed and the reason notification emails were quietly going missing.
⚠️ Data loss — fixed
- Changing a setting could erase your data. Changing currency, timezone, default view, or a bank toggle saved only part of your account and the server treated the rest as deleted — wiping your Spending transactions, net‑worth accounts, and savings goals. Fixed and covered by a test.
- Autopay auto‑marking could erase the same data on a different code path. Also fixed.
Bank sync (Plaid) — it works now
- Linking a bank actually imports something (it used to just connect and stop)
- We ask what you want right after linking — import purchases, update card balances, or neither
- Syncs on its own — on link, on app open, on a webhook, and the moment you turn importing on
- Your history is no longer thrown away when importing is off
- Accept or decline a pending bank charge — Keep it or remove it, and a declined charge never comes back, even after it settles under a new id
Cards
- See when a card is due — the actual date ("Due Jul 28 · in 15 days", "Overdue — was due Jul 12")
- Skip a payment (with a warning if you still owe the minimum)
- "Already paid this month?" when you add a card, so its 0% payoff plan starts from the right place
Rewards
- Report a wrong reward rate — corrects your card immediately and tells us so the shared presets get fixed for everyone
Dashboard
- Upcoming rows show the business (or a card's issuer) under the name
Notifications
- A failed reminder email is retried instead of silently dropped
- The hourly scheduler no longer drifts past the hour it should send in
📄 Full technical detail in the CHANGELOG.