• v0.10.0 36291585b2

    Simpl'Résultat v0.10.0
    All checks were successful
    Release / build-and-release (push) Successful in 29m11s
    Stable

    Ghost released this 2026-06-29 21:13:18 +00:00 | 66 commits to main since this release

    Added

    • Balance: per-security snapshot entry. A detailed account is now entered title by title — each holding has its own row with a security picker (autocomplete over your existing securities, with inline creation of a new ticker), quantity, price (with the optional automatic price fetch), cost basis, and a live unrealized-gain figure. The account's value is the displayed sum of its positions. Simple accounts are unchanged. The security picker accepts any normalized symbol (UPPER/TRIM) — there is no live ticker validation, since the price fetch is a separate, best-effort step; you choose the asset class (Stock / Crypto) when creating a new symbol (#214).
    • Balance: detail an aggregated account into securities (wizard). A simple account can be switched to detailed via a "Detail into securities" action in the accounts table. The switch is one-way: it sets the account to detailed and stamps today as the pivot date (detailed_since) — past aggregated history stays frozen and read-only, and the individual securities are entered at your next normal snapshot (the wizard does not capture an initial portfolio). Once any holding is entered, the account can no longer revert to simple (enforced both in the UI and in the service) (#215).
    • Balance: per-security drill-down and unrealized gain in the accounts table and overview. A detailed account can be expanded to show its securities (value + unrealized gain %), and the unrealized gain (value − cost basis) is aggregated by account, by asset class, and by fiscal envelope in the accounts table and the balance overview card. Positions without a cost basis are flagged "N/A" and excluded from the percentage (no division by zero); the per-account Modified Dietz return is unchanged (#216).
    • Balance: an existing snapshot's date can now be moved. The date field is editable in edit mode — change it and save, and the snapshot (with all its lines) is moved to the new date inside a single atomic transaction. If another snapshot already occupies the target date, the move is rejected with a clear message and nothing changes (#200).
    • Balance: fiscal envelope on accounts. An account can now carry an optional fiscal envelope (Non-registered, TFSA, RRSP, RRIF, FHSA, RESP — or none), set via a dropdown in the account form. This is a separate axis from the account's type (asset class), so an account holding stocks inside a TFSA is finally expressible — type Stocks + envelope TFSA. Migration v12 adds the nullable balance_accounts.vehicle_type column with a CHECK on the enum and backfills the former TFSA/RRSP accounts (#202, #203).
    • Balance: stacked-chart envelope axis. The stacked evolution chart gains an axis sub-toggle — By asset class (default, unchanged behaviour) or By envelope (groups by fiscal envelope, with a "None" bucket for accounts without one). Read your net worth by what you hold or by where it's sheltered (#204).
    • Balance: collapsible return columns. The accounts table's four Modified Dietz return columns (3M / 1Y / since inception / unadjusted) are now collapsed by default behind a show/hide toggle; the choice is persisted across sessions (user_preferences.balance_show_returns) to reduce visual noise for users who only track values (#204).

    Changed

    • Balance: clearer terminology. Account groupings (Cash, TFSA, RRSP, etc.) are now consistently called types across the balance UI and user guide, to avoid confusion with transaction categories (a separate module). The "Cash" type is now labelled Cash (FR: Liquidités) and "Mutual fund" becomes Funds / ETF (FR: Fonds / FNB). The wording of snapshot is unchanged but glossed on first use (#198).
    • Balance: a type is now a pure asset class. The standard types are the five asset classes — Cash, Funds / ETF, Stocks, Crypto, Other. The fiscal envelopes that used to be types (TFSA, RRSP) are no longer types: they moved to the new per-account fiscal-envelope attribute. On migration, existing TFSA/RRSP accounts are reclassed to the Other asset class while carrying their envelope (tfsa/rrsp); the tfsa/rrsp seed types are deactivated and disappear from the type dropdowns (migrations v12 + v13). New profiles seed five asset classes; the TFSA/RRSP starter accounts now sit under Other with their envelope set. Your amounts and history are unchanged — only the grouping changes (#202).
    • Balance: historical reclass note. The "by asset class" chart axis is recomputed on each account's current type, so a snapshot taken before this migration for a former TFSA/RRSP account now appears under Other on that axis (it no longer shows under "TFSA"/"RRSP"). This is expected — the new by envelope axis still surfaces those CELI/REER, and no value or history is altered (#204).
    • Balance: renaming a type no longer breaks the translation (bug fix). Renaming a type used to overwrite its i18n key with the free text, clobbering the FR/EN translation. The custom name is now stored separately in balance_categories.custom_label, and the original translation key is never touched (and reappears if you clear the custom name). Migration v12 also defensively recovers any seed type whose translation key had already been clobbered by an earlier rename (#202, #203).
    • Balance: existing priced accounts auto-converted to detailed. On migration, every existing priced account (one with an asset class and a symbol) becomes a detailed account with a single position — its historical quantity/price lines are mirrored into per-security holdings with no value or history loss, and the aggregated line keeps the total. Priced accounts without an asset class or without a symbol are left untouched. The account's value and all aggregations are unchanged; you can now add further securities to the same account (migrations v14/v15/v16) (#211).

    Fixed

    • Balance: the symbol (ticker) is now optional for accounts in a priced type. A priced account can be created or edited without a symbol — manual valuation (quantity × unit price) never needed it; a symbol is only required to use the automatic price-fetch button (#199).

    Installation

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

    Downloads