Skip to content

4.971.0

Choose a tag to compare

@github-actions github-actions released this 01 Nov 04:20
· 16 commits to master since this release
5aa34aa

Summary

Implements RG-T151, introducing a feature-flagged modern home dashboard while preserving the existing classic dashboard experience.

Modern dashboard

  • Adds the Dashboard.Modern feature flag, seeded off by default and evaluated per department.
  • Replaces the home page with a customizable widget board when enabled.
  • Supports:
    • Drag-and-drop and keyboard widget reordering.
    • Widget resizing from XS through Full.
    • Widget-specific settings and department-scoped option lists.
    • Up to five boards per member, with the Home board protected from deletion.
    • Server-side persistence per member and department.
    • Optimistic concurrency handling with conflict resolution.
    • Compact and Comfortable density modes.
    • Wall-display mode.
    • Live updates where supported, with polling fallbacks.
    • Classic-dashboard fallback when JavaScript is unavailable or the modern dashboard cannot load.

Dashboard templates

  • Adds department dashboard templates for department administrators.
  • Templates can target:
    • Everyone.
    • A personnel role.
    • A group.
  • Adds priority-based template resolution and a department-default template.
  • Preserves customized member boards when templates change.
  • Adds limits of 25 templates per department and 40 widgets per board.
  • Records template saves and deletions as DashboardTemplateChanged system audit events.

Widget catalog and module coverage

Adds a catalog and provider model for dashboard widgets across Operations, Personnel, Map & Weather, Communications, Planning, Readiness, Records, Workforce & Business, Incident Back Office, Intelligence, and Administration.

Widgets expose module-consistent data and access behavior for areas including:

  • Active, pending, scheduled, and awaiting-resource calls.
  • Unit status, alerts, summaries, routes, and incident command.
  • Personnel status, staffing, and status boards.
  • Calendar, shifts, trainings, documents, notes, links, and contacts.
  • Checklists, work orders, inventory, and certifications.
  • Records queues, analytics, prevention, hydrants, investigations, legal holds, and NERIS.
  • Deployments, time reports, invoicing, bids, contracts, cost recovery, and workforce reporting.
  • Chat, messaging, communication tests, Push-To-Talk, weather, maps, AI dispatch triage, and administrative health information.

Security and entitlement handling

  • Reuses module policies, permissions, feature flags, add-on entitlements, visibility rules, and module switches when determining widget availability.
  • Adds locked gallery cards for department administrators when an offered paid add-on is not held.
  • Keeps add-on widgets read-only or hidden according to the associated module behavior when an entitlement lapses.
  • Adds Advanced Data Protection handling for protected dashboard values:
    • Protected values are hidden by default.
    • Reveals use the existing step-up verification flow.
    • Reveals are audited.
    • Wall display never reveals protected data.
    • Protected values are represented using dashboard-specific protected-value DTOs rather than exposing redaction markers or encrypted envelopes.

Supporting services and persistence

  • Adds UserDashboards and DepartmentDashboardTemplates persistence models, repositories, and SQL Server/PostgreSQL migrations.
  • Adds dashboard layout validation, schema handling, size validation, setting allow-lists, limits, and unknown-widget preservation.
  • Adds dashboard entitlement, board resolution, option-source, widget data, and provider contracts.
  • Adds supporting aggregate reads for calls, chat, workflows, inventory, documents, deployments, time reports, imports, hydrants, security posture, and other widget data.
  • Extracts personnel status-board construction into a shared service used by both the classic dashboard and the modern personnel board widget.
  • Extends SignalR/eventing support for dashboard-relevant staffing, checklist, unit alert, outstanding-resource, and incident-command updates.
  • Adds localized dashboard chrome and widget resources for the supported languages.

Additional fix

  • Changes route lookup caching so successful routes remain cached for 30 days, while failed lookups are retried after a short failure window instead of retaining the failure for the full cache duration.

Testing

Adds coverage for dashboard catalog validation, entitlement and add-on gating, layout normalization, board/template resolution, concurrency, persistence, widget providers, protected data behavior, localization completeness, controller security attributes, and route lookup caching.