BillTracker/client
null 4af738f947 feat(ts): type the shared Category API response (A4)
Adds Category (+ CategoryBillSummary) to @/types and wires categories/
createCategory/updateCategory. Category has no money field of its own (budgets
live on the spending endpoints); the nested per-bill total_paid is a raw SQL sum,
so it's deliberately left unbranded. With categories now typed, useSpending
Categories drops its `any` cast and dead d.categories branch.

Category, Bill, Payment, and the Tracker envelope are the cross-cutting types
used by many components — worth defining upfront. The remaining single-consumer
page responses (summary, analytics, spending, snowball, subscriptions, bank
ledger) are typed alongside their page conversions in phase B, where the exact
fields consumed are visible (more accurate than a speculative interface).

typecheck 0, build green, 48 client tests.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 22:27:08 -05:00
..
components refactor(ts): convert the API client to TypeScript (TS9) 2026-07-03 22:09:04 -05:00
contexts theme correctness 2026-05-28 01:30:40 -05:00
hooks feat(ts): type the shared Category API response (A4) 2026-07-03 22:27:08 -05:00
lib feat(ts): type the Tracker API response with branded Dollars (A1) 2026-07-03 22:21:45 -05:00
pages refactor(ts): convert the API client to TypeScript (TS9) 2026-07-03 22:09:04 -05:00
public/img refactor: component splits, PWA support, CommandPalette 2026-05-28 20:53:22 -05:00
App.jsx feat(query): global background-refetch error toast (P1) 2026-07-03 20:56:31 -05:00
api.ts feat(ts): type the shared Category API response (A4) 2026-07-03 22:27:08 -05:00
index.css feat(settings): safe-to-spend toggle, move notifications from Profile to Settings, fix dark-mode readability 2026-06-12 01:52:48 -05:00
main.jsx v0.24.3: Session fixes, activity log corrections, UI polish 2026-05-11 13:39:48 -05:00
types.ts feat(ts): type the shared Category API response (A4) 2026-07-03 22:27:08 -05:00