What's Changed
- fix(cashflow): exclude transfer categories from sankey by @victor-falcon in #235
- feat(cashflow): track transfer categories in trends by @victor-falcon in #236
- feat(cashflow): show tracked transfers in Sankey diagram by @victor-falcon in #237
- fix(dashboard): treat loans as debt in net worth by @victor-falcon in #238
- feat(accounts): allow setting initial balance when creating balance-tracking accounts by @victor-falcon in #239
- chore: rework neutral light scheme colors by @victor-falcon in #240
- feat(accounts): add real estate asset tracking by @victor-falcon in #241
- fix: batch Pennant feature flag queries to avoid N+1 selects by @victor-falcon in #244
- feat(accounts): show mortgage data and equity on real estate account page by @victor-falcon in #243
- chore: upgrade Laravel 12 to 13 by @victor-falcon in #242
- feat(accounts): add market value and annual revaluation to real estate accounts by @victor-falcon in #245
- feat(accounts): add loan amortization projections for loan accounts by @victor-falcon in #246
- fix(accounts): use chart color scheme for real estate sparkline and balance charts by @victor-falcon in #247
- Fix net worth chart config UX and color scheme issues by @victor-falcon in #250
- fix(banking): retry failed sync connections and log every sync attempt by @victor-falcon in #251
- test(budgets): stabilize budget rename browser test by @victor-falcon in #255
- chore: Remove account-mapping feature flag by @victor-falcon in #252
- fix(cashflow): net transfer categories in sankey by @victor-falcon in #257
- chore: replace Caddy with Portless for local HTTPS proxy by @victor-falcon in #258
- feat(settings): centralize currency options and split profile/account support by @victor-falcon in #256
- fix(loans): project monthly balances from actual entries instead of original params by @victor-falcon in #259
- fix: add missing port to frontend Bugsink DSN by @victor-falcon in #260
- Make bank selection optional when creating or updating accounts by @victor-falcon in #261
- fix: split drip and default email senders by @victor-falcon in #263
- feat: store invested_amount in user currency instead of account currency by @victor-falcon in #262
- chore: Generate random port on composer run dev by @victor-falcon in #264
- fix: make transaction sync email use default sender by @victor-falcon in #265
- fix: reorder signed names in mail templates by @victor-falcon in #266
- fix: prioritize exact bank search matches by @victor-falcon in #267
- chore: Change mobile menu translation on spanish by @victor-falcon in #268
- fix: preserve cents in chart amounts by @victor-falcon in #270
- fix: default account charts to user currency by @victor-falcon in #271
- feat: add appearance shortcut to user menu by @victor-falcon in #269
- fix: clarify mobile settings navigation by @victor-falcon in #272
- fix: align onboarding account types with current asset support by @victor-falcon in #273
- fix: clarify account creation modal copy by @victor-falcon in #274
- fix: default to standard onboarding option by @victor-falcon in #276
- test: expand browser coverage for accounts and linked loans by @victor-falcon in #277
- feat: link loans to existing properties by @victor-falcon in #275
- test: expand browser coverage for account types and transactions by @victor-falcon in #279
- fix: keep iOS content below the notch by @victor-falcon in #280
- fix: avoid iOS PWA status bar overlap by @victor-falcon in #281
- fix: keep iOS popovers below the notch by @victor-falcon in #282
- feat: sync user leads to resend by @victor-falcon in #283
- chore: remove hardcoded resend segment ID by @victor-falcon in #284
- feat: verify waitlist leads by @victor-falcon in #285
- feat: selective retry of failed lead email jobs by @victor-falcon in #286
- feat: resend verification emails to unverified leads by @victor-falcon in #287
- feat(real-estate): auto-calculate revaluation % and generate historical balances by @victor-falcon in #253
- fix(pricing): update final release prices by @victor-falcon in #288
- Cancel Enable Banking connections for free users by @victor-falcon in #289
- fix: limit bank sync emails to one per day by @victor-falcon in #290
- chore: configure production Sentry integration by @victor-falcon in #291
- fix(open-banking): sort bank sync email data by @victor-falcon in #292
- fix(schedule): remove stale horizon snapshot by @victor-falcon in #293
- chore: track Sentry releases in CI by @victor-falcon in #294
- fix(open-banking): skip silent sync emails by @victor-falcon in #295
- fix(user): persist detected timezones by @victor-falcon in #296
- test(schedule): remove stale horizon snapshot by @victor-falcon in #298
- feat(open-banking): remove feature flag gating by @victor-falcon in #297
- chore: add sentry mcp by @victor-falcon in #300
- fix(demo-reset): use renamed 'ING Direct' bank by @victor-falcon in #301
- fix(cashflow): read period from server props instead of window by @victor-falcon in #302
- fix(budgets): make budget assignment idempotent by @victor-falcon in #303
- fix(budgets): retry assignment deadlocks by @victor-falcon in #304
- chore: Use caveman on AGENTS.md by @victor-falcon in #305
- fix(open-banking): respect local email hours by @victor-falcon in #306
- fix(auth): allow forced registration by @victor-falcon in #307
- refactor(real-estate): remove Pennant gating by @victor-falcon in #308
- fix(ci): order sentry deploy after build by @victor-falcon in #309
- fix(open-banking): suppress first sync email by @victor-falcon in #310
- feat(stripe): add promo code generator by @victor-falcon in #311
- feat(landing): add signed auth links by @victor-falcon in #312
- fix: route new PWA guests to signup by @victor-falcon in #313
- chore: add PR check watch note to AGENTS by @victor-falcon in #314
- fix: expose pi mcp extension as mcps.ts by @victor-falcon in #315
- Support soft-deleted users with reusable emails by @victor-falcon in #316
- fix(chart): tooltip escapes overflow, truncates long labels by @victor-falcon in #317
- fix(dashboard): dismiss account card tooltip when tapping outside by @victor-falcon in #318
- chore: copy .pi dir in worktree setup by @victor-falcon in #319
- fix(chart): hide tooltip on scroll with opacity fade by @victor-falcon in #320
- feat(accounts): add today marker on projected balance chart by @victor-falcon in #321
- worktree: Update script by @victor-falcon in #323
- feat(subscriptions): add configurable trial period to paid plans by @victor-falcon in #324
- feat(billing): apply Stripe tax rates to subscriptions by @victor-falcon in #325
- feat(loans): backfill historical balances on loan creation by @victor-falcon in #322
- ci: add manual release workflow by @victor-falcon in #326
- Use Bun in manual release workflow by @Copilot in #327
- chore: remove release workflow by @victor-falcon in #330
- fix(i18n): translate Unknown Income/Expense and other missing ES strings by @victor-falcon in #331
- fix(docker): ensure www-data owns storage after artisan commands by @victor-falcon in #329
Full Changelog: v0.1.19...v0.1.20