Skip to content

v3.6.2

Latest

Choose a tag to compare

@afadil afadil released this 13 Jul 22:05
633d3a1

A correctness release: improved portfolio returns and tax/split/dividend accounting, plus fixes for issues after the major add-on platform overhaul.

Fixes

  • Holding returns now exclude FX. Cross-currency transferred securities could report inflated returns (e.g. +120%) by folding exchange-rate movement into security performance. Return % is now computed in holding currency. (#1277)
  • Dividend-adjusted history fixed for MarketData.app — its adjusted closes were double-counting separately booked dividend cash activities, overstating returns. Run a full market-data backfill to correct stored history. (#1284)
  • Split-adjusted valuations now shared across accounts — a split entered in any account corrects historical valuation for every account that held the asset, including ones that sold before the split. (#1286)
  • Tax now deducts from cash balance for all cash activity types (Credit, Deposit, Withdrawal, cash transfers), fixing dashboard/account balances that were off by the tax amount. (#1268)
  • Contribution limits handle units-based transfers — a TRANSFER_IN with quantity/price but no stored amount no longer breaks the deposits calculation. (#1250)
  • Health Center sell-proceeds check now matches the holdings calculator, removing false positives on taxed sells. Some dismissed "missing lot disposal" warnings resurface once after upgrade (intended). (#1289)
  • Health price-sync retries behave consistently across desktop and web; empty history is treated as a neutral no-data skip instead of accumulating errors. (#740)
  • FEE/TAX activity value no longer displays 0 for tax-only activities — the frontend now mirrors the backend charge precedence. (#1290)
  • Price precision cleaned up — regular prices drop floating-point tails (268.3999939268.40) while sub-cent prices and average costs keep up to 8 decimals; custom-provider Unicode keys parse correctly; Quotes tab renamed Price History. (#1287)
  • Non-ASCII symbol search no longer panics on Nordic/Arabic/CJK/emoji input. (#1234)
  • Market-data API key input stays bound while typing/pasting a first-time key. (#1253)
  • "Where it went" dashboard widget now shows a distinct Saving row. Thanks @Jonjon-prog. (#1279)
  • AI provider permissions can be reset again — re-enabling deselected permissions is no longer silently ignored. (#1300)
  • Onboarding Connect links open reliably in the desktop app; self-hosters can opt into the MCP endpoint with WF_MCP_ENABLED=true. (#1300)

Add-ons

  • Platform overhaul completing the 3.6 sandbox model (#1260): durable per-addon SQLite storage (replacing the broken localStorage pattern, device-synced), manifest-first lazy lifecycle (contributes.routes/links, nav built without executing addon code), host-owned render root, baseline capabilities dropped from the consent prompt, self-hosted auth-gate parity, and legible sandbox error toasts.
  • Basic auth for brokered network requests (auth: { type: 'basic' }) — enables APIs like SimpleFin Bridge. (#1274)
  • Safe module-import rewriting via es-module-lexer, fixing host calls like activities.import(...) being mangled. (#1275)
  • Device-identity refactor — the persistent install ID is dropped from public settings and the addon SDK; addons using Settings.instanceId must stop relying on it. (#1270)

Internationalization

  • Activity type/subtype names now localized in badges, tables, filters, import, and the AI tool. Thanks @FlyingDuck. (#1243)
  • Interval selector labels (1D/1W/…/ALL) now localized. Thanks @FlyingDuck. (#1242)
  • Non-Latin category creation fixed (e.g. 贵金属, عقارات) — no longer silently fails. Thanks @FlyingDuck. (#1247)
  • Spain (es) spending categorization preset added alongside US/CA/GB. Thanks @blastik.

Full Changelog: v3.6.1...v3.6.2