feat(borrower-ux) backlog: blocked tasks, MUI date picker, memo widgets

Otherkamolos
Shipped
May 18, 2026 at 12:57 AM UTC
Author
Kamo
Commit
874cd0f

1. Real blockedBy task semantics. Was: TaskHub knew about done/current/todo but the "locked" state was declared and never computed. Now: tasks declare blockedBy: string[] (the IDs of prerequisite tasks) and blockedHint: a copy line explaining what the borrower is waiting on. useTaskStatus resolves blocked state from the actual done set — current is the first actionable non-blocked todo (so the dashboard never sends a borrower to a waypoint that can't actually proceed). TaskHub renders blocked cards non-interactive with a lock icon + "Waiting" pill + the blockedHint or a generated "Waiting on X, Y" line. Wired blockedBy on credit-ledger (needs front-door + e-consent), lawn-signs-detail (needs credit), reviewing-porch (needs the four prior sections), closing-desk (needs review). 2. DateOfBirthField: MUI X DatePicker with AdapterDateFns. Replaces the native <input type="date"> in front-door — same UX on iOS, Android, desktop. Format hint "Month / Day / Year". minDate = 120 years ago, maxDate = today minus 18, with live "Must be 18 or older" validation. autoComplete="bday" surfaces autofill. 3. Workspace widgets: wrapped all 6 widget components that take just {app: AppMortgageDTO} in React.memo so unrelated store mutations don't cascade re-renders through the dashboard. Build 29/29, 140 tests.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing