In this release an import stops guessing when it hits a cell it cannot read, and tells you which rows it skipped and why. Reauthorising an Enable Banking connection no longer duplicates the accounts it already imported, a closed account keeps its history in the period reports, and a balance in a currency with no rate is shown in its own currency instead of being passed off as converted. Securo can also be installed as an app now, Transactions and Reports remember the range you were looking at, and the new transaction form asks which account you mean instead of picking one for you.
Features
- Install Securo as an app. A web manifest with its icons, so the browser offers to install it and it opens in its own window. Closes #1052, by @jacklu97 (#1068) ๐
- Transactions and Reports remember the date range. The range survives a reload and moving between pages, and each report tab keeps its own. Closes #1053, by @rogeriocamorim (#1130) ๐
- The new transaction form asks which account. It used to preselect one, so a transaction could land on the wrong account without anyone choosing it. Closes #1114, by @patouinparis (#1194) ๐
- Hong Kong dollar and New Taiwan dollar. Closes #1187, by @vjymisal0 (#1190) ๐
- Twenty-two more category icons, covering mental health, debts, furniture, cleaning, lodging, school, sports and a wider range of foods. One of them,
heart-handshake, was already seeded into every workspace but missing from the catalogue, so that category showed a question mark. By @rodrigost23 (#1210) ๐ - Opt-in Traefik labels on the frontend service, for setups where the proxy's own domain UI does not turn into working labels on this compose file. Off by default. By @allanmedeiros71 (#1012) ๐
Fixes
- Reauthorising an Enable Banking connection created duplicate accounts. EB scopes an account's
uidto one session, so a new session renamed every account and the sync imported them again, leaving the originals and their transactions, rules and name overrides behind. It now matches on the identification hash, which survives. Closes #1013, by @Kernelkun (#1106) ๐ - Transactions from a closed account disappeared from the period reports, so closing an account rewrote months that had already happened. Closes #1112, by @rogeriocamorim (#1133) ๐
- A foreign balance with no exchange rate was shown as if converted. A EUR 100 account came back as 100 in the workspace currency and was summed into the available balance. The accounts list, the dashboard and the account page now show the native currency and say the rate is missing. By @vjymisal0 (#1195) ๐
- An import quietly dropped rows it could not read. A bad amount, rate, fee or date was guessed at or skipped in silence. CSV, QIF and CAMT files now list every skipped record with its line, its raw value and the reason. Refs #850 (#1219, #1220)
- A card's available credit ignored future-dated charges, so the accounts list and the account page disagreed about the same card. Closes #1185, by @shaynhornik (#1197)
- The Net Worth report counted a shared credit line once per card. Two cards on one consolidated line doubled the debt, in the report and in net-worth goals. Closes #1035, by @shaynhornik (#1192)
- The accounts page showed wrong balances when the range held more than 500 transactions, because the page was adding up only the rows it had fetched. They are computed on the server now. Closes #1202, by @APenalba (#1212)
- "Generate Pending" skipped schedules with auto-generate turned off, which is exactly when the button is the only way to create them. Closes #1145, by @shaynhornik (#1168)
- A Pluggy position could be marked as sold while you still held it, when the payload said withdrawn but still carried a balance and a quantity. Closes #819 (#1216)
- Future installments from Pluggy were dated on the day of the purchase instead of the month they are billed. Closes #1110, by @Gustavo-Marques19 (#1111)
- Re-linking a SimpleFIN bank created a second set of accounts when the institution row changed, instead of matching the ones already there. By @ADolkun (#1026)
- Transferring a category's entries lost the other category's budget schedules. Each month now still adds up to both categories' limits. By @ADolkun (#1094)
- Opening balances were counted as spending in the dashboard's spending by category. By @ADolkun (#1175)
- A split in another workspace was subtracted from this one's category composition, shrinking or hiding the Uncategorized bucket. By @ADolkun (#1176)
- Sorting by amount used the raw currency, so a converted 5 could sort after an unconverted 20 in a list that displays both in the workspace currency. By @ADolkun (#1092)
- A rule comparing an amount with equals or not_equals compared text, so 56.4 did not match 56.40. They are compared as numbers now. Refs #850 (#1221)
- A custom report range accepted dates that do not exist, like 2026-02-30, and an end before the start. Closes #840 (#1215)
- The transactions list served a stale page after another tab changed the data. Closes #763 (#1217)
- A manual sync reported success when it had been rate-limited and no fresh data came back. Closes #736 (#1214)
- The opening-balance description was always in Portuguese. Closes #1022, by @JuizSpeaking (#1067)
- First-run setup seeded the default categories in English in every language but Portuguese, even though the groups were translated. All seventeen are translated now. Closes #657, by @jacklu97 (#658)
- A batch price refresh read pence and cents as pounds and rand for London and Johannesburg listings. By @canuslector (#1169)
- Swagger's Authorize sent the login request to the wrong URL. Closes #1201, by @wavebyrd (#1209)
- podman-compose appended a "}" to FRONTEND_URL. Closes #1162, by @shaynhornik (#1193)
Under the hood
One migration, 097, adds a nullable stable_external_id to accounts for the Enable Banking fix; it is additive and backfills itself on the next sync ยท a contract sweep now checks every route's status codes on each run, by @rogeriocamorim (#1164), with the one route it was missing added right after (#1186) ยท the em dashes that slipped into comments, .env.example and the compose files were replaced, and the PWA manifest's splash colour now matches the dark theme the app actually ships (#1222)
Thanks @jacklu97, @rogeriocamorim, @patouinparis, @vjymisal0, @rodrigost23, @allanmedeiros71, @Kernelkun, @shaynhornik, @APenalba, @Gustavo-Marques19, @ADolkun, @JuizSpeaking, @canuslector and @wavebyrd for the code and the reviews, and @N8-Yue, @mjb2k, @PD19Anime2, @soldier99, @totti4ever, @fireb1rdz, @Didjacome, @czanette, @rodrimaia, @gh2137, @jzimath-lab, @fam4r, @cassini1010, @Baltair, @alwarnecke and @Audionut for the reports ๐
Full Changelog: v0.16.4...v0.16.5