• v0.8.0 54cbdad710

    Simpl'Résultat v0.8.0
    All checks were successful
    Release / build-and-release (push) Successful in 25m4s
    Stable

    Ghost released this 2026-04-14 19:39:27 +00:00 | 152 commits to main since this release

    Added

    • Reports hub: /reports is now a hub surfacing a live highlights panel (current month + YTD net balance with sparklines, top movers vs. last month, top recent transactions) and four navigation cards to dedicated sub-reports (#69–#76)
    • Highlights report (/reports/highlights): balance tiles with 12-month sparklines, sortable top movers table, diverging bar chart, recent transactions list with 30/60/90 day window toggle (#71)
    • Trends report (/reports/trends): internal sub-view toggle between global flow (income vs. expenses) and by-category evolution, chart/table toggle on both (#72)
    • Compare report (/reports/compare): tab bar for Month vs. Previous Month, Year vs. Previous Year, and Actual vs. Budget; diverging bar chart centered on zero for the first two modes (#73)
    • Category zoom (/reports/category): single-category drill-down with donut chart of subcategory breakdown, monthly evolution area chart, and filterable transactions table (#74)
    • Contextual keyword editing: right-click any transaction row to add its description as a categorization keyword; a preview dialog shows every transaction that would be recategorized (capped at 50, with an opt-in checkbox for N+) before you confirm. Available on the category zoom, the highlights list, and the main transactions page (#74, #75)
    • Bookmarkable period: the reports period now lives in the URL (?from=YYYY-MM-DD&to=YYYY-MM-DD), so you can copy, paste, and share the link and keep the same state (#70)
    • View mode preference (chart vs. table) is now persisted in localStorage per report section

    Changed

    • The legacy monolithic useReports hook has been split into per-domain hooks (useReportsPeriod, useHighlights, useTrends, useCompare, useCategoryZoom) so every sub-report owns only the state it needs (#70)
    • Context menu on reports (right-click) is now a generic ContextMenu shell reused by the existing chart menu and the new keyword dialog (#69)

    Removed

    • The dynamic pivot table report was removed. Over 90% of its real usage was zooming into a single category, which is better served by the new Category Zoom report. Git history preserves the old implementation if it ever needs to come back (#69)

    Security

    • New AddKeywordDialog enforces a 2–64 character length bound on user keywords to prevent ReDoS on large transaction sets (CWE-1333), uses parameterized LIKE queries for the preview (CWE-89), wraps its INSERT + per-transaction UPDATEs in an explicit BEGIN/COMMIT/ROLLBACK transaction (CWE-662), renders all untrusted descriptions as React children (CWE-79), and recategorizes only the rows the user explicitly checked — never retroactively. Keyword reassignment across categories requires an explicit confirmation step (#74)
    • getCategoryZoom walks the category tree through a bounded recursive CTE (WHERE depth < 5), protecting against malformed parent_id cycles (CWE-835) (#74)

    Installation

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

    Downloads