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