Commit

043507f

CAFM update — 23 Oct 2026 Type safety - Cleared the remaining type-check backlog: 586 → 294 → 202 → 0 across today's passes. The check is now a hard CI gate, so any new type error fails immediately. - Fixed root causes instead of suppressing them: corrected shared models for estates, assets, attributes, service requests, quotes, contractors, users and work orders; aligned form component contracts; added missing third-party type packages. - Removed unsafe assumptions around optional/null data across estate forms and wizards, finance, roles, notifications and reporting. - No compiler settings were relaxed and no type suppressions were added. Bugs found and fixed along the way - Page titles and breadcrumbs now actually update on several dashboard and settings pages. - Date pickers use the current flow configuration instead of silently ignoring it. - Contractor contact updates and deletes send the numeric record ID rather than the public string ID. - Estate tree asset status colours now match the current status vocabulary. - Work-order creation only attempts to link supported item types. - Pagination now respects the configured page sizes. - Form controls correctly accept nullable values and string-based multi-select options. UX cleanup - Standardised cancel/destructive action styling across forms, modals and slide-overs. - Tidied the portfolio edit experience, including a clearer read-only identifier and simpler update action. Coverage: Estates, Assets, Finance, Operations, PPM, Contractors, Users/Roles, Notifications and Settings. Validation: type-check clean at zero, lint clean, 566 unit tests passing, production build successful.

commit 043507f