In this release we added contract tracking for financing and loans: a mortgage, a car or other financing, a student or personal loan can now be tracked for its whole term, with the real contract behind it. Give it the amount, the rate, the term, the first payment and the amortization (Price or SAC), and Securo works out the payment schedule, splits the next payment into interest and principal, and shows when it will be paid off, both on the contract's terms and at the rate you are actually paying it down. You can break a recorded payment into principal and interest against the property it pays for, turn a bank-connected account into one of these, and enter the balance the lender reports so an indexed or renegotiated contract keeps matching it. We also added monthly budget rollover, surplus analysis and a multi-month forecast, a one-click suggestion of budget limits from earlier months, net cash-flow bars in Reports, a dashboard chart that compares a month against earlier ones, and more ways for the built-in MCP server to propose edits. On the fixes side, both sides of a group split now see the same balance, projections count only your share of a split, and open connections survive a database failover.
Features
- Financing and loans with a contract, a schedule and a payoff. Give a mortgage, a car or other financing, or a student or personal loan its amount, rate, term, first payment and amortization (Price or SAC); Securo computes the schedule on read, shows the next payment split into interest and principal, and tracks the payoff by the contract and at your current pace. The lender's statement can correct the balance at any time, with or without terms. Refs #344 (#1234)
- Split a recorded mortgage payment into principal and interest, against the property the loan is secured against. By @eilandnl (#1288) ๐
- Loan overrides on a bank-connected account, so a connected loan carries its own contract terms and keeps the right debt sign through sync. By @loebpaul (#1286) ๐
- Monthly budget rollover and multi-month forecasting. Copy a month's budgets forward, see the surplus or overspend, and forecast across the coming months. By @vjymisal0 (#860) ๐
- Suggest budget limits from previous months, in one click from your recent spending. Refs #430 (#1295)
- Net cash-flow bars in Reports. Closes #1241, by @christiansegercrantz (#1303) ๐
- Compare the dashboard's balance evolution against a chosen month, reading the current month against that month's median and middle-50% range. Closes #1154, by @christiansegercrantz (#1155) ๐
- MCP: propose edits to a transaction's notes and tags, and create category groups. Closes #1278, by @PedroHenriqueFernandes (#1279) ๐
- MCP: propose updates to goals and budgets, and delete a budget. Closes #1312, by @PedroHenriqueFernandes (#1313) ๐
- The built-in MCP server speaks the 2026-07-28 Streamable HTTP transport, dual-era with the older one. Closes #946, by @luqmanbello (#1308) ๐
Fixes
- A linked member saw the workspace's balances, not their own. Closes #1275, by @shaynhornik (#1290) ๐
- Credit settlements posted outside the group's workspace instead of crediting it first. Closes #1143, by @vjymisal0 (#1196) ๐
- Splitting a credit reversed the debt direction, so the split read backwards. Closes #1326, by @rodrigost23 (#1327) ๐
- Group totals were read from the recent list rather than the aggregates, so a long history undercounted. Closes #1107, by @ivantrejo41 (#1287) ๐
- Projections counted the whole amount of a split pending or future row, not just the owner's share. Closes #1343, by @Gustavo-Marques19 (#1344) ๐
- A manual credit-card cycle disappeared from the statement view. Closes #1330, by @jay-glasswala-2110 (#1354) ๐
- A deleted quick-chat conversation was remembered on reload. Closes #1319, by @shaynhornik (#1348) ๐
- The transfer category prompt overflowed on mobile. Closes #1320, by @hrq-chiuchi (#1331) ๐
- The dashboard comparison plot lost its footer. By @christiansegercrantz (#1324) ๐
- The cash flow chart was not aligned to whole months. By @christiansegercrantz (#1328) ๐
- The MCP aggregate counted treat_as_transfer categories. Closes #1342, by @shaynhornik (#1347) ๐
- Ignored rows showed up in the dashboard's pending categorization. Closes #1336, by @shaynhornik (#1346) ๐
- Enable Banking treated colliding entry_reference values as one transaction. Closes #753, #1063, by @chrisonline (#1071) ๐
- An Enable Banking connection stayed active after the bank ended consent; it is marked expired now. Closes #1061, by @charlitosf (#1108) ๐
- REGISTRATION_ENABLED now decides until an administrator saves a value. Closes #1274, by @PedroHenriqueFernandes (#1277) ๐
- nginx blocked attachments over 1 MB. By @viktoravelino (#1237) ๐
- The loan schedule opened on the first installment, hundreds of rows above where a mortgage actually is; it opens on the current one. (#1323)
- A balance chart dropped the sign from its axis labels. (#1322)
- Transaction description badges spilled out of their column. Closes #1306 (#1315)
- An amount's sign was ignored in rule conditions. Closes #981 (#1294)
- The loan contract card was a flat list; it now matches the app's stat tiles, with a status pill and a payment-progress bar. (#1314, #1365)
Under the hood
Four migrations land with the loan work and the housekeeping: 099 adds the loan contract terms, 101 the mortgage payment allocations, 100 lets the registration setting follow its env var until an administrator saves it, and 102 backfills Enable Banking external ids; all additive ยท the duplicate 099 revision on main was resolved (#1321) ยท the database enables pool_pre_ping so connections survive a PostgreSQL failover, by @tiagoflino (#1311) ยท Compose waits for migrations before starting the workers, by @ADolkun (#1084) ยท the api-contract suite builds its world once per worker and restores it per case, by @ADolkun (#1350) ยท the release bump (#1367)
Thanks @eilandnl, @loebpaul, @vjymisal0, @christiansegercrantz, @PedroHenriqueFernandes, @luqmanbello, @shaynhornik, @rodrigost23, @ivantrejo41, @Gustavo-Marques19, @jay-glasswala-2110, @hrq-chiuchi, @chrisonline, @charlitosf, @viktoravelino, @tiagoflino and @ADolkun for the code and the reviews, and @alheureux88, @viniciuscmartins, @czanette, @hamburgercowgoldfish, @dondelfuego, @METZGERRR, @zunami, @8hnd2g9xs2-sys, @aniqjaved-png, @jfrcom, @willemsFEB and @Casmei for the reports ๐
Full Changelog: v0.16.6...v0.17.0