What's Changed
📉 Unrealized loss alerts
MoneyMatter can now warn you when an investment holding falls too far below what you paid. Turn it on in Settings → General, then set a percent limit and an amount limit in your base currency (10% and 500 by default). Crossing either one triggers the alert. You get at most one in-app notification a day, and a holding stays quiet after its alert until it recovers.
🖼️ Logos for portfolios and venture deals
You can now set a logo for a portfolio or venture deal from its detail page. Portfolio, deal and loan lists and the sidebar show these logos instead of a placeholder icon, and so do transactions linked to a portfolio or deal.
🇧🇷 Brazilian Portuguese
You can now switch MoneyMatter to Brazilian Portuguese in the language settings. Thanks to @danielzin-DiGiTaL for the request.
📋 Paste images into upload areas
Paste a screenshot with ⌘V or Ctrl+V when adding transaction attachments, parsing a statement or matching an invoice. A paste button covers devices without a keyboard.
🤖 Long AI tasks on slow models
AI tasks such as reading a statement, matching an invoice or scanning for transfers no longer fail just because a slow model needs more than 5 minutes. If you self-host with a custom AI endpoint, set AI_CUSTOM_ENDPOINT_TIMEOUT_SECONDS to allow up to 60 minutes per call. The default stays at 5 minutes.
🐛 Bug Fixes
- With a category filter on the transactions page, the summary counted the full amount of a split transaction. It now counts only the share booked to that category. Totals without a category filter were already correct. Thanks to @ptiozzo for the report.
- The Net row in the pivot table counted linked refunds twice: a 10 expense with a 1 refund showed −8 instead of −9. The Income measure also no longer lists those refunds as income. Thanks to @ptiozzo for the report.
- Settings on the Balance Trend, Latest Records and Subscriptions Overview widgets, including turning off spike markers, did nothing until you had customized your dashboard layout at least once. Dashboards with a saved layout were not affected. Thanks to @saloid for the report.
- The statement parser rejected CSV and TXT files with a lot of non-Latin text, such as Georgian bank exports, as binary files. Mostly Latin files were not affected.
- In the transactions table view, incoming transfers showed the same arrow as outgoing ones. The arrow now points the way the money moved. The list view already showed the right direction.
- Custom exchange rates in Settings → Currencies now accept a comma as the decimal separator, and you can't save a blank or zero rate.
✨ Other Improvements
- The account page has a View all button that opens the transactions page filtered to that account.
- Settings → Currencies now shows rates as
1 USD = 0.892 EUR. - AI agents and registries can now find the MoneyMatter MCP server through a public catalog file.
📝 Code Changes
- feat: add unrealized loss alerts for investment holdings by @letehaha in b2a346e11
- feat: add portfolio and venture deal logos, show logos in all lists by @letehaha in b7b830a2a
- feat(i18n): add Brazilian Portuguese (pt-BR) as a community language by @letehaha in 90b073501
- feat: paste images into dropzones from the clipboard by @letehaha in 9b63bd473
- feat: run slow AI requests as background jobs with configurable timeout by @letehaha in 0b8f3af8a
- feat: add "View all" button to account page by @letehaha in 5f26d9e94
- feat: publish ARD ai-catalog manifest for agent discovery by @letehaha in c93f4b489
- fix: count only the filtered category's share of split transactions in the summary by @letehaha in eedc1917a
- fix: stop counting refunds as income in the pivot report by @letehaha in 632101620
- fix: save dashboard widget settings when the default layout is unsaved by @letehaha in 933846d01
- fix: accept non-ASCII CSV and TXT statements in import validation by @letehaha in b092ed42a
- fix: show correct money flow direction for income transfers by @letehaha in ae8829751
- fix: accept comma decimals in exchange rates and clarify rate format by @letehaha in 6971bd114
- fix(i18n): resolve regional locale tags instead of cutting at the hyphen by @letehaha in 3f6dce4ba
- chore: remove unused scheduled payments setting by @letehaha in d0ee5c9e8
- chore(i18n): new Crowdin translations by @letehaha in #816
Full Changelog: v0.33.6...v0.33.7