Wealthfolio 3.7.0 — Release Notes
Wealthfolio 3.7.0 adds closed positions and cash to the holdings table, ships Japanese and Korean locales, separates UI language from regional formatting, and rebuilds the add-on runtime so add-ons load on iOS and Safari. Broker sync now reads contract multipliers exactly and stops confusing share-class suffixes with exchange suffixes.
Holdings — open, closed, and cash
- Open / Closed view control sits before the search box. Open is the default.
- Closed positions show disposed cost basis, sale proceeds, realized P&L, and realized return instead of market-value columns. Option expiries are included.
- Cash moved into the Type filter alongside stocks, ETFs, and bonds, with its portfolio weight shown on desktop and mobile.
- Quantity labels match the instrument: units for ETFs and mutual funds (parts, Anteile, participaciones, 口, 좌, 份), bonds for debt securities, contracts for options, shares for stocks.
Closed positions stay distinct from open ones for the same asset even when long and short net to zero, and remain searchable by instrument name. The mobile holdings view carries the same controls. Thanks to @DamienKCorp.
Japanese and Korean — seven languages
Complete community-contributed 日本語 and 한국어 locales, both at full coverage across all 20 namespaces. Wealthfolio now ships English, Français, Deutsch, Español, 简体中文, 日本語, and 한국어. Thanks to @shiv3 and @moduvoice.
UI language separated from regional formatting
Settings → Language & Region now holds two independent settings:
- Language — UI text and control labels.
- Region & formats — dates, times, decimal separators, percentages, and currency presentation.
Changing the interface language no longer changes financial and date conventions.
Eleven options ship — System, Canada, United States, United Kingdom, France, Germany,
Spain, Mexico, China, Japan, South Korea — with a live preview of dates, numbers,
currency, and time. Date order (dd/MM/yyyy or MM/dd/yyyy) and 12-hour or 24-hour
time follow the selected region, and System picks up the operating system’s own
locale, which covers regions without a dedicated entry. (#246)
Arabic and Persian digits, and Persian and Thai calendars, parse and round-trip correctly. Amount fields accept local decimal separators and machine-formatted currency paste without truncating on commit. Add-ons receive the same locale settings as the host.
Remaining English strings were translated across the Net Worth page and category labels, the retirement planner, dashboard goal cards, and the activity search placeholder. Thanks to @DamienKCorp.
Add-on runtime rebuilt
The add-on sandbox is now origin-independent — its runtime loads from resources handed in by the host rather than fetched from an origin. This resolves the WebKit and iOS loading failure. Add-ons also get a private, per-add-on asset registry for images, fonts, media, configuration, and Wasm, delivered only to the add-on that owns them.
Minimum versions have changed. Wealthfolio now requires iOS/iPadOS 16, macOS 12, and
Chrome/Edge 107, Firefox 104, or Safari 16 or newer. On macOS 12, apply current system
and Safari updates so the built-in WebView meets the Safari 16 floor. Existing add-ons keep
working; add-ons using the new asset API must declare minWealthfolioVersion 3.7.0.
Broker sync accuracy
Two accuracy problems, both found against live brokerage connections:
- Contract multipliers are read exactly from the broker instead of inferred, so futures, CFDs, and non-standard option contracts are valued correctly.
- One identity per instrument. A hedged ETF unit class such as
ZAAA.Fwas filed under the unhedged listing — a separate fund quoted about 3% apart — because the suffix was stripped as an exchange marker. Suffixes are now checked against the venue the instrument actually trades on, and exchange codes resolve consistently across positions and transactions. Thanks to @rwgs.
AI assistant safety policy
The assistant now runs against a single versioned prompt with an explicit boundary around financial decisions. Direct requests still produce editable activity drafts; instructions embedded in an attached file or a tool result cannot authorize one. CSV attachments keep the existing import-preview flow, and persistence still requires explicit confirmation in the review screen.
Improvements
- SSO auto-redirect. When OIDC is the only login method, the login page navigates straight to the identity provider. A per-tab guard keeps a failed round-trip from looping. Thanks to @fmaass. (#1343)
- Rebalance planner reachable in-band. The “Review rebalance” action now renders whenever a handler is wired, not only when a category is out of band. Drift is computed on invested value, so idle cash never produces drift. Thanks to @fmaass. (#1444)
- Spending rule account scope. The documented Applies To scope now has a control in the rule editor, and account-scoped rules show which account they target. Previously every rule created in the UI was global, and scoped rules created by the assistant were invisible and un-editable. Thanks to @kryofin. (#1350)
- Australia and New Zealand spending presets — 37 rules each, matched against local
statement shorthand (
WOOLIES,WW METRO,MACCAS,PAK'N SAVE). Thanks to @Hysterelius. - Mobile. Horizontal scrolling restored for spending categories; liability value history is a responsive mobile list with inline editing instead of a desktop grid.
- Onboarding. Denser, more consistent preferences and appearance layouts.
Fixes
- Returns for accounts with a negative opening balance. A trade recorded before the deposit covering it made both time-weighted and value return unavailable for the whole period. Returns now start from the first properly funded day. (#1425)
- Refunds counted as gains. A refund reversed spending but was still counted as portfolio gain. Credits now carry an explicit internal/external boundary, visible and correctable in the activity grid and CSV review. (#1403)
- “Unknown” allocation slice. Broad-market ETFs report an asset breakdown summing to slightly under 100%; that residual was shown as an unclassified category containing already-classified holdings. Thanks to @kryofin. (#1439)
- Phantom $0 rows in Net Worth. Liquidated accounts left rounding dust that kept emitting rows in the Cash and Liabilities breakdowns. Thanks to @kryofin. (#1459)
- Foreign-currency accounts. The dashboard no longer shows a gain amount labeled with the wrong currency. Thanks to @Neallin-917. (#1426)
- Retirement and goal amounts are converted to the account’s currency instead of raw US dollar presets relabeled, and inputs accept realistic values in high-denomination currencies. Thanks to @nofanto. (#1475)
- Holding details overlapping performance when the window is narrowed. Thanks to @Neallin-917. (#1438)
- Table sorting is preserved when switching to a view without the sort column.
- Account pickers reflect programmatic changes, and long dropdowns stay a constrained height.
- Market data picks up Yahoo Finance 4.2 retry and request-handling fixes.
- Security patch for the
nanoiddependency.
Wealthfolio is local-first and open source. Thanks to @shiv3, @moduvoice, @DamienKCorp, @kryofin, @fmaass, @Neallin-917, @rwgs, @nofanto, and @Hysterelius for their work on this release. 💛