YNAB-style spending view typed: CatEntry (category_id number|'other'| null) with a RealCatEntry narrowing for the budget-indexed paths, SpendingSummary/SpendingTx/IncomeTx/SpendingRule/CategoryGroup local types, budgets as Record<string,number|null>, React Query setQueryData<T> for optimistic budget/categorize edits, cast-at-boundary for api.* results. Dropped a pre-existing dead 'total' state. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| components | ||
| contexts | ||
| hooks | ||
| lib | ||
| pages | ||
| public/img | ||
| App.tsx | ||
| api.ts | ||
| index.css | ||
| main.tsx | ||
| types.ts | ||