Magic Bill v2.2.0
Offline-first data (the big one)
- The app now keeps a local SQLite mirror of your bills, daily summaries, and expenses. Dashboards and reports work fully offline for any date range — last synced data is always on your phone.
- Syncs incrementally and automatically, including the moment internet connectivity returns.
- The phone retains ~92 days of bill history — more than the live backend keeps.
Sign-in & reliability
- Fixed the app getting permanently stuck on a blank screen after a failed login.
- New subscription gate: signed-up-but-not-subscribed users see a proper "No Active Subscription" screen with Subscribe / Refresh / Log out (with automatic re-check while a payment is activating).
- Accurate error messages mapped from the real cause (auth errors, timeouts, server errors, no internet).
- Startup can no longer hang or land on a blank screen; every state renders a real screen with recovery actions.
UI
- Reports no longer flicker/jump when switching Today / Yesterday / 7 days / This month — content swaps in place and glides to the top.
- Redesigned Account page: identity hero, friendly plan name (no more raw plan ids), POS license key masked with tap-to-reveal, theme toggle as a sun/moon header icon, compact device info.
- Back button: inner tabs return to the dashboard; double-press to exit.
🤖 Generated with Claude Code