Skip to content

July 3, 2026 — Frontend

Release date: Friday, 2026-07-03

Summary

This week adds customizable portfolio dashboard widgets in BMS—users can show/hide widgets, choose 2- or 3-column desktop layout, and reorder placement via per-widget actions—with preferences saved in localStorage. Building insurance Dekninger gains a special tariff approval flow (submit, approve, reject) backed by new API helpers and OpenAPI sync. Dekninger table UX is refined with clearer section headings, updated columns, and a leading caret to expand coverage rows.

Shipped

  • Portfolio dashboard widgets — widget registry with Norwegian labels; /home/edit settings page (search, show/hide); desktop 2/3-column layout toggle; per-widget menu (hide, move up/down, move column); layout and visibility persisted in user preferences.
  • Special tariff approvalSpecialTariffPanel on building insurance Dekninger tab with submit/approve/reject actions, permission keys, audit labels, and buildingSpecialTariffApi client; OpenAPI contract synced.
  • Coverages table UX — refined table columns and aligned section headings in CoverageLinesSection; row expand action moved to a leading caret icon in CoveragesTableTab.
  • Insurance display — extended insuranceDisplayUtils for special-tariff-related labels used in coverage views.

Engineering (commit recap)

Frontend — week of June 30 – July 6, 2026

Window: after 2026-06-29, before 2026-07-04 (--no-merges).

Summary

The portfolio homepage (PortfolioDashboardV1Page) became user-configurable: a central widget registry, layout engine (portfolioWidgetLayout), and settings route (/home/edit) let users control visibility and desktop column placement without drag-and-drop. Building insurance received a full special-tariff approval surface with API client, action helpers, and tests. Coverages list polish improved scanability via heading alignment, column tweaks, and a caret-based expand control. Two OpenAPI syncs landed for special-tariff endpoints.

Themes

  • Dashboard widget preferences: portfolioWidgetRegistry, portfolioWidgetLayout, dashboardWidgets + dashboardLayout in user preferences; PortfolioDashboardWidgetSettingsPage; toolbar entry and desktop column toggle; Vitest coverage for registry, layout reducers, and preference migration.
  • Special tariff approval: SpecialTariffPanel, specialTariffActions, buildingSpecialTariffApi (+ spec); wired in BuildingInsuranceTab; buildingSpecialTariff permission keys and audit field labels; OpenAPI sync commits.
  • Coverages table polish: CoveragesTableTab column and caret expand UX; CoverageLinesSection heading alignment; insuranceDisplayUtils label extensions.
  • OpenAPI & contracts: Generated types and contracts/backend/openapi.json updated for special-tariff approval endpoints.

Notable fixes or risks (if any)

  • Widget layout preferences are localStorage-only for now—users switching browsers or devices will not see the same dashboard layout until server-side prefs exist.
  • Special tariff approval depends on the synced OpenAPI contract and backend deploy; verify permissions (buildingSpecialTariff.*) in each environment.
  • Legacy preference migration only merges widget order into layout when dashboardLayout is absent—existing saved layouts are preserved on reload.