whisper-money/resources/js/pages
Víctor Falcón 832cd1245b feat(cashflow): add multi-level donut money-flow chart (prototype)
Replace the hand-rolled SVG Sankey on the Cashflow page with a
concentric multi-level donut (recharts), aimed at working on both
desktop and mobile where the Sankey was wide and hard to use.

- Backend: `sankey?nested=1` returns the full nested Income/Expense
  tree (up to MAX_DEPTH) via a new `CategoryTree::nest()`, strictly by
  category type so its totals match the summary and breakdown cards
  (savings, investments and transfers excluded). A synthetic "Direct"
  child keeps each node's children summing to the node total.
- Frontend: `MultiLevelDonut` renders concentric rings — income grows
  toward the centre, expense toward the rim — with a `showIncome` prop
  exposed as a Combined / Expenses-only toggle for comparison. Inside
  labels on the innermost ring; leader-line labels (name + share) on the
  outermost ring with per-side vertical collision avoidance on wide
  screens, suppressed below 480px where the outer ring is read on tap.
- Pure ring-building logic lives in `lib/donut-utils` with unit tests;
  the nested endpoint has a feature test.

Prototype for comparing the Combined vs Expenses-only layouts before
picking a final direction; the old SankeyChart component is kept but no
longer rendered on this page.
2026-07-11 19:16:45 +02:00
..
Accounts fix(accounts): remove double-skeleton flash on account show (#634) 2026-07-03 15:56:49 +00:00
auth refactor(encryption): strip client-side transaction encryption (#514) 2026-06-20 16:13:26 +00:00
budgets feat: add catch-all budgets (#527) 2026-06-15 16:07:19 +00:00
cashflow feat(cashflow): add multi-level donut money-flow chart (prototype) 2026-07-11 19:16:45 +02:00
onboarding feat(onboarding): auto-enable AI for connected banks, ask the rest (#618) 2026-07-01 07:26:52 +00:00
open-banking feat(connections): create a new account from the manage-accounts selector (#560) 2026-06-19 12:49:03 +02:00
settings refactor(ai): remove AiConsentSettings feature flag (#619) 2026-07-01 09:47:55 +02:00
subscription feat(subscriptions): reframe pay_now paywall copy around try-and-refund (#605) 2026-06-28 10:40:59 +00:00
transactions fix(security): scope job-status endpoints to owner + feature-area fixes (#627) 2026-07-03 14:49:32 +02:00
waitlist feat: verify waitlist leads (#285) 2026-04-14 11:26:01 +01:00
dashboard.tsx feat(dashboard): add accounts manager dialog with visibility toggle and reorder (#604) 2026-06-27 16:11:25 +00:00
privacy.tsx Remove plaintext-transactions feature flag & E2E references (#116) 2026-02-13 11:10:21 +01:00
terms.tsx Replace E2E encryption mentions with privacy-first messaging (#124) 2026-02-14 16:59:50 +01:00
welcome.tsx feat(welcome): add Francisco Montes testimonial (#636) 2026-07-04 14:08:33 +00:00