What's Changed
This release adds a per-account Activities tab, holdings export, hybrid drift bands, and cash-as-fixed-income classification, then fixes net-worth history, performance/FX, multi-currency dashboards, dashboard speed, CSV imports, custom providers, Spending, mobile, and Linux Connect deep links found after v3.5.2.
Highlights
Account Activities
- Added an Activities tab to account detail pages, reusing the existing activity tables with inline edit/delete, plus an account-filtered
Explore activitieslink with pagination. - Refined the account header (
Group › Accounton desktop, name-only on mobile), hid the redundant Holdings heading, and hid the contribution-limit prompt when no current-year limit is configured.
Holdings Export
- Added a holdings data export (core export module + server endpoint + desktop command), available from Settings → Exports.
Allocation & Rebalancing
- Added hybrid drift bands with per-sleeve tolerance —
band = max(target_bps × relative_factor, absolute_floor), defaulting to 20% relative + 1% floor. Existing absolute targets are unchanged (no silent migration), and drift notation switched fromppto%. - Added an asset-class override for cash accounts, so a HYSA / Cash ISA / Livret A / CD can be classified as fixed income instead of always charting as "Cash".
- Fixed allocation drift-tolerance display, cash allocation detail rows, and detail category switching.
Dashboard & Performance
- Reworked dashboard performance loading with a lightweight profile for account/group rows (preserving TWR for transaction-mode summaries), bounded parallelism, and retained prior values to reduce flicker; unavailable-metric reasons now link to the Health Center (#1171).
- Added a lean holdings list endpoint used across the holdings table, account/asset pages, and retirement planner for faster loads.
- Fixed the dashboard showing base currency for foreign-currency accounts (inverted
displayInAccountCurrencycondition), while preserving foreign-account warnings (#1125).
Holdings, Net Worth & History
- Fixed hidden accounts being dropped from Total and portfolio history — hidden (non-archived) accounts now stay in aggregate/history scopes (#1140).
- Fixed split-adjusted valuation history by applying split factors to price instead of mutating historical quantities; preserved alternative assets in net worth (#1140).
- Fixed synthetic holdings history backfill — stopped generating synthetic snapshots for manual/CSV/broker holdings, ignored legacy
SYNTHETICsnapshots, and render single-point histories with a real chart dot (#1105). - Added a scoped current valuation read model so current-value surfaces use the latest snapshot, quotes, and FX instead of stale daily valuation rows (#1101).
Performance & FX
- Made performance semantics explicit — typed transfer boundary classification, valuation quality/status metadata, and FX book cost anchored to lot acquisition instead of valuation-date FX (#1119, [#1142]).
- Fixed an FX rate of "1" persisted when adding a provider-sourced pair on a weekend (#1143).
CSV Import & Custom Providers
- Fixed cash-only holdings CSV imports being blocked at Review Assets (#1111, [#897]).
- Raised the symbol length cap 20 → 100 and allowed underscores in import symbols (#1145).
- Allowed ISIN-only custom provider sources and fixed bond ISIN overrides saved with a symbol (#1005, [#1107]).
- Fixed an invalid UTF-8 boundary panic in the custom provider on CJK/emoji content.
Spending & Budgets
- Surfaced backend error messages when a budget group delete fails (#1130).
- Fixed mobile spending transaction flow, period selector alignment, event tag summaries, and stable user-facing broker-sync messages (#1099).
Mobile
- Fixed the iOS viewport gap so the app uses the full screen on iPhone (#1170).
- Replaced the squeezed desktop popover with a mobile bottom sheet for custom performance date ranges (#1133).
- Fixed mobile activity filters not applying after selection.
Wealthfolio Connect (Linux)
- Fixed Connect auth deep links on Linux.
- Refactored post-login sync bootstrap and fixed activity action/filter reset and addon permission category detection.
Resolved Issues
[#1140], [#1105], [#1101], [#1142], [#1119], [#1143], [#1125], [#1111], [#897], [#1145], [#1107], [#1005], [#1130], [#1099], [#1133], [#1170]
Contributors
- @afadil
- @Jonjon-prog
- @eldossjogy
- @zephyros-dev made their first contribution in [#1106]
Full Changelog: https://github.com/wealthfolio/wealthfolio/compare/v3.5.2...v3.5.3