Repository navigation
v3.3
v3.3
v3.3.mp4
GitHub release · Compare v3.2…v3.3
Highlights
- Private deployments now verify Cloudflare Access identity on every API read and write, replacing the shared browser API key. Existing deployments require authentication configuration before upgrading.
- Dashboard loads only the selected dates; Analytics and search load complete history when opened. Widget skeletons and retained session snapshots make loading and return visits smoother.
- Redesigned account and transfer dialogs, clearer AI forecast summaries, and previous-month cash balance comparisons.
- Compact sidebar account shares and a Money Map that uses the available phone width.
Added
- Cash Balance Trend can compare daily actual balances with the previous month on a shared calendar-day axis, with smooth curves, explicit month labels, and same-day tooltip differences. Comparison requires previous-month history, hides the moving average, and respects privacy, cash exclusions, and unavailable exchange rates. #115
- Compact sidebar account shares pair thin bars with percentages, comparing cash and investment groups independently using converted positive balances. Active accounts excluded from totals still count; privacy and unavailable valuations remain explicit. #104
Changed
- Private API reads and writes require verified Cloudflare Access identity; missing or invalid private configuration blocks access. API sign-in and session recovery retain unsaved forms, while an explicit public mode supports unauthenticated demos and local development. MCP keeps its separate authentication. #117
- Dashboard requests only its selected cash and investment dates through bounded history pages; Analytics and global search request complete history on demand. Only complete, consistent page sequences replace the previous snapshot, with retry feedback after failures or changes during pagination. #116
- Initial finance reads show widget-shaped shimmer skeletons that respect saved Analytics visibility and reduced motion. Investment portfolios and saved forecast reports remain in session memory across navigation, refresh in the background, and retain the last complete data after failures; portfolio display currency also survives navigation. #116
- AI Financial Forecast presents a prominent headline, cash at generation, 7/30/90-day deltas and range bars, and a bounded uncertainty band. A unified 30-day/90-day/year/all-time history control, visible risks and suggestions, and expandable methodology retain saved-report selection, freshness warnings, and privacy masking. #112
- Account creation and editing use compact dialogs with type cards, currency selection, inclusion switches, and clear save controls. Editing previews balance adjustments, offers transaction/overwrite choices and Revert, and groups protected account-management actions; market search and precise investment quantities remain available. #107
- Transfer dialogs use compact From/To cards, account swapping, conversion controls, privacy-aware balance previews, and Revert. Posted edit previews undo the original transfer before applying the replacement; MCP review drafts preserve explicit native amounts and show confirmation-only previews. Failed saves retain the draft and display an inline error. #109
- The app version moves from Settings to a centered sidebar footer, and the desktop privacy toggle sits beside the Finance logo. Removed the misleading Synced indicator, which described selected page requests rather than database synchronization. #110
- Maintenance: expanded client, deployment, and real Worker/D1 regression coverage; documented history-loading measurements, comparison behavior, and private/public deployment setup. Deployment URL validation identifies the invalid setting, and private remote API development uses direct cookie-bearing requests from explicitly allowed localhost origins. #116, #117, #115
- Bumped the root application version to 3.3, used by the API version endpoint and sidebar.
Fixed
- Background refresh feedback stays in a fixed desktop corner or above mobile navigation, so the page no longer shifts when it appears or disappears. Screen-reader feedback and reduced-motion support remain available. #116
- Money Map spreads its Sankey flows across the available phone width. Narrow labels stay within their columns; touch and keyboard inspection reveal full names and amounts with privacy masking. #114
Removed
- Removed shared browser API-key authentication and persistent service-worker caching of financial API responses. Updated installations clear the former API cache; offline app-shell navigation does not provide authenticated financial data. #117
Migration and upgrade notes
- Breaking authentication change: configure Access on the entire private API hostname and the frontend before deploying. Set
API_AUTH_MODE=private, an explicit HTTPSAPI_URL,API_ACCESS_TEAM_DOMAIN,API_ACCESS_AUD,API_ACCESS_ALLOWED_EMAIL, and exactALLOWED_ORIGINS; clientVITE_API_AUTH_MODEmust match. Configure credentialed CORS, unauthenticated OPTIONS preflight, and Access session cookies. See the API Access upgrade guide. #117 - Prefer frontend/API HTTPS hostnames on the same site. An explicitly configured Access-protected workers.dev API is supported, but cross-site cookies require SameSite=None and can still be blocked by browsers; preview URLs remain disabled. Local frontends using a private remote API need their exact loopback origin allowed and the same cookie considerations. #117
- Deploy the updated API before the matching client in the same upgrade: the client depends on the new history and session endpoints. Refresh the frontend/PWA afterward. Remove obsolete
API_SECRETandVITE_API_KEYentries from existing local files and set the new modes explicitly; old keys no longer authorize requests and missing settings never enable public access. #116, #117 - Public demos must explicitly use
API_AUTH_MODE=publicwith a matching client and a separate synthetic-data Worker/database; public mode permits unauthenticated financial mutations. MCP authentication stays independent. #117 - No new database migrations are required beyond v3.2's migration 016. Analytics and search still load the complete ledger on their first visit; pagination bounds each response rather than total browser memory. Session snapshots reset on browser reload. #116