{ "version": "0.17.2", "notes": "### Added\n\n- Import: a warning names the CSV files placed directly in the import folder, which are ignored (#427).\n- Getting started: two visit steps, “Browse categories and keywords” (before categorizing) and “Browse the reports” (last), checked with “Got it”; a profile that had finished the path finds them already done; their cards, on the Categories and Reports pages, explain keywords and the reports hub (#425, #432).\n\n### Changed\n\n- The \"Parent category\" field of the category form and the \"Category\" field of the \"New keyword\" dialog (right-click on a transaction) now take typing, like the category cell of the Transactions page: type a few letters to filter the list, which shows the hierarchy with indentation and the names of the standard categories in your language. The parent list no longer offers the category being edited, its own sub-categories, or a parent that would create a fourth level; a parent already stored stays shown. The keyword dialog offers the same categories as the Transactions page (active and allowed for input) and keeps the pre-filled category only when it is among them; its two fields sit above the scrolling list of matches, so the open category list is never cut (#423).\n- One copy is kept per profile in the `migration-backups` folder: the copy taken before a database update is now taken again at each update, and once the update succeeds, the older copies of that profile are deleted. A copy left by an update that stopped is no longer reused as is, since it predated what you entered after it. When an update stops, the Journal now names the copy taken before it (#395).\n- Import: the empty state shows the expected structure (a parent folder, one subfolder per account), and the getting-started cards ask you to choose the parent folder and to check that an expense counts among the outflows (#422).\n- Getting started: the Transactions card explains keywords and suggests “Add as keyword”; the Budget card states that only last-level categories take an amount and what the Annual column does (#430).\n- Splitting a transaction across categories (the Split button of the Transactions page) is now part of the Base edition, as the unlock screen already promised. On the Free edition the button keeps its place, shows a lock and opens the unlock screen instead of the split window, for every row. Splits made earlier stay in your data: they are still counted in the reports and the dashboard, and still flagged in the list (#369).\n\n### Fixed\n\n- The startup error page no longer stays on screen when the profile finishes opening after the 10-second delay: the app now shows as soon as the profile is open (#395).\n- In French, the small badge next to the \"Fetch price\" button of a stock in the Balance sheet now reads \"non garanti\" instead of the English \"best-effort\" (#389).\n- Installs from the `.rpm` package now receive automatic updates. The update manifest only listed the `.deb`, which an `.rpm` install downloaded and then refused; it now lists each Linux package under its own key. Existing `.rpm` installs need no reinstall: they will receive the next version (checked on the published v0.17.1 package). The download instructions of the release page no longer mention an AppImage, which is not built, and now name the `.rpm`. The manifest no longer has a generic Linux entry: the AppImage builds of 0.4.3 to 0.4.5, which could not install the `.deb` it pointed to and were broken by it, now report an error when checking for updates instead; install the `.deb` or `.rpm` package (#320).\n- Budget: an expanded subcategory now shows under its parent category instead of at the end of the group. With subtotals at the bottom, each subtotal follows its own rows, in the Budget grid as in the Budget vs Actual and Compare reports (#424).\n- Import: a source is named after its subfolder, read-only; a source renamed during configuration is no longer taken for a new source at the next import (#426).\n- Help and guide: Budget describes typing in the Annual column (no more split button) and that only last-level categories take an amount; Reports have five cards and no tabs; adding a keyword from a transaction goes through the right-click menu (#431).\n- Deleting a profile, a category, an adjustment, a budget template or a Balance sheet category, and removing the license key, now wait for your answer to the confirmation. Until now the action ran as soon as the confirmation appeared, and “Cancel” stopped nothing: a deleted profile lost its data. The confirmation buttons now follow the app language (#421).\n\n### Security\n\n- Updated npm dependencies to clear the eight vulnerabilities reported by `npm audit` (five high, three moderate), through the lockfile alone: every new version stays within the range `package.json` already declares. `react-router-dom` and `react-router` 7.18.1 → 7.18.4 clear GHSA-qwww-vcr4-c8h2 (CSRF in React Server Components mode), the advisory left as is until now because leaving its range seemed to require migrating to react-router v8; 7.18.2 fixed it. The rest is build and test tooling, never shipped in the app: `vitest` and `@vitest/mocker` 4.1.9 → 4.1.11, `browserslist` 4.28.4 → 4.29.3, `baseline-browser-mapping` 2.10.41 → 2.11.28, `nanoid` 3.3.16 → 3.3.20 and `source-map-js` 1.2.1 → 1.2.2. None of these advisories was reachable in the shipped app, which runs react-router in its own window, with no server. Of all these updates, only react-router's changes the built app: it now refuses a navigation to another origin, which the app never makes, so navigation behaves as before (#358).\n- Updated the Rust dependency `rustls` (0.23.45 → 0.23.46), clearing RUSTSEC-2026-0346, RUSTSEC-2026-0347, RUSTSEC-2026-0348 and RUSTSEC-2026-0349. `rustls` is the TLS layer of the automatic update check and download, reached through `tauri-plugin-updater`; the application's own licence, authentication, market-price and feedback calls use a different TLS backend. None of the four applies to how the application uses it: no custom session store exists that could log session secrets (0346), Encrypted Client Hello is never enabled (0347), the optional Brotli certificate decompression is not compiled in (0348), and the `ring` cryptography provider offers no post-quantum key exchange that could be downgraded (0349). Updated anyway rather than reasoned around, since a fix exists. Nothing in the application's own code changes — only the lockfile moves, and `Cargo.toml` is untouched. What changes is the TLS layer's own behaviour: besides these four fixes, 0.23.46 carries about ten other corrections (protocol conformance, hardening, I/O), such as rejecting protected `change_cipher_spec` records and performing TLS 1.3 key updates on time (#447).\n- Removed the archive extraction of the automatic updater (its `zip` dependency on Windows and `tar` on Linux), clearing RUSTSEC-2026-0367, RUSTSEC-2026-0368 and RUSTSEC-2026-0369. The updater only extracted an update that arrived as an archive (a zip on Windows, a `.tar.gz` AppImage on Linux), after checking its signature, and this application's updates are never archives: the Windows installer (`.exe`) is run as it is and the Linux packages (`.deb`, `.rpm`) are installed by the system's package manager. None of the three advisories, two of which concern Unix permissions while `zip` was only compiled for Windows, was reachable; the dependency is removed rather than reasoned around, since no fixed version fits the updater. Updates of the Windows installer and of the Linux packages work as before (#455).", "pub_date": "2026-10-18T19:12:40Z", "platforms": { "linux-x86_64-deb": { "signature": "dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVUakFVTzBFb0RYZ3NCVUpsNHRCMm1DRS9xbU1YRkYwVXlwbXcvUmVVZ1d1RUxVdWVjc3BqZmx6SUI5bUZGSFhuRFRCMkdMYklyZ0RNOTgyS3NUZnpYSTd2RExVcEdGSlFrPQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNzkyMzUwMjcxCWZpbGU6U2ltcGwgUmVzdWx0YXRfMC4xNy4yX2FtZDY0LmRlYgprSUk4aUg5QUlOUFU5bU90M0NQN3VqL28ybUorcVI2WTBBUGNpVzVTTWR3RTk5elhIRUZCSjl2TWdrWWZYR291TUdwRkxqWDZrMHZEMzEvTjRuSHhDZz09Cg==", "url": "https://git.lacompagniemaximus.com/maximus/Simpl-Resultat/releases/download/v0.17.2/Simpl%20Resultat_0.17.2_amd64.deb" }, "linux-x86_64-rpm": { "signature": "dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVUakFVTzBFb0RYZ3JWbmpyck5INFg1OUxIQjJudFpHRHRYdC9BYUtLamkvVWVZUWhYTkJaY3ZwNkJzUzVBSUZKbVFGbmNHNWxjZXliazYrQkxXMnZ1QWtiR3BNZEttQ2dzPQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNzkyMzUwMjcxCWZpbGU6U2ltcGwgUmVzdWx0YXQtMC4xNy4yLTEueDg2XzY0LnJwbQpiU0R3V092UVIrcmtRKzhNcHVjbFVkVzFheE81dHZXNjJHTmt2N3lpQ016dVZseVFwUnlFKzlBYmROM1hNYkNkWHJNaHZEckgwWXFTbGI2ZjZiamNBZz09Cg==", "url": "https://git.lacompagniemaximus.com/maximus/Simpl-Resultat/releases/download/v0.17.2/Simpl%20Resultat-0.17.2-1.x86_64.rpm" }, "windows-x86_64": { "signature": "dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVUakFVTzBFb0RYZ3Q2bmM2cWlOM1E1bDNrV05VSk8vazlma3UwY3VaTkw1SEZKZXg3UnRGY3VVbjR0bkNLd0V6dnA4TkRTTEdTQlpGY1pFSXZMOG5HMytRRWZ0eklQd3dzPQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNzkyMzUwNzU5CWZpbGU6U2ltcGwgUmVzdWx0YXRfMC4xNy4yX3g2NC1zZXR1cC5leGUKMmxqcEd6dFBsbG9YUjRYNkp1Y0JwVDlLcTdpUHZHVUd1aW1pKzV4Y0NTbkxna2F6OHlOckkvYWhJSGFCdFlNS1JseUxpeWNUZ1IweUZsb3NwcWROQnc9PQo=", "url": "https://git.lacompagniemaximus.com/maximus/Simpl-Resultat/releases/download/v0.17.2/Simpl%20Resultat_0.17.2_x64-setup.exe" } } }