BillTracker/client
null 7c6be66794 refactor(ts): convert client/lib/trackerUtils to TypeScript (TS6)
The tracker row/status/sort helpers are now typed. Introduces a TrackerRow
domain interface (the fields these helpers read) and a TrackerStatus union
(paid|autodraft|upcoming|due_soon|late|missed|skipped). Row money fields stay
plain `number` for now — branding them Dollars is a later increment, done when
the tracker API response itself is typed so the brand flows in from the source.

Strict-mode handling: STATUS_SORT_ORDER is Record<TrackerStatus,number> (no
undefined on lookup); moveInArray guards the noUncheckedIndexedAccess `T |
undefined` from splice; the sort comparator relies on aliased-condition
narrowing to reach string|number in each branch. typecheck 0 errors, lint 0
errors (47 warnings unchanged), build green, 48 client tests pass.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 21:53:45 -05:00
..
components refactor(tracker): shared useTogglePaid mutation hook — finish Tracker mutations (F1) 2026-07-03 21:18:18 -05:00
contexts theme correctness 2026-05-28 01:30:40 -05:00
hooks refactor(ts): convert usePaymentActions to TypeScript (TS5) 2026-07-03 21:47:12 -05:00
lib refactor(ts): convert client/lib/trackerUtils to TypeScript (TS6) 2026-07-03 21:53:45 -05:00
pages feat(tracker): prefetch adjacent month on nav hover for instant switching (P2) 2026-07-03 20:58:23 -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.js feat(data): "Erase my data" danger zone (Batch 5) 2026-07-03 15:21:07 -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