Currency dropdown now uses 30 currencies from ExchangeRateService.
Defaults to base currency from settings. Selecting a different
currency fetches the exchange rate asynchronously and displays it.
Rate is stored with the transaction on save.
ExchangeRateService fetches rates from fawazahmed0/exchange-api with
Frankfurter API as fallback. Rates are cached in SQLite for 24 hours.
Includes response parsers, 30 supported currencies, and 8 unit tests
covering parsing, caching, and same-currency identity.
Click a transaction row to open an edit dialog with pre-filled amount,
date, and note fields. Save updates the database and refreshes the
list. Delete button shows a confirmation dialog before removing the
transaction. Toast notifications for all actions.
Month navigation with prev/next buttons, transactions grouped by date
with headers (Today/Yesterday/formatted date), category icons, amounts
color-coded green for income and red for expenses, and daily net totals.
Initialize SQLite database at XDG data directory on app startup.
Categories now load from database with emoji icons. Save button
validates input, inserts transaction, shows toast notification,
clears the form, and refreshes the recent transactions list.
AdwNavigationSplitView with six sidebar items (Log, History, Charts,
Budgets, Recurring, Settings) and placeholder StatusPage content that
switches via crossfade transition on selection.