github securo-finance/securo v0.16.6

3 hours ago

In this release we added a loan account type that links to a property and shows the equity left on it, a System theme that follows the operating system, and a reworked date range selector in Reports with month presets, period navigation and a year picker. Agents can now be started from a template instead of a blank form, a selection of transactions can be acted on from a context menu, and a pending row can be marked as posted in one click. On the fixes side, cash a bank auto-invests is no longer counted twice, an asset in a currency with no rate stays out of the primary-currency totals instead of being passed off as converted, group balances are computed from who actually paid, and a SimpleFIN access URL keeps syncing its healthy accounts when one bank behind it needs reauthorization.

Features

  • Loan accounts linked to a property. A loan can name the real-estate asset it is secured against; the expanded property lists its loans with the debt and the equity left, and the dashboard shows loans as their own row instead of folding them into the available balance. Refs #344, by @eilandnl (#1055) ๐ŸŽ‰
  • A System theme that follows the OS. The theme button now steps Light, Dark, System, and System switches with the operating system. Closes #1203, by @shaynhornik (#1227) ๐ŸŽ‰
  • Month presets and period navigation in Reports. The range selector gained This month and Last month, and arrows that step the window you are looking at back and forward by its own length. Closes #519 (#1244)
  • A year picker for the Reports range. Pick a year from the selector instead of entering two dates. Closes #765 (#1273)
  • Built-in agent templates. Four ready agents (savings advisor, monthly review, budget watch, recurring audit) that create in one click and stay yours to rename and edit. Closes #1188 (#1271)
  • A context menu for bulk actions. Right-click a selection in the transactions list to categorize, add to a group, tag or delete it, the same actions as the selection bar. By @rodrigost23 (#1235) ๐ŸŽ‰
  • Mark a pending transaction as posted in one click, from the row, instead of opening the edit dialog to change the date. Closes #1144 (#1253)
  • A refresh button on the dashboard, accounts, rules and categories, for when the data changed somewhere else. Closes #764 (#1248)
  • Each card's own open bill on a shared credit line. Cards on one consolidated line used to print the contract-wide balance each, so a two-card line read as twice the debt. Closes #684 (#1256)
  • The transfer badge names the linked account, so a page of transfers says where the money went without opening each row. Closes #810 (#1270)
  • Transfer-pair tools in the built-in MCP server: list counterpart candidates, propose a link and propose an unlink. Closes #1172 (#1268)
  • A link to the documentation from the account menu. Closes #834 (#1245)
  • The automatic bank sync interval is configurable through BANK_SYNC_MIN_INTERVAL_HOURS, for banks that cap unattended access at four times a day. Default stays 4 hours. By @Superesty (#1283) ๐ŸŽ‰
  • A stable session header and an app user agent on OpenAI requests, for OpenAI-compatible backends that reject a chat without them. Closes #1100, by @b3ni (#1249) ๐ŸŽ‰
  • Georgian lari (GEL). Closes #890 (#1272)
  • South African rand (ZAR). Closes #1200, by @shaynhornik (#1225) ๐ŸŽ‰

Fixes

  • Group balances ignored who actually paid, so the two sides of a split saw different debts. They are computed as one ledger from the payer of each expense now. Closes #1062, by @shaynhornik (#1198) ๐ŸŽ‰
  • Cash a bank auto-invests was counted twice. Pluggy reports the idle balance moved into an investment on the account and again as a holding, so net worth double counted it. Closes #843 (#1218)
  • An asset in a currency with no exchange rate was summed as if converted. A 500 GBP asset landed in the totals as 500 in the display currency; unconvertible assets are now left out of the primary-currency totals instead. Closes #574 (#1266)
  • The dashboard's net worth mixed currencies silently when a rate was missing, the way the accounts list already warned about. It now says the total is incomplete. Closes #1165 (#1265)
  • A low-priced holding converted to 0.00 and dropped out of the totals, because every conversion was rounded to two decimals. Asset values keep their precision now. Closes #622 (#1251)
  • A mid-cycle card payment never lowered the bill total, so the running balance and the bill disagreed on the same card. Closes #668 (#1267)
  • A manual bill override landed on the wrong bill when the due date fell inside the next cycle's purchase window, leaving the earlier bill empty. Overrides are assigned by due-date range now. Closes #563 (#1293)
  • One expired bank behind a SimpleFIN access URL aborted the whole sync, so healthy accounts under the same URL missed their transactions and the only way out was a new access URL. Closes #1077 (#1269)
  • A SimpleFIN claim carrying one bank's auth warning was refused entirely, even with usable accounts from another bank in the same payload, and a connection in the error state offered only Reconnect. It now accepts the usable half and offers a retry sync. Closes #1147 (#1230)
  • A slow first bank import reported "Failed to connect bank" when it had actually succeeded. The callback gets a longer timeout and the dialog waits for the connection to appear. Closes #1148, by @shaynhornik (#1199) ๐ŸŽ‰
  • A transfer-category row was badged as a transfer in some lists and not others, although the totals left it out everywhere. Every list marks it now. Closes #993 (#1231)
  • "Unlink transfer" unlinked on the first click, and the freed debit leg started counting as an expense in the reports. It asks for confirmation now. Closes #1160 (#1257)
  • Editing a manual account moved its opening balance to today. Closes #1204, by @shaynhornik (#1226) ๐ŸŽ‰
  • A workspace's amount rule was ignored when matching a recurring bill, which a foreign-currency charge needs to be matched at all. Closes #1073, by @APenalba (#1213) ๐ŸŽ‰
  • An imported charge was never linked to its recurring bill, so generating pending bills added a duplicate placeholder beside it. Refs #1073, by @wavebyrd (#1233) ๐ŸŽ‰
  • The icon picker's tooltips and search were Portuguese in every language, so searching health in English found nothing. Closes #880 (#1246)
  • The investment import hid the column mapping once it resolved, leaving no way back to the dropdowns after picking the wrong column. Closes #699 (#1250)
  • A long security name widened the add asset dialog instead of truncating. By @JordanCampos20 (#1229) ๐ŸŽ‰
  • The net worth trend chart always included zero, which flattened ordinary changes at a large balance. It scales to the range now. By @eilandnl (#1101) ๐ŸŽ‰
  • OIDC_SCOPES broke deploy scripts that source the .env file, because the value contains spaces and was shown unquoted in the templates. Closes #887 (#1247)
  • The Reports period selector stepped a picked year back thirteen months and printed its month names in the currency's language rather than the app's (#1298)

Under the hood

One migration, 098, adds a nullable secured_asset_id to accounts for the loan and property link; it is additive and clears itself if the asset is deleted ยท the net worth chart's axis helpers, the period window math and the range formatting moved into their own tested modules as the Reports selector grew ยท the release bump (#1300)

Thanks @eilandnl, @shaynhornik, @rodrigost23, @Superesty, @APenalba, @wavebyrd, @JordanCampos20, @b3ni, @Langras and @Guflly for the code and the reviews, and @alheureux88, @iiloni, @looic78-hub, @gh2137, @vitorrsousaa, @czanette, @vhsantos26, @roziscoding, @gamesbook, @ImesashviliIrakli, @digictl, @MJanssen13, @aqlmsmdrluna, @METZGERRR, @szddawe, @Krishnamarda, @KgbGaming, @NSunGod12, @42demian42, @tigeragama-ux, @runnylogan, @lethanhviet, @jorishaenseler15, @negue and @b52src for the reports ๐Ÿ’œ

Full Changelog: v0.16.5...v0.16.6

Don't miss a new securo release

NewReleases is sending notifications on new releases.