- The payoff projection panel swallowed fetch errors silently; now shows a "Couldn't load … Try again" state (no projection) and a subtle "showing the last result" retry banner when a refresh fails. - loadProjection() now uses the currently-typed extra payment (via a ref that mirrors the input), consistent with the debounced live preview, so refreshing after a balance edit never drops an in-progress extra. - Copy: extra-payment validation says "non-negative" (0 is valid); the capped banner now reads "one or more debts won't pay off at this rate" (accurate for the unpayable-debt case from the #1 fix, not just >50 years). (#9 unsaved-preview hint was unnecessary — the input already auto-saves on blur.) Build clean; client suite pass. 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 | ||