Appearance
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/editsettings 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 approval —
SpecialTariffPanelon building insurance Dekninger tab with submit/approve/reject actions, permission keys, audit labels, andbuildingSpecialTariffApiclient; OpenAPI contract synced. - Coverages table UX — refined table columns and aligned section headings in
CoverageLinesSection; row expand action moved to a leading caret icon inCoveragesTableTab. - Insurance display — extended
insuranceDisplayUtilsfor 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+dashboardLayoutin 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 inBuildingInsuranceTab;buildingSpecialTariffpermission keys and audit field labels; OpenAPI sync commits. - Coverages table polish:
CoveragesTableTabcolumn and caret expand UX;CoverageLinesSectionheading alignment;insuranceDisplayUtilslabel extensions. - OpenAPI & contracts: Generated types and
contracts/backend/openapi.jsonupdated 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
dashboardLayoutis absent—existing saved layouts are preserved on reload.