Appearance
June 26, 2026 — Frontend
Release date: Friday, 2026-06-26
Summary
This week delivers the full insurance year renewal workflow in BMS—inline editing of projected reference data, submit/approve/activate steps, and recalculate-on-renewal—plus matching submit/approve actions on the building inspection tab. Alle bygninger and Dekninger gain server-side pagination and stronger list filtering; a feature-flagged tender module adds overview, scope, and publish flows. Shared Table pagination lands in @sod/ui, and BMS unit tests are standardized on Vitest.
Shipped
- Insurance years (forsikringsår) — inline edit of projected reference values; renewal banner with submit, approve, activate, and apply-renewal recalculate; approver picker backed by the API (current user excluded); permission gate on
newYear.manage. - Inspection tab — submit and approve actions aligned with the renewal workflow.
- Building list — server-side pagination via shared Table utilities; expanded client filters and list/map/table tab integration.
- Dekninger — refactored query layer, pagination, and filter modal layout for responsiveness.
- Tender (feature-flagged) — navigation entry, overview and buildings pages, draft storage, scope panel, add-buildings and publish modals.
- Insurance display — centralized forsikringsår labels and tag styling across years, coverages, building insurance, and property cards.
- Building overview — square-meter suffix on area fields in MetricsForm.
- Shared UI — server-pagination support in
@sod/uiTable (documented on Icons/Table docs pages); newHandshakeIcon. - Engineering — BMS specs migrated to Vitest; agent rules for domain display labels and Vitest-only testing.
Engineering (commit recap)
Frontend — week of June 23 – June 29, 2026
Window: after 2026-06-22, before 2026-06-27 (--no-merges).
Summary
Insurance year administration was the largest body of work: OpenAPI sync for renewal endpoints, inline editing of projected reference tables, a renewal action banner (submit → approve → activate), apply-renewal recalculate, and API-driven approver selection with permission gating. The inspection tab gained parallel submit/approve actions. List views matured with server-side pagination in the shared Table component and dedicated query modules for buildings and coverages. A substantial tender feature landed behind a feature flag with draft persistence and publish flow. Tooling and conventions shifted BMS tests to Vitest and documented centralized domain display labels.
Themes
- Insurance year renewal:
InsuranceYearsPageexpanded withInsuranceYearEditBanner, editable reference cells,insuranceYearRenewalActions, andinsuranceYearsAdminApihelpers (submit, approve, activate, recalculate, approver candidates); OpenAPI contract synced twice during the week;newYear.managepermission gate. - Inspection workflow:
InspectionTabsubmit/approve actions viainspectionTabActions; wired fromBuildingPage. - Building list pagination & filters:
buildingsListQueryand server-pagination Table inBuildingsPage; client filter utilities (buildingListClientFilter); filter modal label fixes; map/list/table tabs updated. - Coverages (Dekninger):
coveragesListQueryextraction;CoveragesPageandCoveragesTableTabrefactor;CoverageFiltersModallayout and responsiveness improvements. - Tender module: Feature flag (
TenderFeatureGuard,featureFlags); routes and navigation;TenderOverviewPage,TenderBuildingsPage, draft storage/hooks, scope panel, add-buildings and publish modals. - Domain display labels:
insuranceDisplayUtilsextended for forsikringsår status labels/tags; page-local maps removed from insurance years, coverages, building insurance, and property overview; newbms-domain-display-labelsagent rule. - Shared UI & docs: Server-pagination API on
@sod/uiTable with specs and Table docs page examples;HandshakeIconadded to icons package and Icons docs page. - Test & agent tooling: BMS unit tests standardized on Vitest (
bms-vitestrule,tsconfig.spec.json, migrated specs);CONTRIBUTINGand testing-strategy docs updated.
Notable fixes or risks (if any)
- Tender is behind a feature flag—confirm
VITE_*env in each environment before expecting menu entries. - Insurance year renewal depends on two OpenAPI syncs this week; backend deploy order matters for submit/approve/activate endpoints.
- Server-pagination Table changes affect both Alle bygninger and Dekninger—verify page size and total counts against API responses after deploy.
- Vitest migration is complete for existing BMS specs; new tests must not reintroduce
node:testor Jest patterns.