• v0.8.4 1c9eebb78c

    Simpl'Résultat v0.8.4
    All checks were successful
    Release / build-and-release (push) Successful in 24m1s
    Stable

    Ghost released this 2026-04-21 23:32:52 +00:00 | 107 commits to main since this release

    Added

    • Settings banner (90-day) and permanent Restore action to roll back a category migration from the automatic pre-migration backup (Settings → Categories): after a v2→v1 migration, a dismissable banner (ShieldCheck icon) now appears at the top of the Categories card for 90 days, pointing at the automatic SREF backup written by categoryBackupService. A dedicated Restore a backup entry stays available below the migrate link as long as a migration is recorded — even past the 90-day window — so the rollback is never lost. The confirm modal reads the last_categories_migration journal for its timestamp and backup path, enforces a two-step confirmation with a red Restore button, falls back to a file picker when the recorded path is missing on disk, prompts for the profile PIN when the SREF file is encrypted, and on success resets categories_schema_version=v2 and stamps reverted_at on the journal before reloading the app. The banner hides automatically once the migration has been reverted. New Tauri command file_exists for the pre-flight presence check, new categoryRestoreService wrapping read_import_file + importTransactionsWithCategories with stable error codes (#122)
    • 3-step category migration page (route /settings/categories/migrate, Settings → Migrate to the standard structure): legacy v2 profiles can now opt in to migrate to the new v1 IPC taxonomy through a guided flow — Discover (read-only tree reused from the guide page), Simulate (3-column dry-run table with high / medium / low / needs-review confidence badges, a clickable side panel showing the first 50 affected transactions per row, inline target picker for unresolved rows, next button blocked until every row is resolved), and Consent (checklist + optional PIN field for protected profiles + 4-step loader). On confirm, the page creates a verified SREF backup via categoryBackupService (mandatory, abort on failure with no DB write) and then runs an atomic SQL transaction via the new categoryMigrationService.applyMigration(plan, backup) — BEGIN → INSERT v1 taxonomy → UPDATE transactions / budgets / budget_templates / keywords / suppliers to the new v1 category ids → reparent custom categories under a new Custom categories (migration) parent → soft-deactivate the v2 seed categories → bump categories_schema_version='v1' and journal the run in user_preferences.last_categories_migration → COMMIT. Any thrown error triggers ROLLBACK so the profile stays in its pre-migration state. Success and error screens surface the backup path and (for success) the counts of rows inserted / transactions, keywords and budgets migrated (#121)
    • Dashboard banner inviting v2 profiles to discover the new v1 IPC category taxonomy: legacy profiles (tagged categories_schema_version='v2') now see a dismissable banner at the top of the Dashboard pointing to the new standard categories guide page. The banner is non-destructive (read-only CTA, no category changes), only shown to v2 profiles (new v1-seeded profiles never see it), and its dismissal is persisted in user_preferences under categories_v1_banner_dismissed so it never reappears once closed (#118)
    • Standard categories guide page (Settings → Standard category structure, route /settings/categories/standard): new read-only page that exposes the full v1 IPC taxonomy as a navigable tree with expand/collapse per root, a live category counter (roots · subcategories · leaves · total), accent-insensitive full-text search over translated names, hover tooltips showing the i18n_key / type / ID of each node, and a Export as PDF button that triggers the browser print dialog. A dedicated @media print rule forces every branch to render fully expanded regardless of the on-screen collapse state. All labels resolve via categoriesSeed.* with name as fallback for future custom rows. No database writes, no destructive actions (#117)
    • IPC-aligned categories seed for new profiles: brand-new profiles are now seeded with the v1 IPC (Indice des prix à la consommation) taxonomy — a structured hierarchy aligned with Statistics Canada consumer price index categories. Category labels are now translated dynamically from the categoriesSeed.* i18n namespace (FR/EN), so seed categories display in the user's current language. Existing profiles remain on the legacy v2 seed, marked via a new categories_schema_version user preference (a later migration wizard will offer the v2→v1 transition). Internally: nullable categories.i18n_key column added in migration v8 (additive only), src/data/categoryTaxonomyV1.json bundled as the TS-side source of truth, CategoryTree and CategoryCombobox renderers fall back to the raw name when no translation key is present (user-created rows) (#115)

    Installation

    Windows : Téléchargez le fichier .exe ci-dessous.
    Linux : Téléchargez le fichier .deb ou .AppImage ci-dessous.

    Downloads