BillTracker/client/components/tracker
null dd5bf92fc1 fix(money): manual payment path flags suspected dupes (409) w/o losing legit ones (Track A)
The deliberate manual POST /payments had no dedupe guard (double-submit
made a second payment), but silently deduping it like the auto paths
would lose a legitimately-identical same-day payment — a money bug. So
the server returns 409 DUPLICATE_SUSPECTED (existing payment attached),
and a shared client helper (client/lib/paymentActions.ts, used by the
tracker inline cell, partial-payment dialog, and bill modal) turns it
into an 'add anyway?' toast that resends with allow_duplicate. Automated
one-click paths keep deduping silently (a repeat there is a retry).

Dropped a now-unused api import in PaymentLedgerDialog (Track E sweep).
Server suite 188 green; typecheck/lint/build clean; probe 17/17.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 11:51:06 -05:00
..
AutopaySuggestionActions.tsx refactor(ts): convert tracker dialogs + cards to TSX (B3) 2026-07-04 19:29:42 -05:00
CashFlowCard.tsx refactor(ts): convert tracker dialogs + cards to TSX (B3) 2026-07-04 19:29:42 -05:00
DriftInsightPanel.tsx refactor(ts): convert Drift + Overdue panels to TSX (B4) 2026-07-04 19:32:39 -05:00
EditableCell.tsx fix(money): manual payment path flags suspected dupes (409) w/o losing legit ones (Track A) 2026-07-05 11:51:06 -05:00
FilterChip.tsx refactor(ts): convert tracker leaf components to TSX (B1) 2026-07-03 22:31:35 -05:00
LowerThisMonthButton.tsx refactor(ts): convert all UI primitives + ThemeContext to TSX (B2) 2026-07-03 22:57:22 -05:00
MobileTrackerRow.tsx refactor(ts): convert MobileTrackerRow to TSX (B5) 2026-07-04 19:36:01 -05:00
MonthlyStateDialog.tsx refactor(ts): convert tracker dialogs + cards to TSX (B3) 2026-07-04 19:29:42 -05:00
NotesCell.tsx refactor(ts): convert all UI primitives + ThemeContext to TSX (B2) 2026-07-03 22:57:22 -05:00
OverdueCommandCenter.tsx refactor(ts): convert Drift + Overdue panels to TSX (B4) 2026-07-04 19:32:39 -05:00
PaymentLedgerDialog.tsx fix(money): manual payment path flags suspected dupes (409) w/o losing legit ones (Track A) 2026-07-05 11:51:06 -05:00
PaymentModal.tsx refactor(ts): convert tracker dialogs + cards to TSX (B3) 2026-07-04 19:29:42 -05:00
PaymentProgress.tsx refactor(ts): convert tracker leaf components to TSX (B1) 2026-07-03 22:31:35 -05:00
StartingAmountsEditDialog.tsx refactor(ts): convert tracker dialogs + cards to TSX (B3) 2026-07-04 19:29:42 -05:00
StatusBadge.tsx refactor(ts): convert tracker leaf components to TSX (B1) 2026-07-03 22:31:35 -05:00
SummaryCards.tsx refactor(ts): convert tracker leaf components to TSX (B1) 2026-07-03 22:31:35 -05:00
TrackerBucket.tsx refactor(ts): convert TrackerRow + TrackerBucket to TSX (B6) — tracker/ dir done 2026-07-04 19:42:26 -05:00
TrackerRow.tsx refactor(ts): convert TrackerRow + TrackerBucket to TSX (B6) — tracker/ dir done 2026-07-04 19:42:26 -05:00