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> |
||
|---|---|---|
| .. | ||
| components | ||
| contexts | ||
| hooks | ||
| lib | ||
| pages | ||
| public/img | ||
| App.tsx | ||
| api.ts | ||
| index.css | ||
| main.tsx | ||
| types.ts | ||