useSnowball + useSnowballSettings + useSnowballActivePlan + useSnowballPlans (+ shared useCategories). The settings-derived form fields (extra payment, ramsey mode, ready flags) are seeded via a settings-synced effect; the many optimistic list/plan edits route through queryClient.setQueryData wrappers; load() is an invalidate wrapper. The debounced live-projection stays a client computation (not page data). Removed the now-dead loadPlans (hooks auto-fetch). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| components | ||
| contexts | ||
| hooks | ||
| lib | ||
| pages | ||
| public/img | ||
| App.jsx | ||
| api.js | ||
| index.css | ||
| main.jsx | ||