-
Simpl'Résultat v0.17.2
StableAll checks were successfulRelease / build-and-release (push) Successful in 23m31sreleased this
2026-10-18 18:49:17 +00:00 | 3 commits to main since this releaseAdded
- Import: a warning names the CSV files placed directly in the import folder, which are ignored (#427).
- 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).
Changed
- 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).
- One copy is kept per profile in the
migration-backupsfolder: 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). - 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).
- 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).
- 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).
Fixed
- 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).
- 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).
- Installs from the
.rpmpackage now receive automatic updates. The update manifest only listed the.deb, which an.rpminstall downloaded and then refused; it now lists each Linux package under its own key. Existing.rpminstalls 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.debit pointed to and were broken by it, now report an error when checking for updates instead; install the.debor.rpmpackage (#320). - 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).
- 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).
- 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).
- 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).
Security
- 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 rangepackage.jsonalready declares.react-router-domandreact-router7.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:vitestand@vitest/mocker4.1.9 → 4.1.11,browserslist4.28.4 → 4.29.3,baseline-browser-mapping2.10.41 → 2.11.28,nanoid3.3.16 → 3.3.20 andsource-map-js1.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). - 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.rustlsis the TLS layer of the automatic update check and download, reached throughtauri-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 theringcryptography 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, andCargo.tomlis 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 protectedchange_cipher_specrecords and performing TLS 1.3 key updates on time (#447). - Removed the archive extraction of the automatic updater (its
zipdependency on Windows andtaron 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.gzAppImage 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 whilezipwas 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).
Installation
Windows : Téléchargez le fichier
.execi-dessous.
Linux : Téléchargez le fichier.deb(Debian, Ubuntu) ou.rpm(Fedora, openSUSE) ci-dessous.
QA — cycle de mise à jour automatique
Dû pour cette release :
release.ymlchange (Node 24 par #376, étape « Publish » par #419) etrustls0.23.46 (#447) est sur le chemin TLS de l'updater. Procédure :docs/qa-update-cycle.md.- Release publiée :
verify-release.sh v0.17.2enVERDICT : OK(7 artefacts ;latest.jsonen 0.17.2 avec les trois cléslinux-x86_64-deb,linux-x86_64-rpmetwindows-x86_64, extensions et signatures conformes) ; Nodev24.22.0dans le journal du run 570. - Linux (.deb) : v0.17.1 → v0.17.2, réussi (Max, 2026-10-18). Une invite de mot de passe est apparue et Max s'est authentifié. Son type (polkit, zenity ou kdialog) n'est pas consigné.
- Windows (NSIS) : pas encore déroulé.
- RPM : pas encore déroulé. La v0.17.2 est la première release qui publie la clé
linux-x86_64-rpm(#320), donc la première mise à jour qu'une installation.rpmpeut recevoir. - Portée : ce cycle exécute l'updater de la v0.17.1, qui a encore
zipet l'ancienrustls; seule la vérification finale passe par celui de la v0.17.2. L'installation sanszip(#455) et le téléchargement parrustls0.23.46 ne se prouveront qu'au cycle qui part de la v0.17.2 (#463).
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Simpl Resultat-0.17.2-1.x86_64.rpm
0 downloads · 9.4 MiB
-
Simpl Resultat-0.17.2-1.x86_64.rpm.sig
0 downloads · 428 B
-
Simpl Resultat_0.17.2_amd64.deb
1 download · 9.4 MiB
-
Simpl Resultat_0.17.2_amd64.deb.sig
0 downloads · 424 B
-
Simpl Resultat_0.17.2_x64-setup.exe
1 download · 5.3 MiB
-
Simpl Resultat_0.17.2_x64-setup.exe.sig
0 downloads · 428 B
-
latest.json
2 downloads · 9.3 KiB
-
Simpl'Résultat v0.17.1
StableAll checks were successfulRelease / build-and-release (push) Successful in 22m49sreleased this
2026-10-09 01:21:41 +00:00 | 79 commits to main since this releaseAdded
- A getting-started banner at the top of every page while the getting-started path is shown: "Getting started 3/6", the next step with a link to the page where it is done, "Show the list", which unfolds the six steps in place, and "Hide", which hides the banner and the list for the current profile. It does not show on the dashboard of a profile without transactions, whose welcome card already holds the list. Once every step is done or skipped, it says so and offers "Open the guide", which leads to the "Getting Started" section of the user guide, and "Close", which removes it until it is shown again from Settings → Users (#397).
- Getting-started cards on the Import, Transactions and Budget pages. While the next step of the path is done on one of these pages, a card takes the place of the banner there: it shows "Step n of N", says what to do and points at the control to use with an outline that pulses three times, not at all when the system asks for reduced motion. When the step gets done, the card stays, says "Done." and offers "Next step", which leads to the page of the following step, or the end of the path. Arriving on a page by a "Next step" link puts the keyboard focus on the card's title. "Skip this step" marks the step as skipped in the getting-started list, where "Resume" takes it back (#398, #399, #400).
- On the Import page, the getting-started card follows the import wizard screen by screen through its three steps (choose an import folder, set up an import source, import a first file) and says "Done." once the file is imported, never for an import that added no transaction (#398).
- On the Transactions page, the link of the "Categorize a transaction by hand" step opens the page on the uncategorized transactions whatever their date, or on every transaction when none is left uncategorized, and the card points at the category of the first transaction shown. In the Free edition, where the Budget step is locked, categorizing a transaction ends the path (#399).
- On the Budget page, whose grid opens with its categories folded, the getting-started card first points at "Expand all", then at the current month's cell of the first category you can fill in, and never unfolds the grid for you. It reminds you that Enter saves, and that Tab saves and moves to the next month. Saving an amount ends the path (#400).
- A sub-section, "The getting-started path", in the "Getting Started" section of the user guide, the one "Open the guide" opens at the end of the path: the banner and its list, the step cards and their outline, "Skip this step" and "Resume", the end of the path, the profiles that find it hidden from the start, and how to show it again from Settings → Users. The Dashboard, Profiles and Settings sections of the guide describe the path as it now works (#401).
Changed
- The getting-started path no longer shows in a profile that already had transactions before this version: the first time such a profile is opened, the banner and its checklist are hidden, as if you had clicked "Hide", and "Show the getting-started checklist" in Settings → Users brings them back. A profile without transactions keeps them (#396).
- The dashboard no longer shows the compact getting-started bar once the profile has transactions: the banner replaces it on every page. In the detailed list, screen readers now hear whether each step is done, skipped, locked or pending (#397).
- Settings → Users offers "Show the getting-started checklist" as soon as the path is hidden, also when it was hidden from the banner of that same page, and now confirms that the path reappears at the top of the pages (#397).
Fixed
- Opening the Import page no longer flashes the "No import folder" empty state while the saved import folder is being read (#398).
- The "Import a first file" getting-started step is no longer checked by an import that added no transaction, such as a file holding only its header line, or one whose rows were all in error in the preview: the step now waits for a file that brought at least one transaction (#398).
- Categorizing a transaction by hand on the Transactions page now ticks the "Categorize a transaction by hand" step of the getting-started checklist. The app stored that mark in a form the checklist could not count. Transactions you categorized by hand before this version are counted as soon as the profile is opened, and a backup exported in the meantime restores them correctly (#390).
- Profiles other than the default one now receive database updates. Until now each one kept the database layout of the version that created it, so features added since could fail in it: in a profile created before 0.15.0, for instance, the import format saved on a source. When such a profile is opened, the app first keeps a copy of its database in the
migration-backupsfolder next to the databases, then applies the missing updates. The copy is deleted with the profile, and each update is written to the logs (Settings → System) (#390). - On Linux, deleting a profile now deletes its database, which used to stay on disk in
~/.config/com.simpl.resultat/; the file of a profile deleted with version 0.17.0 or earlier can be deleted by hand. The return columns of the Balance sheet accounts now show the returns on Linux, where every cell showed a dash (#390).
Installation
Windows : Téléchargez le fichier
.execi-dessous.
Linux : Téléchargez le fichier.debou.AppImageci-dessous.
QA — cycle de mise à jour automatique
Non exigé pour cette release : rien ne touche la chaîne de mise à jour depuis la v0.17.0.
tauri-plugin-updateret ses dépendances,release.ymlet la configurationupdaterdetauri.conf.jsonsont inchangés ;Cargo.lockne change que par la version de l'application, et le seul ajout au manifeste Rust est une dépendance de test (tauriavec la featuretest, #390). Vérifié après le run 508 : 7 artefacts, etlatest.jsonen 0.17.1 avec signatures et URL valides pour Linux et Windows, sur la release comme sur l'endpoint de l'updater (registre de paquets). Le cycle Windows de la v0.16.0 est fait (Michel, confirmé le 2026-10-10).Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Simpl Resultat-0.17.1-1.x86_64.rpm
2 downloads · 9.4 MiB
-
Simpl Resultat-0.17.1-1.x86_64.rpm.sig
4 downloads · 428 B
-
Simpl Resultat_0.17.1_amd64.deb
6 downloads · 9.4 MiB
-
Simpl Resultat_0.17.1_amd64.deb.sig
4 downloads · 424 B
-
Simpl Resultat_0.17.1_x64-setup.exe
3 downloads · 5.3 MiB
-
Simpl Resultat_0.17.1_x64-setup.exe.sig
4 downloads · 428 B
-
latest.json
8 downloads · 6.6 KiB
-
Simpl'Résultat v0.17.0
StableAll checks were successfulRelease / build-and-release (push) Successful in 21m54sreleased this
2026-10-06 00:45:29 +00:00 | 113 commits to main since this releaseAdded
- Guided empty states on the Dashboard, Import, Transactions and Budget pages: a profile without transactions now explains what the page will show and offers the next step ("Choose an import folder", "Import transactions") instead of an empty chart or table (#352, #353, #356).
- A getting-started checklist on the Dashboard, computed from your data: six steps (create a profile, choose an import folder, set up an import source, import a first file, categorize a transaction by hand, enter a first budget) tick themselves as you go, and the Budget step is marked "Base and up" in the Free edition. The list fills the empty dashboard, shrinks to a compact bar once transactions exist, disappears when every step is done, and "Hide" dismisses it for the current profile only (#351, #352).
- "Create a sample folder" on the Import page when the import folder has no bank sub-folder: it writes two fictitious sources ("Exemple Desjardins", "Exemple Tangerine"), one statement each covering the two previous months, so you can try the wizard before your real statements are in place. It refuses to overwrite an existing folder of the same name (#354, #356).
- An "Export a CSV from your bank" sub-section in the user guide, with a procedure per bank (Desjardins, Tangerine, RBC, National Bank, BMO) and a status line saying whether each one was confirmed on a real account (#355).
- "Remove the key" on the License card (Settings → Users) removes the stored license key from this computer, after a confirmation that says what it changes. A valid key: the modules of its edition lock and the app goes back to the Free edition, with your data kept. A revoked key: the app stops sending it to the license server, which it did at most once every 24 hours for as long as the key stayed stored. When this machine is activated, its slot is freed on the license server first; if the server cannot be reached, the app asks whether to remove the key anyway, and the slot then stays occupied until you free it from another computer that has the key. A revoked key removed then entered again stays revoked. Each removal is written to the logs (Settings → System) (#370).
Changed
- Settings → Users offers "Show the getting-started checklist" once the checklist was hidden, and confirms that it will reappear on the dashboard (#352).
- The "?" help popover of the Import page now links to the guide's "Export a CSV from your bank" sub-section, as does the Import empty state (#356).
Fixed
- A license key revoked by the license server and entered during a session now puts the app back in the Free edition right away: the key is checked as soon as it is stored, in the background, instead of at the next start. It used to keep its edition until the app restarted, or until you tried to activate the machine. Entering a key still answers at once, online or offline, and a revoked key shows its edition for a second or two before the switch. The check still goes out at most once every 24 hours for the same key, and each check is written to the logs (Settings → System) (#373).
- A machine whose activation no longer serves gets "Activate" back on the License card (Settings → Users), without touching any file. This happened to a computer where a version up to 0.15.0 had left the activation of a previous license next to another key: the card read "Activated", market prices were refused because that license was revoked, and "Activate" was never offered. The activation is now removed when the price server refuses it as belonging to a revoked license (the refusal message now invites you to activate the machine again), and when the machine list, once opened, does not count this machine, which also covers a machine deactivated from another computer. The stored key and its edition are untouched, and each removal is written to the logs (Settings → System) (#367).
Installation
Windows : Téléchargez le fichier
.execi-dessous.
Linux : Téléchargez le fichier.debou.AppImageci-dessous.
QA — cycle de mise à jour automatique
Non exigé pour cette release : rien ne touche la chaîne de mise à jour depuis la v0.16.0.
tauri-plugin-updateret ses dépendances,release.ymlet la configurationupdaterdetauri.conf.jsonsont inchangés ;Cargo.lockne change que par la version de l'application. Vérifié après le run 491 : 7 artefacts, etlatest.jsonen 0.17.0 avec signatures et URL valides pour Linux et Windows, sur la release comme sur l'endpoint de l'updater (registre de paquets). Le cycle Windows de la v0.16.0 reste à dérouler.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Simpl Resultat-0.17.0-1.x86_64.rpm
1 download · 9.4 MiB
-
Simpl Resultat-0.17.0-1.x86_64.rpm.sig
0 downloads · 428 B
-
Simpl Resultat_0.17.0_amd64.deb
5 downloads · 9.4 MiB
-
Simpl Resultat_0.17.0_amd64.deb.sig
2 downloads · 424 B
-
Simpl Resultat_0.17.0_x64-setup.exe
5 downloads · 5.3 MiB
-
Simpl Resultat_0.17.0_x64-setup.exe.sig
0 downloads · 428 B
-
latest.json
1 download · 5.1 KiB
-
Simpl'Résultat v0.16.0
StableAll checks were successfulRelease / build-and-release (push) Successful in 21m50sreleased this
2026-10-03 13:58:06 +00:00 | 140 commits to main since this releaseAdded
- Buy the Base edition from every screen that requires it: "Get Base" is now active on Budget, Adjustments, the advanced reports and extra profiles, and opens the product page in the app's language (#346).
- In the free edition, the Updates card offers "Get Base", "I already have a key" and "Download the latest version", and the error page offers "Get Base" and "Download the latest version". The download link opens the product page, which serves the latest installers; no update check runs (#346).
- License check at startup: when a license key is stored, the app now asks the license server whether the key was revoked, at most once every 24 hours. This is the first request the app sends on its own. It carries the product and the key, nothing else; nothing is sent without a stored key; if the server cannot be reached, nothing changes; and each check is written to the logs (Settings → System). A revoked key keeps being checked as long as it stays stored, so that a correction made on the license server is picked up at the next start (#365).
Changed
- The Maximus Account card no longer says an account is required for Premium: the account lets you find your licenses on lacompagniemaximus.com and identifies you in your feedback, and editions come from the license key (#346).
- The Balance locked screen (Premium) now says Premium isn't sold online yet, instead of "Online purchase coming soon" (#346).
- In the free edition, the Updates card says automatic updates are included in the Base edition (#346).
- A license key revoked by the license server, for instance after a refund, now puts the app back in the Free edition, automatic updates included, and the app stays there from one session to the next. The License card, the locked screens and the Updates card say that the key was revoked. Your data is kept, and another valid key gives its edition back. A revoked key used to keep its edition (#347, #365).
- The machine list shows how many machines are activated out of the number your key allows (#347).
- A license key valid for more than 50 years shows "No expiry date" instead of a date (#347).
- The market price authentication error now tells you to activate this machine in Settings → Users (#347).
Fixed
- Machine activation, deactivation and the machine list now call the license server's current
/v1endpoints and name the product explicitly, instead of going through a redirect on every call (#270). - A refusal from the license server is now explained in your language: revoked, expired or unknown key, machine limit reached, too many attempts (with the wait time), server unreachable. It used to show a generic "Activation failed" in English, and a revoked key showed up as "No machines activated" (#270).
- When the machine limit is reached, the machine list opens by itself so you can deactivate one, and the message stays visible while it loads. Deactivating a machine no longer queries the server a second time, and deactivating a machine the server already considers free now counts as done (#270).
- The "Buy" button of the License card now opens the product page directly, in the app's language, instead of an old address that only works through a redirect on the website (#270).
- A valid license key now keeps its edition whatever the machine activation: an activation that has expired (after two years), or one carried over from another computer when you restore your data after a reinstall or a move, no longer drops the app to the Free edition. The License card shows the machine as not activated, and "Activate" brings back the market prices (#347, #360).
- A refused license key is now explained in your language (wrong prefix, a key that cannot be read or verified, most often because it was not copied in full, an expired key, an edition this version does not know) instead of a raw English message, and a license file that cannot be read is named too (#347).
- Dates on the License card follow the app's language instead of the system's (#347).
- Entering a different license key now clears the previous key's machine activation, so the License card offers "Activate" for the new key. It used to show the machine as activated while market prices were refused for the previous license, for instance after a new purchase following a refund, or when moving from Base to Premium. Entering a key and activating a machine can no longer overlap, so they cannot cross either (#347).
- Market prices refused because this machine's activation belongs to a revoked license now say so, instead of "This feature requires a premium subscription" (#365).
Security
- Updated the Rust dependency
rustls(0.23.36 → 0.23.45, which requiresrustls-webpki0.103.13 → 0.103.15 alongside it), clearing RUSTSEC-2026-0285. TLS 1.3 handshake messages were accepted at the wrong encryption level when they followed a key-changing message inside the same record — a plaintextEncryptedExtensionspacked together with theServerHello, for instance — where RFC 8446 requires closing the connection instead. Medium severity, confidentiality only: the handshake transcript stays authenticated, so this cannot be used to alter or complete a handshake from a network position; the effect is that a peer can send in the clear what should have been encrypted without rustls refusing the connection.rustlsis the TLS layer of the automatic update check and download, reached throughtauri-plugin-updater— the application's own licence, authentication, market-price and feedback calls use a different TLS backend and were never on this path. Nothing in the application's own code changes — only the lockfile moves, andCargo.tomlis untouched. The one behaviour that does change is the fix itself: a handshake that breaks RFC 8446 §5.1 is now closed instead of accepted (#348). - Activating a machine no longer sends the operating system's machine identifier to the license server. The app now sends an identifier derived from it and specific to Simpl'Résultat, from which the system identifier cannot be recovered. A machine activated with an earlier version stays activated and is still marked "This machine" in the list; that earlier activation keeps the identifier it was made with until you deactivate the machine and activate it again. This change does not erase the identifiers the server has already received (#350).
Installation
Windows : Téléchargez le fichier
.execi-dessous.
Linux : Téléchargez le fichier.debou.AppImageci-dessous.
QA — cycle de mise à jour automatique
Dû pour cette release :
rustls0.23.45 (#348) est sur le chemin TLS de l'updater. Procédure :docs/qa-update-cycle.md.- Linux (.deb) : v0.15.0 → v0.16.0, réussi (Max, 2026-10-03). Une invite d'authentification est apparue et Max s'est authentifié, comme aux mises à jour précédentes. Son type (polkit, zenity ou kdialog) n'est pas consigné.
- Windows (NSIS) : fait (Michel), complétion confirmée par Max le 2026-10-10. Versions de départ et invite d'installation non consignées.
- RPM : non testé, chemin cassé connu (#320).
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Simpl Resultat-0.16.0-1.x86_64.rpm
0 downloads · 9.3 MiB
-
Simpl Resultat-0.16.0-1.x86_64.rpm.sig
0 downloads · 428 B
-
Simpl Resultat_0.16.0_amd64.deb
1 download · 9.3 MiB
-
Simpl Resultat_0.16.0_amd64.deb.sig
0 downloads · 424 B
-
Simpl Resultat_0.16.0_x64-setup.exe
1 download · 5.3 MiB
-
Simpl Resultat_0.16.0_x64-setup.exe.sig
0 downloads · 428 B
-
latest.json
1 download · 7.6 KiB
-
Simpl'Résultat v0.15.0
StableAll checks were successfulRelease / build-and-release (push) Successful in 22m32sreleased this
2026-09-12 18:51:31 +00:00 | 171 commits to main since this releaseAdded
- Import: opening a source you have never configured now detects its format on its own — delimiter, encoding, date format, and which column holds the date, the description and the amount. Columns are recognised by their header label in French and in English (
Montant/Amount,Débit/Withdrawal,Crédit/Deposit…), and the exported layouts of Desjardins, RBC, National Bank and Tangerine are recognised by name. Detection then replays its own decision over every row of the file and reports a confidence score ("147 of 150 rows read"): above 90 % the banner is neutral, below it the banner warns and points you at the column mapping and the preview. Nothing is ever blocked by the score — it says what could be read, not whether the meaning is right. The magic-wand button is still there to re-run detection on demand, and a source that already has a saved format is never re-detected (#327, #328). - Import: the data preview is now a mandatory step of every import, no longer an optional pop-up, and it shows a signed recap of what the file will actually write: how many outflows and for what total, how many inflows and for what total, and how many rows could not be read. If inflows and outflows are swapped, an "Flip the signs" button fixes them — and because it corrects the source's configuration rather than just this preview, the next file from that bank reads correctly on its own. The confirmation screen now also states the amount mode, the sign convention and the column mapping named by header, so you can check them before the import runs (#329).
- Import: when a bank changes the layout of its export, the wizard now says so before importing. The header of every successful import is recorded on the source, and a file whose header no longer matches opens a panel listing the columns that moved, appeared or disappeared ("Amount: column 3 → 4"), with the two choices that exist: adopt the newly detected format, or keep the stored one. A purely cosmetic rename (
Montant→MONTANT ($)) is recognised as the same header and says nothing. Both the drift panel and the sign-flip button now also carry a note explaining the safe way to repair an import that was already written wrong: delete it from the import history first, then replay the file — re-importing on top of it would double the rows, since duplicates are matched on date, description and amount together (#330). - Import: your import sources and templates are now included in the encrypted backup. Exporting and re-importing your data used to wipe every import configuration and replace it with a single synthetic "Data Import" source, so restoring a backup meant reconfiguring every bank by hand. Older backup files, which do not carry them, are still restored exactly as before (#331).
- Category migration: custom categories that have no standard match can now be merged into a standard category instead of only being set aside. Each custom category in the "Custom categories" block gets the same target picker as the seeded rows — choose a standard leaf and its transactions, budgets, keywords and suppliers are reassigned to it, then the custom category is removed. Leaving a custom category unmapped keeps the previous behaviour (grouped under "Custom categories (migration)") and never blocks the migration (#259).
Changed
-
Import: the format of a source — including the amount mode (single amount, or separate debit and credit columns) and the sign convention (expenses written negative or positive) — is now stored in full on the source itself and restored exactly as you set it. Until now those two settings were only kept on templates, and reopening a configured source re-derived the mode and silently reset the convention to "expenses negative"; a source you had configured for positive expenses came back on the default at its second import. Reconfiguring a source is unchanged, but a source configured once is never guessed at again. The sign-convention selector is now hidden in debit/credit mode, where it never applied (your stored value is left untouched), and your configuration is written only once the import actually runs — abandoning the wizard at the duplicate-check step no longer leaves a half-saved configuration behind (#323, #324, #328).
-
The application now unlocks its modules per edition — Free, Base or Premium, resolved from your license key. Free keeps the Dashboard, CSV Import, Transactions, Categories, the Trends report (and the Reports hub), encrypted export/import and the changelog, with a single profile. Base additionally unlocks Budget, Adjustments, the four advanced reports (Highlights, Compare, Category analysis, Cards), multiple profiles and automatic updates. Premium additionally unlocks the full Balance module (net worth, per-security detail, market prices). Locked modules stay visible — a lock badge shows in the sidebar and on the report tiles — and opening one shows an unlock screen with an "I already have a key" shortcut to the license card; the online "Get Base / Premium" purchase button is shown but disabled for now ("coming soon"). Locking is never destructive: whatever the edition, your data is kept untouched and everything reappears as soon as a valid key is entered — on Free your active profile always stays accessible, only creating or switching to another profile is locked (#297, #298, #299, #300, #301).
Fixed
- Import: a statement whose debit and credit columns are written in that order (
Date;Description;Credit;Debit) used to have every single sign inverted — expenses imported as income and income as expenses. The two columns were told apart by their position, never by their label. They are now identified by their header, so the order they appear in no longer matters (#327). - Import: on the many banks that write
0,00in the unused column instead of leaving it empty, every expense used to import as 0,00 and simply vanished from your ledger, with no error anywhere. Amounts are now computed as credit minus debit, which needs no special case for a zero cell. A row that cannot be read in either column is reported as an error instead of being silently written as a free 0,00 transaction, and an amount column left unmapped is now reported up front rather than falling back to reading the date column (#325). - Import: amounts carrying a trailing currency code or accounting marker were read a hundred times too large —
100,00 CADimported as 10 000,00 and passed every validation, since only the leading digits were read and the rest was discarded. Such a value is now rejected as unreadable and reported on its row. Accounting forms are handled properly instead:(50,00)and50,00-both read as −50,00. The same fix applies to the CSV import of securities into a balance snapshot, where a price written150,25 CADused to be stored as 15 025 and an unreadable quantity was silently saved as a zero-value position (#325). - Import: in a file where one column uses a comma for decimals and another a period,
1.234could be read as 1234 in one place and 1,234 in the other. The decimal separator is now decided per column, from that column's own values (#325). - Import: a statement with positive amounts plus a separate "D" / "C" indicator column used to be indistinguishable from an all-positive file, so it was configured as "expenses positive" and every deposit imported as an expense. This layout is now detected and refused with an explanation, instead of being imported backwards. Re-export the statement with signed amounts, or with separate debit and credit columns (#327).
- Import: a header row whose first cell starts with digits (a column titled
2025, for example) was mistaken for a data row, and the header was imported as a transaction. Header rows are now recognised by their labels as well as their shape (#325, #327). - Data export/import: restoring a backup was not wrapped in a transaction — a constraint failure partway through would abandon the restore after the existing data had already been wiped, destroying your financial history with no rollback. The wipe and the restore now succeed or fail as a whole. Restoring into a profile that already had import templates also no longer fails on a name collision (#331).
Security
- Updated two Rust dependencies sitting on the automatic-update path, clearing six RustSec advisories:
rustls-webpki0.103.9 → 0.103.13 (certificate name-constraint handling and certificate-revocation-list parsing, including a reachable panic) andtar0.4.44 → 0.4.46 (arbitrary directorychmodby following symlinks during extraction, and mishandled PAX size headers). Both are pulled in bytauri-plugin-updater: the TLS one runs on every update check and download, while the archive one is only reached by installer formats this app does not ship — it was updated anyway rather than reasoned around. No behaviour change. One further advisory is still reported against the lockfile and does not apply to the shipped product:rsais never compiled at all, its only parent being a MySQL driver that a SQLite application never builds. It is recorded as accepted, with its justification and the conditions for removing it, instead of leaving the daily security audit permanently red. The two advisories againstquick-xmlwere accepted the same way for a few hours, then resolved outright:plist1.10.0 turned out to ship the fixedquick-xml0.41.0 (#310, #312). - Updated the build-time dependency
postcss(8.5.13 → 8.5.23), clearing GHSA-r28c-9q8g-f849 (path traversal while auto-loading a previous source map from asourceMappingURLcomment, leading to arbitrary.mapfile disclosure). Build tooling only, no runtime or behaviour change — the generated CSS is byte-for-byte identical. One advisory remains reported againstreact-router, and is deliberately left as is: it targets the React Server Components mode, which a local desktop app never runs, and no fix exists to move forward to sincereact-router-domis frozen at 7.18.1 (leaving the affected range would mean migrating to react-router v8, not bumping a version) (#311). - Updated the Rust dependency
h2(0.4.13 → 0.4.19), clearing RUSTSEC-2026-0258 (empty HTTP/2DATAframes are accepted and queued without any limit: on a stream that is not actively drained, memory grows unbounded and the queued length can overflow into a panic). Low severity, denial of service only.h2is hyper's HTTP/2 layer, and it sits on two paths this application does take: the automatic update check and download, throughtauri-plugin-updater, and the licence, authentication, market-price and feedback calls, through the app's ownreqwest. Each of those is an outbound request to a server the application itself picks, so reaching the flaw takes a hostile or compromised endpoint rather than an exposed listener — it was updated anyway rather than reasoned around, on the same grounds as therustls-webpkibump before it. No behaviour change: only the lockfile moves,Cargo.tomlis untouched (#343).
Installation
Windows : Téléchargez le fichier
.execi-dessous.
Linux : Téléchargez le fichier.debou.AppImageci-dessous.Downloads
-
Source code (ZIP)
3 downloads
-
Source code (TAR.GZ)
2 downloads
-
Simpl Resultat-0.15.0-1.x86_64.rpm
2 downloads · 9.3 MiB
-
Simpl Resultat-0.15.0-1.x86_64.rpm.sig
2 downloads · 428 B
-
Simpl Resultat_0.15.0_amd64.deb
6 downloads · 9.3 MiB
-
Simpl Resultat_0.15.0_amd64.deb.sig
4 downloads · 424 B
-
Simpl Resultat_0.15.0_x64-setup.exe
9 downloads · 5.2 MiB
-
Simpl Resultat_0.15.0_x64-setup.exe.sig
2 downloads · 428 B
-
latest.json
3 downloads · 12 KiB
- Import: opening a source you have never configured now detects its format on its own — delimiter, encoding, date format, and which column holds the date, the description and the amount. Columns are recognised by their header label in French and in English (
-
Simpl'Résultat v0.14.0
StableAll checks were successfulRelease / build-and-release (push) Successful in 24m21sreleased this
2026-07-18 18:56:17 +00:00 | 219 commits to main since this releaseChanged
- Reports: the three hierarchical report tables (real-vs-real Compare, real-vs-budget Compare, and Trends by category) now let you collapse or expand every level of the category hierarchy, not just the top level. Every parent category — including the intermediate ones — carries its own chevron; expanding one reveals its direct children (themselves collapsed), so you drill down one level at a time. The tables open fully collapsed (only the top-level categories visible), "Expand all" opens every level at once, and your collapse choices are now saved per profile — in the profile's own database, so they are destroyed with the profile — instead of in the browser. Subtotals and result lines stay exactly the same whatever you fold away (#288).
- Budget: the budget grid now collapses and expands at every category level too, matching the reports. Each parent category carries a chevron, the grid opens fully collapsed (only the top-level categories visible) for a compact overview, and "Expand all" opens every level in one click. Folding a category is purely visual — section totals and the result lines are unchanged, and no budget figure you have typed is ever lost. Your collapse choices are saved per profile (#289).
Fixed
- Standard categories tree (both the standalone guide and the category-migration wizard's overview step): the "Expand all / Collapse all" button now reflects the tree's real state — it stays on "Expand all" until every group is open, instead of flipping to "Collapse all" as soon as a single category was expanded (#290).
Installation
Windows : Téléchargez le fichier
.execi-dessous.
Linux : Téléchargez le fichier.debou.AppImageci-dessous.Downloads
-
Source code (ZIP)
4 downloads
-
Source code (TAR.GZ)
5 downloads
-
Simpl Resultat-0.14.0-1.x86_64.rpm
43 downloads · 9.3 MiB
-
Simpl Resultat-0.14.0-1.x86_64.rpm.sig
45 downloads · 428 B
-
Simpl Resultat_0.14.0_amd64.deb
43 downloads · 9.3 MiB
-
Simpl Resultat_0.14.0_amd64.deb.sig
46 downloads · 424 B
-
Simpl Resultat_0.14.0_x64-setup.exe
3 downloads · 5.2 MiB
-
Simpl Resultat_0.14.0_x64-setup.exe.sig
45 downloads · 428 B
-
latest.json
7 downloads · 2.9 KiB
-
Simpl'Résultat v0.13.0
StableAll checks were successfulRelease / build-and-release (push) Successful in 23m25sreleased this
2026-07-13 00:12:10 +00:00 | 225 commits to main since this releaseAdded
- Reports → Compare: the two hierarchical comparable reports (real-vs-real and real-vs-budget) now let you collapse or expand each parent category's sub-categories. A chevron on every top-level category folds its breakdown away while keeping the category's subtotal row in view, and an "Expand all / Collapse all" button toggles them together. Groups start collapsed so the report opens on a compact, subtotal-level overview; whatever you expand is remembered per report (#254).
- Reports → Trends → by category (table view): the income-statement table is now hierarchical and collapsible, matching the compare report. Parent categories appear as indented groups above their sub-categories, each with its own subtotal, and a chevron (plus an "Expand all / Collapse all" button) folds a group down to just that subtotal. Groups start collapsed, and your choices are remembered separately from the comparable tables. The Result before transfers line now sits between the expense sections and the transfers section instead of at the bottom, and folding a group never moves any subtotal or result — the figures are always computed from the full data (#265).
- Reports: laid the groundwork for an upcoming account filter across the report pages — the shared period hook now also tracks a URL-backed, multi-account selection (bookmarkable like the date range, and validated against malformed/hand-edited URLs). Internal only for now: no filter control is visible yet, the account picker and per-report wiring land in follow-up issues (#272).
- Reports: all seven report services (trends, by-category-over-time, real-vs-real compare, budget-vs-actual, expenses-by-category, and the Cartes dashboard) now accept an optional multi-account filter, matched against a parameterized list of import sources. Backend plumbing only — leaving every filter out still returns byte-identical results, and no report page exposes a filter control yet; that lands in follow-up issues (#273).
- Reports: laid the groundwork for the account filter's UI — a shared filter panel renders each report page's own period control alongside a multi-select (checkbox list) of your import sources. Internal only for now: no report page renders this panel yet, that lands in follow-up issues (#274).
- Reports → Trends: the shared filter panel now appears on this report, next to the period selector. Checking one or more import sources narrows both the global monthly view and the by-category result table to those sources; leaving none checked keeps showing every source, unchanged (#275).
- Reports → Compare & Budget: the shared filter panel now appears on both reports too, next to their existing period control (the compare report keeps its reference-month picker, the budget grid keeps its year navigator — unchanged). Checking one or more import sources narrows the compare report — including its budget-vs-actual tab — and the budget grid's previous-year reference column to those sources; leaving none checked keeps showing every source, unchanged (#276).
Fixed
- Reports → Trends → by category (table view): the income-statement table now covers every category instead of only the 50 largest, and its Result lines are exact. Two different categories that happen to share a name are no longer merged together, and a smaller income or transfer category is no longer miscounted as an expense — so the revenues and the net result add up correctly (#264).
Changed
- Reports → Trends: the report now opens on the "By category" table view by default, instead of the global monthly chart. The by-category table has an income section, so a revenue category (e.g. your pay) shows up straight away — no need to switch views first. Whatever view you pick yourself is still remembered (#262).
- Reports → Compare (actual vs budget): the budget-vs-actual table now reads the same way as the other comparable reports — an income statement. Categories are grouped Income → Expenses → Transfers (instead of Expenses → Income → Transfers), and the old flat "Total" row is replaced by a Result before transfers line (shown when transfers exist) and a Net result line, both coloured green for a surplus and red for a deficit. Leaf and section figures are unchanged (#277).
- Budget: the budget grid now reads as an income statement — categories are grouped Income → Expenses → Transfers (previously expenses first), and the old plain "Total" row is replaced by two result lines: Result before transfers (income − expenses) and Net result (after transfers), computed across the previous-year, annual, and monthly columns alike. Every category still shows on the grid — it stays an editable surface, with no rows hidden or collapsed (#278).
- Dashboard (
/): the home page now matches the Cartes report's model. KPI cards for income, expenses, net result and savings rate show their change vs the previous month and vs last year (reference-month picker, defaulting to the last complete month); rising/falling categories and budget adherence are shown the same way as on Cartes. A new net worth tile shows the Balance sheet's latest total — a different metric from every other card here, so it stays hidden (never a misleading "$0") until at least one balance account has a recorded snapshot, and it is never affected by the account filter below. The expense-only pie chart is replaced by a ranked bar chart of top expense categories, and the account (import-source) filter — introduced on Trends/Compare/Budget — now also applies to the Dashboard's own transactional widgets (#279).
Installation
Windows : Téléchargez le fichier
.execi-dessous.
Linux : Téléchargez le fichier.debou.AppImageci-dessous.Downloads
-
Source code (ZIP)
4 downloads
-
Source code (TAR.GZ)
4 downloads
-
Simpl Resultat-0.13.0-1.x86_64.rpm
97 downloads · 9.3 MiB
-
Simpl Resultat-0.13.0-1.x86_64.rpm.sig
100 downloads · 428 B
-
Simpl Resultat_0.13.0_amd64.deb
102 downloads · 9.3 MiB
-
Simpl Resultat_0.13.0_amd64.deb.sig
49 downloads · 424 B
-
Simpl Resultat_0.13.0_x64-setup.exe
5 downloads · 5.2 MiB
-
Simpl Resultat_0.13.0_x64-setup.exe.sig
101 downloads · 428 B
-
latest.json
8 downloads · 6.9 KiB
-
Simpl'Résultat v0.12.0
StableAll checks were successfulRelease / build-and-release (push) Successful in 25m5sreleased this
2026-07-06 00:59:03 +00:00 | 257 commits to main since this releaseChanged
- Reports → Compare (real vs real): the report is now an income statement. Revenue categories are shown alongside expenses, with two result lines — result before transfers (revenues − expenses) and the net result (after netting transfers) — so you can see at a glance whether the period ran a surplus or a deficit. Categories are grouped Income → Expenses → Transfers, colours follow direction (more income is green, more spending is red), and a result amount turns green for a surplus, red for a deficit (#253).
- Reports: the comparable reports now open on the previous (last complete) month by default instead of the current civil year's December (#253).
- Reports → Trends → By category (table view): the category-over-time table now reads as a result analysis, mirroring the compare report. Categories are grouped into Income → Expenses → Transfers sections with per-month and total subtotals, and the old mixed "Total" row — which summed income, expenses, and transfers as absolute magnitudes into a meaningless figure — is replaced by a Net result row per month (income − expenses + transfers), coloured green for a surplus and red for a deficit, plus a Result before transfers row shown when transfers exist. Category cells stay neutral levels; only the result rows carry a sign colour (#256).
Installation
Windows : Téléchargez le fichier
.execi-dessous.
Linux : Téléchargez le fichier.debou.AppImageci-dessous.Downloads
-
Source code (ZIP)
4 downloads
-
Source code (TAR.GZ)
5 downloads
-
Simpl Resultat-0.12.0-1.x86_64.rpm
45 downloads · 9.5 MiB
-
Simpl Resultat-0.12.0-1.x86_64.rpm.sig
102 downloads · 428 B
-
Simpl Resultat_0.12.0_amd64.deb
98 downloads · 9.5 MiB
-
Simpl Resultat_0.12.0_amd64.deb.sig
101 downloads · 424 B
-
Simpl Resultat_0.12.0_x64-setup.exe
5 downloads · 5.2 MiB
-
Simpl Resultat_0.12.0_x64-setup.exe.sig
99 downloads · 428 B
-
latest.json
7 downloads · 2.6 KiB
-
Simpl'Résultat v0.11.0
StableAll checks were successfulRelease / build-and-release (push) Successful in 24m28sreleased this
2026-07-05 21:10:00 +00:00 | 266 commits to main since this releaseAdded
- Reports → Compare (real vs real): the comparable report is now shown as a category hierarchy with subtotals, like the budget report. Parent categories roll their children up into a subtotal row — its value is the group's net, so a group of balanced transfers subtotals to ~0 — with rows grouped into Expenses / Income / Transfers sections carrying per-section and grand totals, and a subtotals-on-top/bottom toggle. Leaf-category figures are unchanged, and the transfer netting from the previous fix is preserved (#247).
- Balance: a detailed (by-security) account can now import its positions from a CSV instead of adding each security one by one. From a snapshot, an "Import CSV" button next to "Add a title" opens a file picker; the delimiter, encoding, and columns (symbol, quantity, and — optionally — price and cost basis) are auto-detected and can be adjusted before importing. Rows that share a symbol are merged into one position, and a CSV without a price column still imports the quantities so the price can be fetched or typed afterwards (#245).
Changed
- Balance: the balance-sheet landing page is now a tile-based hub. Having accounts but no snapshot yet no longer strands you on a "create a snapshot" prompt — the page now shows navigation tiles, and Manage accounts is reachable at all times, including from the populated dashboard. The account-management page (create/edit/archive accounts and asset types) was previously only reachable by typing its URL (#244).
- Categories migration (Settings → Categories → migrate to the standard set): the target category on the preview step is now editable on every row, not only the "needs review" ones. Each row carries a type-ahead picker (accent-insensitive search) so you can override an auto-detected target as easily as resolving an unmatched one (#246).
Security
- Updated dependencies to clear four advisories reported by
npm audit:react-router-dom7.13 → 7.18.1 (which pullsreact-routerpast the turbo-stream RCE,__manifest/single-fetch DoS, and RSC-redirect XSS advisories), plus the dev toolchainvite6.4.2 → 6.4.3 andvitest4.0.18 → 4.1.9. No behaviour change. The app ships as a local desktop client, so the runtime advisories (which require a react-router SSR/RSC server) did not apply to the shipped product; these are hardening bumps (#235, #236, #237, #238). - Pinned the build-time transitive dependency
@babel/coreto 7.29.7 through a scopedoverridesentry (under@vitejs/plugin-react), clearing the lastnpm auditadvisory (GHSA-4x5r-pxfx-6jf8, arbitrary file read via asourceMappingURLcomment, low severity). Build tooling only — no runtime or behaviour change — andnpm auditis now clean (#241).
Fixed
- Reports → Compare (real vs real): transfer-type categories (e.g. "Paiement CC") now net to ~0 instead of showing only their outflows. A transfer is a money move, not spending — its debit and matching credit over the same period cancel out. Expense and income categories keep exactly their previous amounts (#243).
Installation
Windows : Téléchargez le fichier
.execi-dessous.
Linux : Téléchargez le fichier.debou.AppImageci-dessous.Downloads
-
Source code (ZIP)
4 downloads
-
Source code (TAR.GZ)
4 downloads
-
Simpl Resultat-0.11.0-1.x86_64.rpm
50 downloads · 9.5 MiB
-
Simpl Resultat-0.11.0-1.x86_64.rpm.sig
51 downloads · 428 B
-
Simpl Resultat_0.11.0_amd64.deb
49 downloads · 9.5 MiB
-
Simpl Resultat_0.11.0_amd64.deb.sig
50 downloads · 424 B
-
Simpl Resultat_0.11.0_x64-setup.exe
6 downloads · 5.2 MiB
-
Simpl Resultat_0.11.0_x64-setup.exe.sig
51 downloads · 428 B
-
latest.json
7 downloads · 4.4 KiB
-
Simpl'Résultat v0.10.1
StableAll checks were successfulRelease / build-and-release (push) Successful in 26m19sreleased this
2026-06-30 21:22:13 +00:00 | 288 commits to main since this releaseFixed
- Balance: fixed a "database is locked" error that could appear after starting a snapshot and leaving the page before saving, then blocked every later write until the app was restarted. All database access is now serialized, and a transaction holds a single connection for its whole duration — so a write transaction can no longer be stranded across SQLite connections (the root cause). No stored data was ever at risk; only the in-progress snapshot was lost (#230).
- The in-app log console (Settings → Systems → Logs) now updates live as events happen, instead of only showing entries that existed before the page was opened. Snapshot saves and their failures are now logged, so database issues surface there (#230).
Installation
Windows : Téléchargez le fichier
.execi-dessous.
Linux : Téléchargez le fichier.debou.AppImageci-dessous.Downloads
-
Source code (ZIP)
5 downloads
-
Source code (TAR.GZ)
4 downloads
-
Simpl Resultat-0.10.1-1.x86_64.rpm
46 downloads · 9.5 MiB
-
Simpl Resultat-0.10.1-1.x86_64.rpm.sig
51 downloads · 428 B
-
Simpl Resultat_0.10.1_amd64.deb
46 downloads · 9.5 MiB
-
Simpl Resultat_0.10.1_amd64.deb.sig
51 downloads · 424 B
-
Simpl Resultat_0.10.1_x64-setup.exe
5 downloads · 5.2 MiB
-
Simpl Resultat_0.10.1_x64-setup.exe.sig
52 downloads · 428 B
-
latest.json
9 downloads · 2 KiB