Source: https://wealthfolio.app/changelog/3_5_3/

Back

3.5.3

Jun 25, 2026

# Wealthfolio 3.5.3 — Release Notes

Wealthfolio 3.5.3 is a polish-and-accuracy release. It adds a per-account Activities tab, holdings export, and two allocation upgrades — then works through a long list of correctness fixes across net-worth history, performance, multi-currency dashboards, CSV imports, dashboard speed, and mobile.

* * *

#### **Account Activities, Right Where You Need Them**

-   **New Activities tab** on every account detail page, reusing the familiar activity table with inline edit and delete.
-   **Account-scoped exploration.** Jump straight to a pre-filtered `Explore activities` view for just that account.
-   **Cleaner account headers.** Desktop now shows `Group › Account` and the account name opens the switcher; mobile keeps it to just the name. The redundant Holdings heading is gone, and the contribution-limit prompt only appears when a limit is actually configured.

#### **Export Your Holdings**

A new holdings export joins the existing data exports — get a clean snapshot of your current positions from **Settings → Exports**, available on both desktop and self-hosted web.

#### **Smarter Rebalancing & Cash Classification**

-   **Hybrid drift bands.** Absolute tolerance bands under-correct small sleeves and over-correct large ones — a 5% target sleeve under a ±5% band can double to 10% before triggering. Hybrid bands scale each sleeve’s tolerance to its target weight with an absolute floor (default 20% relative + 1% floor). Existing absolute targets keep their behavior — no silent migration. Drift now reads in plain `%` instead of percentage points. _Thanks to @Jonjon-prog._
-   **Cash as fixed income.** A high-yield savings account, Cash ISA, Livret A, or CD is economically fixed income, but it was always charted as “Cash”. You can now set an **asset-class override** on a cash account so it counts where it belongs in your allocation. _Thanks to @Jonjon-prog._

#### **A Faster, Calmer Dashboard**

Dashboard performance loading was reworked to use a lightweight profile for account and group rows (while preserving true TWR for transaction-mode summaries), run with bounded parallelism, and keep prior values on screen to cut flicker. When a metric can’t be shown, the reason now links straight to the Health Center.

#### **More Accurate Net Worth & History**

-   **Hidden accounts now count.** Hiding an account only removes it from view — it’s no longer dropped from your Total and from portfolio history (#1140 cohort).
-   **Split-adjusted history fixed.** Historical market value before a stock split is now valued by applying split factors to price instead of mutating past quantities, so pre-split dates no longer understate value (#1140).
-   **No more fake history dots.** Synthetic snapshots are no longer generated for manual, CSV, and broker-imported holdings; single-point histories render a real chart dot, and legacy synthetic snapshots are cleaned up (#1105).
-   **Fresher current values.** Dashboards and account headers now read from your latest holdings snapshot, quotes, and FX rather than a stale daily valuation row (#1101).

#### **Performance & Currency Fixes**

-   **FX book cost anchored to facts.** Performance now classifies transfer boundaries explicitly and anchors FX book cost to lot-acquisition data instead of the valuation-date rate (#1119, #1142).
-   **No more FX rate of “1”.** Adding a provider-sourced currency pair on a weekend no longer persists a placeholder rate of 1 (#1143).
-   **Correct currency on the dashboard.** Foreign-currency accounts now show their own currency and total instead of being forced into your base currency, with warnings preserved (#1125).

#### **Imports & Custom Providers**

-   **Cash-only holdings imports work.** A holdings CSV containing only `$CASH` rows no longer dead-ends at the Review Assets step (#1111, #897).
-   **Longer symbols allowed.** The symbol field cap is raised from 20 to 100 characters and now accepts underscores, for custom data-provider tickers (#1145).
-   **ISIN-only custom providers.** Custom scraper sources can resolve from an asset’s ISIN at runtime, and bond ISIN overrides saved with a symbol now resolve correctly (#1005, #1107).
-   **International pages no longer crash custom providers.** Fixed a UTF-8 boundary panic on CJK and emoji content. _Thanks to @zephyros-dev._

#### **Spending & Budgets**

-   **Real error messages** now surface when a budget group can’t be deleted, instead of a generic failure (#1130).
-   **Steadier spending flows.** Fixes to the mobile transaction form and period selector, event summaries that include all tagged activities, and stable user-facing broker-sync messages (#1099).

#### **Mobile**

-   **Full-screen on iPhone.** Fixed the viewport gap that kept the app from using the full screen on iPhone (#1170).
-   **Native date-range picker.** The Performance tab’s custom range now opens a mobile bottom sheet instead of squeezing in the desktop popover (#1133).
-   **Activity filters apply.** Selecting filters in the mobile activity modal now takes effect immediately. _Thanks to @eldossjogy._

#### **Wealthfolio Connect on Linux**

Cold-start Connect auth callbacks are no longer lost on Linux — deep-link startup URLs are consumed correctly and a packaged `x-scheme-handler/wealthfolio` desktop handler is registered.

Wealthfolio is local-first and open source. Thank you to our community contributors who made this release possible. 💛
