Skip to content

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/ui Table (documented on Icons/Table docs pages); new HandshakeIcon.
  • 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: InsuranceYearsPage expanded with InsuranceYearEditBanner, editable reference cells, insuranceYearRenewalActions, and insuranceYearsAdminApi helpers (submit, approve, activate, recalculate, approver candidates); OpenAPI contract synced twice during the week; newYear.manage permission gate.
  • Inspection workflow: InspectionTab submit/approve actions via inspectionTabActions; wired from BuildingPage.
  • Building list pagination & filters: buildingsListQuery and server-pagination Table in BuildingsPage; client filter utilities (buildingListClientFilter); filter modal label fixes; map/list/table tabs updated.
  • Coverages (Dekninger): coveragesListQuery extraction; CoveragesPage and CoveragesTableTab refactor; CoverageFiltersModal layout 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: insuranceDisplayUtils extended for forsikringsår status labels/tags; page-local maps removed from insurance years, coverages, building insurance, and property overview; new bms-domain-display-labels agent rule.
  • Shared UI & docs: Server-pagination API on @sod/ui Table with specs and Table docs page examples; HandshakeIcon added to icons package and Icons docs page.
  • Test & agent tooling: BMS unit tests standardized on Vitest (bms-vitest rule, tsconfig.spec.json, migrated specs); CONTRIBUTING and 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:test or Jest patterns.