0.7.0: feat(docs): competitor-inspired feature backlog (NF22–NF32) (#457)
leverage ponytail to remove the redundant code
What's Changed
- feat: build Percento-like net worth tracker by @mike840609 in #1
- docs: initialize CLAUDE.md by @mike840609 in #2
- Feat: Percento-style Share-Based Investment Tracking by @mike840609 in #3
- Support 7-decimal crypto qty, fix crypto price fetching, and add edit holding UI by @mike840609 in #4
- allow-adding-item-multiple-time by @mike840609 in #5
- Allow users to modify and delete transaction history by @mike840609 in #6
- Fix: allow dev server network access by @mike840609 in #7
- Enhance UI and Fix Mobile Scroll by @mike840609 in #8
- Categorize accounts and show base currency totals by @mike840609 in #9
- Dashboard and Account UI Enhancements by @mike840609 in #10
- feat: Bank balance updates and 0-qty holdings filter by @mike840609 in #11
- Bank Balance Updates, Holdings Filter, and Metadata Fixes by @mike840609 in #12
- Dashboard Enhancements & Theme Toggle by @mike840609 in #13
- Automated Snapshots & Documentation Update by @mike840609 in #14
- Support mobile theme toggle and automated snapshots by @mike840609 in #15
- Dark mode refinement, performance, mobile nav auto-hide, and chart fixes by @mike840609 in #16
- feat: Google OAuth Integration by @mike840609 in #17
- Feat: Google Auth Integration and Prisma 7 Deployment by @mike840609 in #18
- Fix: Handle Orphaned JWT Sessions Gracefully by @mike840609 in #19
- feat: performance enhancements and SSL security fix by @mike840609 in #20
- feat: install and configure @vercel/speed-insights by @mike840609 in #21
- perf: optimize dashboard loading for better FCP/LCP by @mike840609 in #22
- Performance Optimizations: Tab Switching & Exchange Rates by @mike840609 in #23
- Performance: Account Detail Optimizations by @mike840609 in #24
- Revert "Performance: Account Detail Optimizations" by @mike840609 in #25
- perf: optimize API response times and page render speed by @mike840609 in #26
- feat: i18n support for zh-TW and en-US by @mike840609 in #28
- Login i18n & Region-based Defaults by @mike840609 in #29
- Implement Inline Account Name Editing by @mike840609 in #30
- feat: redesign favicon and login page icon with emerald gradient coin by @mike840609 in #31
- UI: Rounded Square Icons and Hover Animations by @mike840609 in #32
- perf: split i18n messages per route to reduce HTML payload by @mike840609 in #33
- feat: split All Accounts into separate Assets and Liabilities tables by @mike840609 in #34
- fix: improve mobile layout of accounts summary table by @mike840609 in #35
- feat: add Net Worth History page by @mike840609 in #36
- feat: lossless net worth history normalization by @mike840609 in #37
- Fix: Cron Trigger Schedule and Middleware Bypass by @mike840609 in #38
- perf: optimize dashboard loading and API refreshes by @mike840609 in #39
- feat: robust data import/export with validation by @mike840609 in #40
- feat: implement currency exposure chart by @mike840609 in #41
- feat: implement transaction pagination and infinite scroll by @mike840609 in #42
- Optimize Snapshot Cronjob by @mike840609 in #43
- Revert "Optimize Snapshot Cronjob" by @mike840609 in #44
- Add 17 new tasks to SUGGESTIONS.md with detailed implementation guidance by @mike840609 in #45
- feat: fix transaction pagination and add i18n to transaction history by @mike840609 in #46
- feat: add column-based sorting to holdings table by @mike840609 in #47
- Fix O(n²) symbol lookup and reduce client bundle size by @mike840609 in #48
- Update cron schedule to trigger at 05:30 Taiwan time (21:30 UTC) by @mike840609 in #49
- Update SUGGESTIONS.md with 2026-04-10 targeted items (security, reliability, testing) by @mike840609 in #51
- Enable trustHost in NextAuth configuration by @mike840609 in #55
- Update auth.config.ts by @mike840609 in #57
- docs: add composite index performance recommendation by @mike840609 in #56
- feat: add preview-only credentials login for Vercel preview deployments by @mike840609 in #59
- feat: add performance & UX audit findings (items 59–70) by @mike840609 in #60
- Simplify history normalization and fix account list collapse animation by @mike840609 in #61
- docs: mark #61/#62 done and add loading-speed suggestions #71-75 by @mike840609 in #62
- feat: eliminate Phase 1→2 waterfall in DashboardContent (#72) by @mike840609 in #63
- Add caching layer and optimize exchange rate resolution by @mike840609 in #64
- docs: add code-quality refactor suggestions #76-87 by @mike840609 in #65
- fix: extract calculateBalanceDelta() for cash-tx create/edit/delete (#86) by @mike840609 in #66
- refactor: code quality improvements #78, #81, #83, #84, #85, #87 by @mike840609 in #67
- refactor: code quality improvements #76, #79, #80 by @mike840609 in #68
- Add formatQuantity() helper and centralize quantity formatting by @mike840609 in #69
- Reorganize SUGGESTIONS.md and add performance deep-dive items by @mike840609 in #70
- Optimize price cache updates with batched transactions by @mike840609 in #71
- feat: add Safari Add to Home Screen tutorial and apple touch icon by @mike840609 in #72
- perf: fix caching bugs and parallelise history page fetch by @mike840609 in #73
- feat: add Analysis tab with monthly net-worth breakdown by @mike840609 in #74
- Fill gaps in monthly analysis charts with synthesized data by @mike840609 in #75
- Improve chart responsiveness and spacing on mobile devices by @mike840609 in #77
- Add privacy mode and privacy policy page by @mike840609 in #78
- Add performance suggestions #93-#99 by @mike840609 in #79
- Settings Page Redesign & UX Improvements by @mike840609 in #80
- perf: deduplicate recentSnapshots query via React cache() (#93) by @mike840609 in #81
- perf: lazy-load AccountForm and QuickAddHolding in AccountsList by @mike840609 in #83
- docs: update SUGGESTIONS.md with items #100–108 (multi-tenant, cron, pagination, caching, perf) by @mike840609 in #84
- Optimize dashboard charts with useMemo to prevent unnecessary recalculations by @mike840609 in #82
- docs: Add 27 new suggestions (security, a11y, perf, DX) by @mike840609 in #85
- docs: add Vercel deploy analysis with V1-V15 enhancement suggestions by @mike840609 in #86
- perf: implement Vercel performance suggestions V2, V4, V5, V6 by @mike840609 in #87
- docs: mark V8 blocked — edge runtime incompatible with Cache Components by @mike840609 in #88
- docs: add V16–V26 performance enhancement roadmap (2026-04-18) by @mike840609 in #89
- style(dark-mode): switch palette to Midnight Teal by @mike840609 in #90
- fix(dashboard): reserve chart card height to eliminate CLS (V23) by @mike840609 in #91
- perf: implement V25 (INP) and V26 (TTFB) from Vercel analysis by @mike840609 in #92
- Migrate service-layer reads to Next.js 16 "use cache" directive by @mike840609 in #93
- Implement V30 + V31: startTransition for mutators and avatar image optimization by @mike840609 in #94
- fix(dashboard): serialize accounts before "use cache" boundary to fix Decimal error by @mike840609 in #95
- feat: trim Speed Insights telemetry (V32) by @mike840609 in #96
- Revert "feat: trim Speed Insights telemetry (V32)" by @mike840609 in #97
- Revert "Revert "feat: trim Speed Insights telemetry (V32)"" by @mike840609 in #98
- fix(dashboard): revert chart card height changes from c8d7a76 by @mike840609 in #99
- feat: improve chart tooltip readability in dark mode by @mike840609 in #100
- feat: add @next/bundle-analyzer and documentation by @mike840609 in #102
- Enhance chart UI in privacy/hide mode by @mike840609 in #104
- Lazy-load dashboard pie charts (B2) — dynamic import AllocationChart & CurrencyExposureChart by @mike840609 in #106
- Add consolidated docs: Asset Tracker review suggestions backlog by @mike840609 in #107
- Disable chart interactions while privacy (hide) mode is enabled by @mike840609 in #108
- Add
server-onlyguards and Neon WebSocket server setup to keep server libs out of client bundles by @mike840609 in #105 - perf(accounts): lazy-load holding dialogs (–17% /accounts/[id] chunk) by @mike840609 in #110
- Revert "perf(accounts): lazy-load holding dialogs (–17% /accounts/[id] chunk)" by @mike840609 in #111
- Revert "Add
server-onlyguards and Neon WebSocket server setup to keep server libs out of client bundles" by @mike840609 in #112 - Revert "Lazy-load dashboard pie charts (B2) — dynamic import AllocationChart & CurrencyExposureChart" by @mike840609 in #113
- fix(charts): disable Recharts animations on mobile for instant interactivity by @mike840609 in #115
- Revalidate Next cache tags after account/holding mutations and secure holdings endpoints by @mike840609 in #116
- docs: Add rendering strategy analysis (SSG → PPR → ISR) by @mike840609 in #117
- Remove "max" revalidation option from all revalidateTag calls by @mike840609 in #118
- Mark login and privacy pages as static with force-static by @mike840609 in #119
- Implement PR4 ISR caching recommendations (I1, I2, I3, I5) by @mike840609 in #120
- Implement RP5: add 15-minute
revalidatebackstop for (main) PPR routes and update docs by @mike840609 in #121 - Implement PR3: PPR verification (P1) + /accounts cached helpers (P2) by @mike840609 in #122
- enable bar chart animation by @mike840609 in #123
- Add Phase 2 analysis charts: cash flow, categories, and top movers by @mike840609 in #76
- Fix: Align analysis chart layouts and Y-axis widths by @mike840609 in #124
- UI: Make dashboard info more compact on mobile screens by @mike840609 in #125
- Add validated runtime env module and replace direct env assertions by @mike840609 in #126
- Redesign Dashboard Pie Charts by @mike840609 in #132
- Set dark default theme and fix Settings language selector by @mike840609 in #133
- Revert "Set dark default theme and fix Settings language selector" by @mike840609 in #134
- Set default theme to dark and improve locale resolution in settings form by @mike840609 in #135
- feat: apply dark mode styles to login page by @mike840609 in #137
- Rename project to Assets Tracker by @mike840609 in #138
- chore: Add Open Graph and Twitter Card metadata by @mike840609 in #139
- Fix OpenGraph and Twitter image paths by @mike840609 in #140
- fix: remove explicit OG image paths that conflicted with file-based metadata by @mike840609 in #141
- fix: exclude OG and Twitter image routes from auth middleware by @mike840609 in #142
- docs: add pre-market-launch readiness audit + refresh CLAUDE.md by @mike840609 in #143
- security: add baseline headers (R1) and API rate limiting (R3) by @mike840609 in #144
- add feature implementation skill by @mike840609 in #145
- feat: add CI workflow for lint, type-check, and build (R20) by @mike840609 in #148
- R14: add timeout + retry guards on Yahoo Finance / CoinGecko calls by @mike840609 in #150
- fix(auth): skip auth-gate redirect for /api/auth/* in middleware by @mike840609 in #154
- fix(ci): sync package-lock.json with package.json by @mike840609 in #155
- fix(ci): regenerate package-lock.json with npm 10 by @mike840609 in #157
- chore(ci): bump checkout/setup-node to v5 by @mike840609 in #158
- chore: update Claude local settings by @mike840609 in #156
- feat(e2e): add Playwright smoke test suite (R21) by @mike840609 in #149
- feat: add Terms of Service page (R6) by @mike840609 in #161
- feature: Verify Google OAuth consent screen (R9) by @mike840609 in #160
- feat(R11): Add error.tsx, global-error.tsx, and not-found.tsx by @mike840609 in #159
- Revert "feat(R11): Add error.tsx, global-error.tsx, and not-found.tsx" by @mike840609 in #164
- fix(settings): swap export/import icons and align export button style by @mike840609 in #167
- fix: fix the settings page css by @mike840609 in #169
- fix(dashboard): show daily change badge for all base currencies by @mike840609 in #168
- fix(e2e): isolate tests to dedicated user, add global teardown by @mike840609 in #170
- docs: refresh CLAUDE.md and README.md to match current state by @mike840609 in #172
- Run Prisma migrations during Vercel builds by @mike840609 in #174
- ui: add favicon-style app icon and polish accounts dark mode by @mike840609 in #175
- Add support for options trading with OCC symbol parsing by @mike840609 in #171
- Fix options account display by @mike840609 in #177
- ui: mobile navbar auto-hide and pull-to-refresh by @mike840609 in #178
- docs: add UI/UX suggestions for iOS-native mobile feel by @mike840609 in #180
- Fix pull-to-refresh indicator positioning and z-index by @mike840609 in #179
- fix(db): use DIRECT_URL for prisma migrations to avoid pooler timeouts by @mike840609 in #181
- fix: enable Safari homescreen standalone mode (PWA) by @mike840609 in #183
- feat: replace tables with iOS-style inset grouped lists by @mike840609 in #185
- feat: replace transaction history table with date-grouped inset list by @mike840609 in #186
- docs: mark done/partial/pending status on UI_UX_SUGGESTIONS by @mike840609 in #188
- docs: add Codex UI/UX enhancement recommendations by @mike840609 in #191
- feat: iOS 11+ large-title navigation bar pattern by @mike840609 in #190
- Implement bottom-sheet style for account & holding dialogs (mobile) by @mike840609 in #193
- Improve dashboard skeleton shimmer and net-worth hero mesh by @mike840609 in #194
- fix(e2e): skip smoke tests on Production deployments; improve timeout and error messaging by @mike840609 in #196
- fix(mobile): constrain add-account dialog height to prevent overflow by @mike840609 in #197
- feat: add haptics and spring motion (UI/UX item 5) by @mike840609 in #198
- feat: add swipe actions on holding rows (UI/UX item 9) by @mike840609 in #199
- style: iOS-style rounded pill buttons for swipe actions by @mike840609 in #200
- Add iOS-style slide transitions for account navigation (UI/UX item 10) by @mike840609 in #201
- Add opt-out flag for preview password login gate by @mike840609 in #202
- Add desktop command palette + keyboard shortcuts, price-refresh hook, and sticky history headers by @mike840609 in #203
- Add persisted icons-only collapsible desktop sidebar and update docs by @mike840609 in #204
- Add Comfortable/Compact density toggle (UI/UX desktop item) by @mike840609 in #206
- Polish command palette: i18n, platform shortcuts, sign out by @mike840609 in #205
- feat: add sidebar collapse shortcut (Ctrl/⌘+B) and command-palette action by @mike840609 in #207
- feat: implement inline validation and numeric keyboards (Item 11) by @mike840609 in #208
- fix: restore dialog position on mobile for swipe-to-edit sheet by @mike840609 in #209
- fix: change privacy mode shortcut from Ctrl+Shift+P to Ctrl+Shift+Y by @mike840609 in #210
- docs: add critical documentation gaps audit (CRITICAL_GAPS.md) by @mike840609 in #211
- docs: mark done items and update LOG.md through 2026-05-05 by @mike840609 in #212
- feat: simplify shortcuts, fix browser conflicts, add I for quick-add holding by @mike840609 in #213
- feat: undo-first destructive actions (UI/UX #12) by @mike840609 in #214
- ci: skip CI and Vercel deployments for doc-only changes by @mike840609 in #173
- Add .worktreeinclude by @mike840609 in #215
- Revert "ci: skip CI and Vercel deployments for doc-only changes" by @mike840609 in #217
- feat: iOS typography — SF Pro font stack + tighter net-worth letter-spacing (UI/UX #8) by @mike840609 in #218
- docs: performance enhancement plan (PE1–PE19) by @mike840609 in #221
- docs: add CODE_QUALITY_SUGGESTIONS.md (Q1–Q20) by @mike840609 in #220
- docs: consolidate docs/ 12→6 themed files + 2026-05-08 status audit by @mike840609 in #222
- perf: add server-only guards (B1, B8) and dynamic imports (B6, B11, PE6) by @mike840609 in #224
- perf: close PE4/PE5/PE8/PE9/PE10/PE11/PE12/PE14 + S#91 by @mike840609 in #225
- fix: implement PE1-PE3, PE7, PE13/B10, PE15 performance items by @mike840609 in #226
- Add pre-commit hooks and code quality checks by @mike840609 in #227
- docs: add UI/UX Enhancement Addendum with targeted recommendations to UI_UX.md by @mike840609 in #228
- Improve accessibility baseline for keyboard and screen readers by @mike840609 in #229
- docs: update UI/UX enhancement suggestions based on codebase review by @mike840609 in #230
- feat: implement iOS theme color and splash screens by @mike840609 in #231
- Improve mobile bottom nav, add dashboard freshness badges, and update UI/UX doc by @mike840609 in #232
- Refactor: Extract duplicated swipe-row logic into shared component by @mike840609 in #233
- Fix/feature skill docs by @mike840609 in #234
- feat: unified motion token system and hydration fix by @mike840609 in #235
- Reduce account detail RSC bursts by @mike840609 in #236
- docs: add crucial codebase review suggestions by @mike840609 in #237
- feat: implement mobile chart interaction model by @mike840609 in #239
- fix: reduce mobile tab-switch lag by @mike840609 in #241
- docs: add 2026-05-11 codebase review (items 144-151) by @mike840609 in #242
- fix(dashboard): hide refresh button on mobile, rely on pull-to-refresh by @mike840609 in #243
- fix(dashboard): eliminate Recharts width(-1)/height(-1) console warnings by @mike840609 in #244
- fix(db): tenant isolation, cache invalidation, and query over-fetch by @mike840609 in #245
- fix(dashboard): keep price-updated and snapshot tags on one row on mobile by @mike840609 in #246
- fix(dashboard): fix stale now reference causing wrong time after pull-to-refresh by @mike840609 in #247
- Fix price refresh timestamp display across manual and pull-to-refresh by @mike840609 in #248
- feat(perf): resolve all remaining bundle optimization items (B3–B5, B9, B12, B14) by @mike840609 in #249
- feat(mobile): tighten mobile spacing and upgrade trend chart crosshair by @mike840609 in #250
- feat(infra): harden Vercel config — maxDuration, skewProtection, poweredByHeader, image TTL (V34–V36) by @mike840609 in #251
- feat(ux): pro broker desktop layout for accounts/holdings by @mike840609 in #252
- feat(ux): desktop accounts list data table at lg+ (D4) by @mike840609 in #253
- Align net worth trend chart x-axis label slope with other charts by @mike840609 in #255
- ci: enforce format+lint+typecheck in pre-push hook and document pre-PR checklist by @mike840609 in #257
- docs: add mobile screen size UI/UX improvement section (M1–M9) by @mike840609 in #256
- fix(mobile): M4 holdings action always visible on touch, M5 login card responsive padding by @mike840609 in #259
- feat(dashboard): equal-height chart cards with trend chart filling card by @mike840609 in #260
- feat(mobile): accounts visual refresh + dashboard enhancements by @mike840609 in #261
- docs: add suggestions_20260515.md (consolidated enhancement digest) by @mike840609 in #262
- docs(vercel): add MCP findings F1-F8 + pin engines.node to 24.x by @mike840609 in #263
- fix: stack time selector below title on mobile to prevent overflow by @mike840609 in #264
- Add customizable color schemas with 6 theme options by @mike840609 in #266
- Refine Anthropic color schema with sandy neutrals and coral by @mike840609 in #268
- fix: anchor pull-to-refresh indicator below iOS safe-area-inset-top by @mike840609 in #269
- feat(accounts): extend desktop table with Currency, Native, Allocation % columns by @mike840609 in #270
- docs: add future feature ideas backlog (F1-F25) by @mike840609 in #271
- feat(projections): add FIRE/retirement projection page (F2) by @mike840609 in #275
- refactor: extract shared chart tick formatter, fix hydration and dead code in F2 projections by @mike840609 in #276
- docs: update CLAUDE.md, README, and docs to reflect shipped features by @mike840609 in #277
- feat(analysis): F11 — performance attribution chart by @mike840609 in #274
- feat(goals): F1 — net-worth goals & milestones by @mike840609 in #272
- feat: extend command palette shortcuts to include Goals and Projections tabs by @mike840609 in #279
- fix(analysis): keep range selector buttons on-screen on mobile by @mike840609 in #282
- enhance export/import: add goals, option fields, and tighter validation by @mike840609 in #280
- perf(ci): parallelize CI, cache Playwright, skip no-op prisma migrate by @mike840609 in #284
- feat(ui): animation upgrades — theme toggle, chart range, list layout by @mike840609 in #283
- fix(api): enforce ownership on transaction PATCH/DELETE and holding mutations by @mike840609 in #281
- feat(ui): add comma formatting to all numeric inputs by @mike840609 in #285
- feat(ui): touch targets, chart clarity, polish sweep (18 items) by @mike840609 in #287
- refactor(accounts): replace checkbox/select-all with per-row ⋮ overflow menu by @mike840609 in #289
- fix(ui): expand cash balance input to full width for better number visibility by @mike840609 in #291
- perf(infra): drop bot probes upstream of middleware (P1+P2) by @mike840609 in #293
- [codex] Mark server modules server-only by @mike840609 in #295
- fix(ui): align route loading skeletons with real page layouts by @mike840609 in #297
- feat(ui): make mobile nav tab items same size with content-hugged active pill by @mike840609 in #298
- feat(trend-chart): add % return toggle, pin selector to card corner by @mike840609 in #273
- Add Vercel Fluid CPU optimization plan doc by @mike840609 in #290
- fix(dashboard): pin all-accounts sort selector to card corner, unify pill style by @mike840609 in #299
- perf: lazy-load analysis & projection charts, fix settings waterfalls by @mike840609 in #300
- fix(mobile): prevent navbar truncation and dashboard chip overlap by @mike840609 in #301
- docs(review): mark P1 items (F7, F8) as evaluated and declined by @mike840609 in #302
- docs(review): mark P2 items (F9, F10) as evaluated and declined by @mike840609 in #303
- feat(mobile-nav): floating pill tab bar, no backdrop-blur for perf by @mike840609 in #305
- fix(mobile-nav): fully hide floating bar on scroll-down by @mike840609 in #306
- Scope manual price refresh to user, add cached analysis payload, and exclude API from proxy to reduce CPU by @mike840609 in #307
- perf(fx): remove render-time exchange-rate fetching by @mike840609 in #308
- perf(analysis): restore F3 settings-waterfall fix by @mike840609 in #309
- docs: aggregate docs/ from 14 files to 7 by topic by @mike840609 in #310
- Top Movers: add mobile card layout to avoid horizontal scrolling by @mike840609 in #311
- Revert "Improve top movers mobile layout (#311)" by @mike840609 in #312
- fix(mobile): lift toasts above bottom nav bar by @mike840609 in #314
- Add git worktree setup script for parallel development by @mike840609 in #313
- feat(ui): extend freshness 'Updated N ago' badges to /analysis and /history by @mike840609 in #316
- Feature 5: Account Reordering + Archive/Pin by @mike840609 in #315
- [codex] document design system by @mike840609 in #320
- [codex] polish privacy page by @mike840609 in #322
- fix(settings): a11y and UX polish pass on the settings tab by @mike840609 in #323
- dashboard: distill chrome, align tokens, cut hero animations by @mike840609 in #324
- fix(analysis): a11y and theming polish pass on the analysis tab by @mike840609 in #325
- fix(history): a11y and theming polish pass on the history tab by @mike840609 in #326
- fix(accounts): a11y and i18n harden pass on the accounts tab by @mike840609 in #327
- feat(goals): Goals & milestones tab by @mike840609 in #328
- fix(settings): a11y, theming, and responsive polish pass by @mike840609 in #330
- feat(history+dashboard): full-year activity heatmap with dashboard integration by @mike840609 in #329
- [codex] Fix duplicate loading sketches by @mike840609 in #331
- Tighten CI/E2E workflow triggers, add [skip ci] gating, and remove master branch by @mike840609 in #332
- [codex] Share history and projection mobile surfaces by @mike840609 in #333
- feat(settings): add stock up/down color preference (Western vs East Asian) by @mike840609 in #335
- fix(accounts): include cash balance in brokerage total value by @mike840609 in #338
- docs: add comprehensive bug-fix checklist (BUGS.md) by @mike840609 in #339
- [codex] fix transaction signs and cache invalidation by @mike840609 in #341
- UI polish: a11y, theming, and responsive fixes from /impeccable audit by @mike840609 in #342
- [codex] fix snapshot freshness timestamps by @mike840609 in #343
- feat(ui): migrate to shadcn primitives across accounts, analysis, and loading states by @mike840609 in #344
- feat(settings): migrate stock color scheme to localStorage by @mike840609 in #345
- feat(analysis): migrate bar charts to shadcn ChartContainer by @mike840609 in #346
- feat(ui): error boundaries + standardized destructive confirms by @mike840609 in #347
- fix: apply privacy blur to heatmap grid by @mike840609 in #350
- fix(search): restore holding symbol search broken by Yahoo schema validation by @mike840609 in #351
- feat(accounts): accessible, native-feeling Add Account / Add Holding flows by @mike840609 in #353
- Adjust Analysis density behavior on mobile by @mike840609 in #352
- fix(loading): align skeletons with final layout + add shimmer by @mike840609 in #354
- fix(mobile): a11y and responsive polish for mobile surfaces by @mike840609 in #355
- fix: match dark theme-color to page background to remove iOS safe-area green tint by @mike840609 in #356
- [codex] Add portfolio account heatmap by @mike840609 in #358
- feat(dashboard): redesign dashboard into desktop bento grid by @mike840609 in #359
- feat(dashboard): color-schema-aware donuts + state-conveying motion by @mike840609 in #360
- feat(history): desktop bento layout with summary rail by @mike840609 in #361
- feat(projections): desktop FIRE cockpit with milestones and inflation lens by @mike840609 in #362
- feat: add local postgres database for development via docker by @mike840609 in #363
- feat(accounts): craft accounts tab & detail page with i-impeccable polish by @mike840609 in #364
- feat(theme): unify color schema controls and schema-aware branding by @mike840609 in #365
- Refine desktop dashboard: hero hierarchy, title system, currency view by @mike840609 in #366
- feat(accounts): move portfolio heatmap to accounts tab, with a11y + allocation color link by @mike840609 in #367
- fix(dashboard): align desktop loading skeleton with net-worth layout by @mike840609 in #368
- feat(analysis): desktop layout, KPI clarity, unified empty & first-run states by @mike840609 in #369
- feat(history): empty state, focused summary rail, heatmap legend by @mike840609 in #370
- Harden settings import and stale-session auth by @mike840609 in #371
- refactor(accounts): drop dead category-card view, restore memoization by @mike840609 in #373
- fix(theme): keep gain/loss distinct across all color schemas by @mike840609 in #372
- feat(theme): add a --warning semantic color role by @mike840609 in #374
- History/dashboard motion, perf & color passes + sidebar flash fix by @mike840609 in #375
- [codex] fix heatmap month labels by @mike840609 in #376
- [codex] fix mobile heatmap tooltip dismissal by @mike840609 in #378
- Mobile UX critique fixes (Design Health 28 → 33) by @mike840609 in #377
- [codex] Harden portfolio heatmap composition by @mike840609 in #379
- Print the active database connection on dev startup by @mike840609 in #380
- [codex] Warm top-level nav prefetch by @mike840609 in #381
- [codex] Refine analysis tab layout by @mike840609 in #382
- feat: blur Portfolio Heatmap in privacy mode by @mike840609 in #383
- Add stock watchlist and mobile plan hub by @mike840609 in #385
- feat: redesign and integrate high-fidelity tab onboarding overlay pages by @mike840609 in #386
- Craft quiet dashboard onboarding for first-run users by @mike840609 in #387
- Add watchlist preview to the dashboard by @mike840609 in #388
- feat(ui): redesign watchlist card layout to prioritize change percent by @mike840609 in #389
- Refine dashboard: net-worth hero, charts, and layout density by @mike840609 in #390
- feat(stocks): colorize watchlist with directional schema awareness by @mike840609 in #391
- feat(stocks): redesign watchlist row layout, harden, and colorize by @mike840609 in #392
- fix(stocks): harden watchlist caching, validation, and API routes by @mike840609 in #393
- perf(refresh): skip price and FX refetch when cached data is fresh by @mike840609 in #396
- fix(rates): derive USD cross rates before falling back to rate=1 by @mike840609 in #397
- fix(api): make balance and holding mutations atomic by @mike840609 in #398
- feat: throttle manual market-data refreshes against external APIs by @mike840609 in #395
- refactor: remove dead code, unused deps, and stale exports by @mike840609 in #402
- perf: service query fixes, chart memoization, and middleware fast path (PE20–PE24, P4) by @mike840609 in #403
- feat: enable PWA install button via service worker by @mike840609 in #404
- feat(search): rank TW and US stocks higher in autocomplete by @mike840609 in #405
- fix(pwa): serve manifest.webmanifest anonymously so app install works on production by @mike840609 in #406
- perf(cron): refresh exchange rates and prices in parallel by @mike840609 in #409
- perf(accounts): collapse account-detail page waterfall to dependency depth by @mike840609 in #408
- perf(dashboard): parallelize orchestrator reads and stream trend chart by @mike840609 in #410
- perf(accounts): start cached-price fetch in parallel with account batch by @mike840609 in #407
- fix(e2e): update stale selectors and block service workers in Playwright by @mike840609 in #411
- feat(ui): sliding selection indicator, trend-chart chip unification, archived disclosure motion (A4–A6) by @mike840609 in #412
- ci(e2e): restore deployment_status trigger so the suite targets live preview URLs by @mike840609 in #413
- fix(cache): unify revalidateTag semantics, add snapshots Cache-Control, lengthen goals TTL by @mike840609 in #415
- fix(prices): revalidate per-user accounts tag on manual price refresh by @mike840609 in #414
- perf(net-worth): migrate getCachedNetWorthSummary to "use cache" with hours TTL by @mike840609 in #416
- perf(refresh): collapse dashboard refresh into one user-scoped /api/refresh (P5) by @mike840609 in #417
- perf: bundle-size CI gate, public asset cache headers, cash-flow date floor (S18, V20, PE29) by @mike840609 in #419
- docs: add comprehensive enhancement plan (E1–E39) by @mike840609 in #420
- fix(integrity): Tier-0 correctness sweep (E1, E2, E3, E7, E9) by @mike840609 in #421
- fix(validation): Tier-0 validator tightening (E5, E6, E8) by @mike840609 in #422
- fix(fx): Tier-0 FX inverse persistence + stale-rates signal (E4) by @mike840609 in #423
- Update the enhancement plan with completed fixes and revised priorities by @mike840609 in #424
- Document Next.js upgrade checks and build cache audit by @mike840609 in #426
- Harden refresh and import handling by @mike840609 in #427
- feat(observability): /api/health endpoint + format:check CI gate (E17, E24) by @mike840609 in #428
- feat(observability): CronRun audit table + 36h freshness alarm + FK indexes (E18, E16 partial) by @mike840609 in #429
- feat(observability): Sentry error reporting via logger (E19) by @mike840609 in #430
- [codex] add Sentry monitoring plan by @mike840609 in #431
- feat(watchlist, goals): drag-to-reorder with custom ordering by @mike840609 in #432
- feat(observability): complete Sentry dashboard to all 19 planned widgets by @mike840609 in #433
- refactor(auth): remove unreachable preview-auth guard, dedupe gate logic by @mike840609 in #434
- fix(stocks): prevent add-stock dialog overflow with long names by @mike840609 in #435
- test(services): add Vitest unit suite for service layer (E22) by @mike840609 in #436
- [codex] fix history heatmap date alignment by @mike840609 in #437
- refactor(accounts): dedupe input mask + enum lists; declare @sentry/core by @mike840609 in #439
- docs(platform): add 2026-06 Fluid Active-CPU reduction plan (C1–C7) by @mike840609 in #438
- Fix silent balance-save failure and dedupe numeric input formatting by @mike840609 in #442
- [codex] reduce fluid active cpu usage by @mike840609 in #441
- sketch-loading-animation-fix by @mike840609 in #443
- Migrate from npm to pnpm with content-addressable store by @mike840609 in #445
- chore: move dev-only packages to devDependencies by @mike840609 in #446
- feat(accounts): recurring cash + DCA investments, Node guard, Select i18n sweep by @mike840609 in #444
- fix(fx): stop reporting recovered Frankfurter misses as Sentry errors by @mike840609 in #447
- fix(search): treat Yahoo 4xx as non-errors, keep them out of Sentry by @mike840609 in #448
- feat(mobile): sliding tab-bar pill + list entrance stagger by @mike840609 in #449
- fix(settings): 44px mobile touch targets + accessible chip contrast by @mike840609 in #450
- feat(changelog): version history page + in-app version, single source of truth by @mike840609 in #451
- fix(accounts): mobile polish for recurring + transaction forms (v0.6.1) by @mike840609 in #452
- init by @mike840609 in #453
- [codex] add new feature list by @mike840609 in #454
- Fix ledger atomicity and cron cache invalidation by @mike840609 in #455
- [codex] Add labeled snapshot annotations by @mike840609 in #456
- feat(docs): competitor-inspired feature backlog (NF22–NF32) by @mike840609 in #457
Full Changelog: https://github.com/mike840609/asset_tracker/commits/Release