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

Back

3.7.0

Aug 19, 2026

# 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.F` was 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 `nanoid` dependency.

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. 💛
