v1.4.0 — Budget lenses, household sharing & iOS accessibility
Budget lenses, household sharing, dashboard budget insights, trial reminders, envelope rollover, iOS accessibility, and subscription action links — with 354 Vitest tests.
Added
- Budget lenses — optional split presets (50/30/20, 80/20, 60/20/20, 70/20/10, custom), obligations-first / safe-to-spend, debt-focus with
debtFocusExtra, and envelope lite (Pro) on web, iOS, and Android. - Envelope editor & rollover (Pro) — assign per-goal and per-category envelope amounts on the Budget tab; optionally roll unused category envelopes into the next period.
- Dashboard budget status widget — safe-to-spend / lens headline as a reorderable dashboard widget.
- Richer dashboard alerts — high credit utilization, subscription trials ending soon, and 0% promo cliffs on web, iOS, and Android.
- Subscription action panel — cancel/manage links, duplicate detection, and
trialEndscountdown on subscription bills. - Trial-ending reminders — email via the scheduler lead window and local notifications on iOS/Android when a subscription trial ends within three days.
- Spending insights (Pro) — top category deltas vs the previous period on web and iOS.
- Budget onboarding — welcome flow toggle for detailed tracking vs one-tap 50/30/20 lens when Budget is a goal.
- Household sharing — create/join households, email invites, shared entity sync, and live SSE collaboration on web, iOS, and Android.
- iOS accessibility — Dynamic Type, VoiceOver labels, reduced-motion animations, and semantic amount/status presentation.
- 354 Vitest tests (up from 326).
Changed
- Settings → Budget lens and Family (household) on all clients.
- Entitlements include
householdMaxfor Pro vs Family tier caps. docs/competitive-roadmap.mdanddocs/native-contract.mdupdated.- Dependencies:
stripe22.3.0,@simplewebauthn/server13.3.2; AndroidversionCode4.
Fixed
- Contact page dark mode — legal/contact sub-panels no longer wash out against the dark hero shell.
Full changelog: https://github.com/Greigh/FiHaven/blob/main/CHANGELOG.md#140--2026-06-26