All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Budgets: dedicated pages for listing and detail, form with target picker across categories / groups / wallets, period presets plus custom range, rollover toggle, threshold slider, and forecast alerts; BudgetCard with progress bar and status chip
- Refund marking on income transactions: picker that searches all expenses, a visible "Refund" tag on list and spreadsheet views, and automatic budget adjustment when the refund posts
- Recurring transactions UI with period and interval controls
- Reminders page with pause / resume / snooze and translations for every supported locale
- Dashboard spreadsheet mode: pinned header and totals, client-side search, density-tuned grid sized for many rows
- Imports page: document upload and suggestion review with per-entity auto-create controls
- Transaction list server-side pagination and filter bar with date, wallet, and category filters
- AI chat UI rebuilt around sessions, with polling and a unified top-bar theme selector
- Onboarding "empty state" variant for budgets plus loading state on the final action button
- Persistent sidebar subtext (collapsible shell with nested sub-items for Budgets) and its translations
radix-vueprimitives for accessible dropdowns and menus
- Collapsible sidebar replaces the old always-expanded rail; state persists across reloads
- Dashboard layout scrolls inside the rounded card so corners stay visible
- Content tables share density tokens and sticky totals; transactions view picked up a spreadsheet trigger
- All list endpoints now loop through pages so users with large parties / wallets / categories no longer miss rows
- AI chat panel split into focused sub-components; dropdown open/close extracted into a composable
- Dropdown toggle no longer requires a double-click; chevron clears selection to allow re-selection
- Onboarding typo (
completOnboarding→completeOnboarding); duplicate handling and submit locks on forms - Dark-mode regression on the dashboard; stats now exclude transfer transactions from aggregation
- Dashboard stats display amounts in the user's configured default currency
- Currency options on the budget form read wallet currencies without a hardcoded length check
- Refund picker no longer hangs a while loop on unexpected pagination data
- Transfer transactions between wallets with exchange rate support
- Default indicator badge for groups in transaction form
- Dashboard stats now display amounts in user's configured default currency
- Configuration API falls back to create when updating non-existent config
- SearchableDropdown toggle now works correctly without requiring double-click
- Clicking dropdown chevron clears selection to allow re-selection
- Form updates failing with updated_at ISO 8601 validation error
- Wallet currency not syncing with user selection during onboarding
- Category selection not persisting when creating or editing transactions
- Dashboard with transaction overview and statistics
- Transaction management (create, edit, delete)
- Category management with icons
- Wallet management
- Party (payee/payer) management
- User authentication (email/password and OAuth)
- Onboarding flow for new users
- Dark mode support
- Internationalization (English, French, Spanish, German)
- Responsive design for mobile and desktop