Features
Analytics Page: Full-featured analytics dashboard with KPI cards, cash flow trend chart, net worth progression, spending patterns by day-of-week, top spending categories, and income sources breakdown. Includes PDF export via QuestPDF for selected periods. Implemented on both desktop and mobile (simplified).
Auth Error Handling: Map Supabase GotrueException errors to AuthError enum with user-friendly messages for login and signup. Display errors in sign-in and sign-up panels.
Dynamic Transaction/Account Counts: Replace hardcoded "46 transactions" and "4 accounts" text with FilteredTransactionCount and ActiveAccountCount properties bound to actual data.
Fixes
Budget Period Navigation: Fix year-aware date comparison in CanGoToPreviousPeriod and CanGoToNextPeriod. Previously only compared months, preventing navigation before January of current year.
Changes
AnalyticsViewModel: Period selector, KPI calculations, chart data builders (cash flow, net worth, day-of-week, top categories, income sources), PDF export
PdfExportService: QuestPDF report generation with print-optimized styling
AuthViewModel: Error display with GotrueException mapping
BudgetViewModel: Year-aware period navigation
TransactionsViewModel: FilteredTransactionCount property
AccountsViewModel: ActiveAccountCount property
MainViewModel: Analytics navigation and AnalyticsViewModel integration
Views: Analytics button wired, error messages displayed, count bindings updated
- Primary account determines app-wide reference currency; all totals, charts, and summaries convert to it automatically using live rates
- Transactions show both converted and original amounts for cross-currency accounts; IsMultiCurrency recalculates on primary currency change
- Exchange rates fetched live on account save and broadcast via RatesRefreshed so all views update without a restart
- Account create/edit/delete with currency, icon, color, and primary toggle
- Budget create/edit/delete; savings goal dialog
- Settings view: display name, avatar upload, theme, language
- Removed currency selector from Settings (follows primary account)
- Fixed account list sort: primary first, then oldest CreatedAt, per group
- Fixed total balance overlap in dashboard accounts card