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

Otherkamolos
Shipped
2026年5月18日 00:57 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

就像你看到的运输?

每一个都自动更新您工作空间的地盘。 开始自由,看它成长 一周又一周.

永远开始自由查看定价