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

Otherkamolos
Ya
18 Mei 2026, 00:57 UTC
Mwandishi
Kamo
Ahadi ya
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.

Mabadiliko yote

Je, unaona nini kuhusu usafiri?

Kila moja ya hizi updates ardhi katika nafasi yako ya kazi moja kwa moja. Kuanza bure na kuangalia kukua wiki baada ya wiki.

Kuwa Huru MileleMtazamo wa bei