What's Changed
🧹 Reconciliation for bank-synced transactions
In MoneyMatter you can't delete transactions that come from a bank connection. Sometimes a bank sends a wrong one anyway: the same payment twice, a card hold that was never charged, or a pending payment that sits there for weeks. Open Transactions → Optimizations → Reconciliation to clean them up.
- Merge 2 to 4 copies of the same payment on one account. You pick the copy to keep, and it takes over the budget, group and subscription links of the others.
- Remove up to 500 transactions that shouldn't be there. Your next bank sync won't bring them back.
- Stuck pending lists Enable Banking payments still pending after 7 days. Press Check with bank, then merge each one into its booked copy, keep it as booked, or remove it. A daily notification tells you when new ones get stuck.
- History lists every merge and removal. Press Restore to undo one.
Your account balance keeps following your bank. Removed transactions stop counting in your stats.
🔗 Choose where the balance gap goes when you link an account
When you link an existing account to a bank connection, the link dialog shows the difference between your MoneyMatter balance and the bank's. You decide how to cover it: one balance adjustment dated at the link, or a change to the account's opening balance. Until now MoneyMatter always changed the opening balance. For credit cards, both figures leave out the credit limit, and the account takes the credit limit your bank reports.
📊 Dashboard widgets
- Recurring payments has a chart of payments due over the next 30 days, which you can hide in the widget settings. Due and overdue payments get their own colour, and hovering a row explains its status.
- Planned lists all your planned transactions in a scrollable list, not only the nearest four. The projected balance stays in the header while you scroll.
- Latest transactions can show tags as thin colour bars. Hover a bar to see the tag name. Chips stay the default.
🗓️ Planned transactions tucked away
In the transactions table and lists, planned transactions sit behind one row that shows how many there are. Click it to expand them.
🐞 Bug fixes
- With Enable Banking and pending imports turned on, a payment could stay pending forever if your bank stopped listing it as pending before it listed the booked copy. MoneyMatter now finds the booked copy.
- Some banks flag a pending payment with the wrong direction, income instead of expense or the reverse. With Enable Banking pending imports, that left you with two rows once the payment booked. The booked copy now replaces the pending one and sets the direction.
- Importing a PDF invoice with AI failed with "Unsupported chat content part type: 'file'" when your AI connection used a custom OpenAI-compatible server such as vLLM or Ollama. Those connections now read the PDF's text, or its pages as images for scans. Other AI providers and image invoices were never affected. Thanks to @MatteGary for the report.
- FIRE milestones you had already passed (25%, 50%, 75%) showed the current month as the date you reached them. They now show the month your history first crossed each one.
- On phones, the Latest transactions, Recurring payments, Planned and Credit utilization widgets stay one cell tall. Large amounts in Balance trend, Cash flow and Net worth shorten to fit the widget.
- Budget cards and transaction group summaries shorten large amounts (12.3K) instead of wrapping them, and the minus sign stays next to the number.
- A long payee name no longer pushes the bulk edit dialog past the edge of the screen.
- Tooltips with wrapped text no longer leave empty space on the right.
📝 Code Changes
- feat: Reconciliation screen by @letehaha in #675
- fix: Fix bunch of app issues by @letehaha in #672
- chore(i18n): new Crowdin translations by @letehaha in #671
- fix(transaction-groups): compact summary amounts and keep sign inline by @letehaha in daa9881a7
- feat(transactions): collapse planned rows behind an expandable row by @letehaha in 7b4adb71a
- fix: improve empty state by @letehaha in b5025f501
- fix(budgets): compact card stat amounts and keep sign inline by @letehaha in d186184fb
- feat(dashboard): redesign recurring payments and planned widgets by @letehaha in 83ab75501
- feat(dashboard): add colour-bar tag style to Latest Transactions widget by @letehaha in 0465d25ce
- fix(dashboard): cap list widgets to 1x1 height on mobile by @letehaha in ea760f1e6
- fix(dashboard): fit widget contents on mobile by @letehaha in e1a443749
- fix(invoices): read PDF invoices on custom OpenAI-compatible AI by @letehaha in 42008e728
Full Changelog: v0.30.1...v0.30.2