Changelog

Released changes are grouped by major and minor version family. Use the release navigation to expand version groups and jump to a specific release.

0.x.x

0.4.x Bugfix and Usability pass

0.4.4 Mobile dashboard visibility pass

Version 0.4.4Build 2026.08.18.1

August 18, 2026

DashboardMobileUsabilityRelease

Pre-production usability update focused on phone portrait and phone landscape dashboard readability.

Phone portrait navigation and KPI summary
  • Kept the theme toggle and Customize View control visible in phone portrait navigation.
  • Centered phone portrait Active Units and System Avg KPI values under their labels.
  • Added the italic 3-hour average note to the phone portrait System Avg label.
Phone portrait hospital cards
  • Reworked phone portrait hospital card headers into a compact hospital name plus aligned Status, Units, and Avg strip.
  • Simplified phone portrait unit rows to prioritize unit, call information, and live ETA or duration while dropping arrival and incident details from the card.
  • Kept Arrival Pending on one line in phone portrait unit rows.
  • Simplified the phone portrait Avg details panel to a viewport-safe Unit and Duration list with centered columns.
Phone landscape dashboard
  • Added a phone-landscape layout pass for short viewports such as 932x430 while keeping hospitals in one vertical column.
  • Compressed dashboard title, clock, KPI summary, hospital headers, cards, table rows, and popovers for phone landscape.
  • Kept the table layout in phone landscape, hid the Incident column, and kept hospital header pills aligned below a dominant hospital name.
  • Matched Units and Avg pills as single-line controls with consistent height in phone landscape.
Release metadata and validation
  • Advanced source-controlled release metadata to 0.4.4 and build 2026.08.18.1.
  • Aligned package metadata, app version metadata, source changelog data, documentation changelog, and active documentation with the 0.4.4 release.
  • Validated with TypeScript and lint.

0.4.3 Mobile dashboard and data-source refresh cleanup

Version 0.4.3Build 2026.08.17.1

August 17, 2026

DashboardMobileData SourcesUsabilityRelease

Pre-production usability update focused on phone portrait dashboard summary density and calmer Email/Data Sources refresh behavior.

Phone portrait dashboard summary
  • Updated the main dashboard phone portrait summary strip to hide Live Average Turnaround.
  • Shortened phone portrait summary labels to Active Units and System Avg while preserving full labels on larger screens.
  • Kept Feed Status in the same summary block on phone portrait while reducing it to a tappable status dot that opens the existing feed details.
Email/Data Sources refresh behavior
  • Replaced live event refresh on Email/Data Sources with a 60-second page refresh interval.
  • Paused the Email/Data Sources refresh interval while add or edit source modals are open.
  • Kept feed polling intervals unchanged.
Release metadata and validation
  • Advanced source-controlled release metadata to 0.4.3 and build 2026.08.17.1.
  • Aligned package metadata, app version metadata, source changelog data, documentation changelog, and active documentation with the 0.4.3 release.
  • Validated with TypeScript, lint, and production build.

0.4.2 Dashboard duration formatting

Version 0.4.2Build 2026.08.16.9

August 16, 2026

DashboardUsabilityRelease

Pre-production dashboard usability update focused on making active durations over one hour show seconds instead of dropping detail.

Dashboard duration display
  • Updated main dashboard live duration cells so durations over one hour display as hours:minutes:seconds.
  • Preserved existing seconds-only display below one minute and minute-based display below one hour.
Release metadata and validation
  • Advanced source-controlled release metadata to 0.4.2 and build 2026.08.16.9.
  • Aligned package metadata, app version metadata, source changelog data, documentation changelog, and active documentation with the 0.4.2 release.
  • Validated with TypeScript, lint, and production build.

0.4.1 Routing diagnostics and Stroke/CVA ETA tuning

Version 0.4.1Build 2026.08.16.8

August 16, 2026

RoutingETAReportsUsabilityRelease

Pre-production usability update focused on Routing / ETA diagnostics, Stroke/CVA-specific ETA multiplier tuning, and clearer canned report presentation.

Routing / ETA diagnostics
  • Added an Actions-launched ETA Test Route modal for testing OSRM routes without refreshing the Routing / ETA page.
  • Supported manual origin and destination coordinates plus destination hospital quick-pick for route testing.
  • Displayed route-test status, raw OSRM duration, adjusted ETA, distance, request timing, multiplier, and failure feedback inside the modal.
  • Kept the latest route-test diagnostic in app settings for later review.
  • Improved OSRM base URL fallback so host-side diagnostics can try localhost when the configured URL uses a Docker service name.
Stroke/CVA ETA tuning
  • Added a separate Stroke/CVA ETA multiplier under Routing / ETA settings while preserving the standard multiplier for other incidents.
  • Applied the Stroke/CVA multiplier during ingest and active ETA recalculation when call information matches CVA, poss stroke, possible cva, stroke, or stroke (cva), case-insensitively.
  • Kept the applied multiplier persisted in ETA prediction history through the existing multiplierUsed field.
  • Added a Stroke/CVA multiplier option to the ETA Test Route modal.
Canned Reports and ETA accuracy usability
  • Renamed the visible Reporting section and reports page to Canned Reports.
  • Grouped ETA Actual vs Predicted KPI values into Sample Size, Current Multipliers, Accuracy, Standard Hints, and Stroke/CVA Hints.
  • Renamed and clarified ETA KPI labels and hints, including Stroke/CVA-specific sample and multiplier hint values.
  • Updated report hint pop-outs to measure their rendered size and stay inside the browser viewport.
Release metadata and validation
  • Advanced source-controlled release metadata to 0.4.1 and build 2026.08.16.8.
  • Aligned package metadata, app version metadata, source changelog data, documentation changelog, and active documentation with the 0.4.1 release.
  • Validated with focused clinical call-info and routing tests, TypeScript, lint, and production build.

0.4.0 Customize View modal row layout

Version 0.4.0Build 2026.08.16.7

August 16, 2026

UsabilityDashboardBugfixRelease

Pre-production usability update focused on making the dashboard Customize View modal easier to read and operate without modal scrolling.

Customize View modal
  • Reworked the dashboard Customize View modal into one hospital list instead of separate Hospitals and Pinned Order sections.
  • Kept each hospital on its own full-width row so full hospital names have more room to display.
  • Moved pinned hospitals to the top of the same list and limited up/down reorder controls to pinned rows.
  • Kept unpinned hospitals in configured dashboard order with a single pin action.
  • Widened the modal and removed its internal scrolling so the current hospital list fits in the available vertical space.
Release metadata and validation
  • Advanced source-controlled release metadata to 0.4.0 and build 2026.08.16.7.
  • Aligned package metadata, app version metadata, source changelog data, documentation changelog, and active documentation with the 0.4.0 release.
  • Validated with TypeScript and lint; browser layout checks confirmed the modal fits in a 1440x900 viewport.

0.3.x Codebase Refactor and Optimization

0.3.6 refactor and optimization phase 6

Version 0.3.6Build 2026.08.16.6

August 16, 2026

RefactorMaintainabilityIngestReportsRelease

Pre-production refactor update focused on domain comments and readability polish for ingest, ETA, SFTP, and agency report scope logic.

Domain comments and readability
  • Added targeted domain comments for transport lifecycle precedence, stale XML handling, diversion idempotency, ETA prediction lifecycle, SFTP chronological ordering, and agency report scoping.
  • Documented why same-time lifecycle updates preserve the most complete state and why older out-of-order XML is skipped instead of treated as an ingest failure.
  • Documented how agency reports expand assigned agency scopes through Agency Setup mappings, unit-agency identifiers, fallback source agencies, and explicit exclusions.
Release metadata and validation
  • Advanced source-controlled release metadata to 0.3.6 and build 2026.08.16.6.
  • Aligned package metadata, app version metadata, source changelog data, documentation changelog, and active documentation with the 0.3.6 release.
  • Validated with TypeScript, lint, focused ingest/routing/RBAC tests, and production build.

0.3.5 refactor and optimization phase 5

Version 0.3.5Build 2026.08.16.5

August 16, 2026

OptimizationPerformanceReportsAdminRelease

Pre-production refactor update focused on narrowing high-volume dashboard, report, and admin data paths while preserving existing behavior.

Query and payload optimization
  • Narrowed dashboard, report, maintenance, ingest, routing diagnostic, and email-delivery data reads to the fields needed by each workflow.
  • Reduced duplicate data movement in high-volume report builders and admin list pages without changing visible table rows, summaries, or CSV output.
  • Kept Agency Setup, report scoping, XML ingest, email-delivery trigger, and maintenance behaviors stable while tightening selected payloads.
Admin navigation and display polish
  • Moved Agency Setup out of the System Settings tab list and made it a direct Configuration selection.
  • Reordered Configuration selections so operational settings, agency mappings, hospitals, routing, KPI settings, branding, and outbound email setup appear in a clearer sequence.
  • Updated the main dashboard turnaround label to System Average Turnaround (3 Hr Avg.) with the parenthetical styled smaller and italic.
Changelog and branding polish
  • Updated changelog navigation to show version numbers followed by release titles, with scrollable navigation for long release lists.
  • Standardized changelog version labels without the leading v prefix.
  • Configured the uploaded agency logo endpoint as the app favicon, shortcut icon, and Apple icon.
Release metadata and validation
  • Advanced source-controlled release metadata to 0.3.5 and build 2026.08.16.5.
  • Aligned package metadata, app version metadata, source changelog data, documentation changelog, and active documentation with the 0.3.5 release.
  • Validated with TypeScript, lint, production build, targeted tests, and authenticated browser smoke tests for current data population.

0.3.4 refactor and optimization phase 4

Version 0.3.4Build 2026.08.16.4

August 16, 2026

RefactorMaintainabilityAdminRoutingRelease

Pre-production refactor update focused on decomposing large admin client components while preserving existing admin workflows.

Admin component decomposition
  • Split Data Sources management into focused source-card, modal, field, poll-history, display, and type modules behind the existing DataSourceManager API.
  • Split Email Intake into focused display/type helpers, rule form, review card, configured-rule card, and simulator modules behind the existing EmailIntakeManager API.
  • Extracted Agency Setup draft/list serialization helpers, shared field styles, types, and unit evidence list display into focused modules.
Mapping helpers
  • Extracted shared XML sample parsing, path matching, sample value preview, and alert record preview helpers for XML Mapping and Alert Mapping.
  • Preserved XML Mapping Segment-relative path behavior and Alert Mapping path/value de-duplication.
Routing diagnostics
  • Fixed Routing / ETA Test Connection so failed connection feedback no longer surfaces as NEXT_REDIRECT.
  • Improved OSRM connection diagnostics to try localhost when a Docker service-name URL is configured but the web app is running on the host.
Release metadata and validation
  • Advanced source-controlled release metadata to 0.3.4 and build 2026.08.16.4.
  • Aligned package metadata, app version metadata, source changelog data, documentation changelog, and active documentation with the 0.3.4 release.
  • Validated with TypeScript, lint, production build, and browser smoke tests for the refactored admin screens.

0.3.3 refactor and optimization phase 3

Version 0.3.3Build 2026.08.16.3

August 16, 2026

RefactorMaintainabilityIngestDashboardRelease

Pre-production refactor update focused on shared ingest source config parsing and dashboard status popover behavior.

Ingest config consolidation
  • Added shared SFTP/email source config normalization for admin actions, admin display components, and server pollers.
  • Replaced duplicated SFTP and email poller config parsing with the shared helpers.
  • Updated Data Sources admin forms and summaries to show normalized SFTP/email defaults and bounds.
Dashboard status popover
  • Updated the dashboard Status indicator popover to close on outside click, inside click, or Escape, matching the other dashboard detail popouts.
Release metadata and validation
  • Advanced source-controlled release metadata to 0.3.3 and build 2026.08.16.3.
  • Skipped 0.3.2 intentionally so the 0.3.x numbering aligns with the refactor/optimization phase number.
  • Aligned package metadata, app version metadata, source changelog data, and active documentation with the 0.3.3 release.
  • Validated with focused source config tests, TypeScript, lint, and production build.

0.3.1 refactor and optimization phase 2

Version 0.3.1Build 2026.08.16.2

August 16, 2026

RefactorMaintainabilityReportsRelease

Pre-production refactor update focused on splitting reporting internals behind the existing public reporting facade.

Report module split
  • Kept lib/admin-reports.ts as the stable public facade for report pages, CSV exports, and role tests.
  • Extracted report definitions, types, role/date helpers, hospital and agency scoping, formatting helpers, and shared row utilities into lib/reports modules.
  • Moved report builders for hospital volumes, turnaround performance, call-info volumes, other destinations, ETA accuracy, ingest exceptions, and system performance into report-specific modules.
Release metadata and validation
  • Advanced source-controlled release metadata to 0.3.1 and build 2026.08.16.2.
  • Aligned package metadata, app version metadata, source changelog data, and active documentation with the 0.3.1 release.
  • Validated with TypeScript, lint, and production build.

0.3.0 refactor and optimization phase 1

Version 0.3.0Build 2026.08.16.1

August 16, 2026

RefactorMaintainabilityReportsRelease

Pre-production refactor update focused on shared pure helpers and setting the baseline for the reporting module split.

Shared helpers
  • Extracted reusable CSV escaping and row serialization helpers for report, audit log, and incident exports.
  • Extracted reusable FormData parsing helpers for admin server actions.
  • Extracted reusable case-insensitive list diffing for audit summaries.
Refactor planning
  • Added a staged refactor and optimization plan for reporting, ingest configuration, admin components, query optimization, and domain comments.
  • Documented Phase 2 as a behavior-preserving split of the reporting module behind the existing public facade.
Release metadata and validation
  • Advanced source-controlled release metadata to 0.3.0 and build 2026.08.16.1.
  • Aligned package metadata, app version metadata, source changelog data, and active documentation with the 0.3.0 release.
  • Validated with focused utility tests, TypeScript, lint, and production build.

0.2.x Pre-Production Dashboard and Admin Readiness

0.2.4 dashboard focus order and navigation cleanup

Version 0.2.4Build 2026.08.15.3

August 15, 2026

DashboardNavigationUsabilityRelease

Pre-production update focused on browser-local dashboard focus ordering and cleaner navigation controls.

Dashboard view customization
  • Added browser-local dashboard focus ordering so a display can pin selected hospital cards to the top without login or database changes.
  • Added a navigation-bar Customize View modal for pinning hospitals, changing pinned order, unpinning hospitals, and resetting the local view.
  • Kept unpinned hospitals in the configured dashboard order while applying the pinned order only to the current browser.
Navigation cleanup
  • Moved dashboard view customization out of the dashboard content and into the navigation bar beside the theme control.
  • Changed theme, customize, sign-in, and sign-out actions to compact icon controls with accessible labels and tooltips.
  • Removed boxed styling from the theme and customize icons so the navigation actions share a cleaner visual treatment.
Release metadata and validation
  • Advanced source-controlled release metadata to 0.2.4 and build 2026.08.15.3.
  • Aligned package metadata, app version metadata, source changelog data, and documentation changelog with the 0.2.4 release.
  • Validated during the workstream with TypeScript, lint, and production builds.

0.2.3 database maintenance cleanup and reset controls

Version 0.2.3Build 2026.08.15.2

August 15, 2026

DatabaseMaintenanceAdminRelease

Pre-production update focused on Database Maintenance retention coverage and a guarded incident-data reset operation.

Database maintenance
  • Expanded retention cleanup to include source poll telemetry, dashboard push events, completed system jobs, and outbound email delivery logs.
  • Added a guarded Reset Incident Data action that clears incident and runtime data while preserving configured users, hospitals, data sources, XML mappings, feed settings, email rules, alert configuration, app settings, and audit logs.
  • Added Database Maintenance preview counts and confirmation modals for expanded retention cleanup and incident-data reset actions.
Release metadata and validation
  • Advanced source-controlled release metadata to 0.2.3 and build 2026.08.15.2.
  • Aligned package metadata, app version metadata, source changelog data, and documentation changelog with the 0.2.3 release.
  • Validated during the workstream with TypeScript, lint, and production builds.

0.2.2 system performance telemetry and report accuracy updates

Version 0.2.2Build 2026.08.15.1

August 15, 2026

ReportsPerformanceSFTPETARelease

Pre-production update focused on making System Performance timings easier to audit, correcting source-delay and ETA/OSRM reporting, and recording SFTP listing-order behavior.

SFTP ingest ordering
  • Changed SFTP ingest to process matching XML files chronologically by the timestamp embedded in the filename, with remote modify time and filename fallbacks.
  • Added poll-level out-of-order listing telemetry so operators can see when an SFTP directory listing arrives outside chronological order.
  • Stored out-of-order file count, maximum position lag, first out-of-order filename, and last out-of-order filename on poll-run telemetry.
System Performance report
  • Added column-level help pop-outs to the System Performance report preview so users can inspect what each timing column means.
  • Changed Source Delay to measure from the source file timestamp embedded in the filename to app receipt instead of from first dispatch time to app receipt.
  • Changed sub-second durations such as parser and OSRM runtimes to display in milliseconds instead of rounding down to 0:00:00.
  • Changed ETA Attempt rows to read stable UnitEtaPrediction history so later arrival or clear messages do not hide To ETA and OSRM timing.
  • Sorted System Performance rows together by event time so ETA attempts appear in the preview near their related ingest records.
Release metadata and validation
  • Advanced source-controlled release metadata to 0.2.2 and build 2026.08.15.1.
  • Aligned package metadata, app version metadata, source changelog data, and documentation changelog with the 0.2.2 release.
  • Validated during the workstream with TypeScript, lint, and production builds.

0.2.1 Agency Setup, reports, ETA, and system performance updates

Version 0.2.1Build 2026.08.14.2

August 14, 2026

AgencyReportsETADashboardPerformanceRelease

Pre-production update focused on Agency Setup usability, agency-scoped report accuracy, destination/call-info report usefulness, ETA countdown behavior, and end-to-end system performance visibility.

Agency Setup
  • Improved Agency Setup as an expandable row-based workspace modeled after Hospital Management.
  • Agencies now load collapsed by default and expanded agency content uses denser sections with bounded scrolling.
  • Added lower-emphasis placeholder styling so blank-field hints are easier to distinguish from populated values.
  • Added agency-level Save controls and inline persistence for unit add, exclude, remove, and agency delete actions.
  • Updated mapped/excluded unit actions so visible lists and advanced text edits stay in sync immediately.
  • Suppressed incident-only suggestions globally when a unit is already mapped or confirmed by unit-agency evidence anywhere.
Agency-scoped reports
  • Added grouped agency breakout support for Hospital Volumes and Turnaround Performance.
  • Agency users assigned multiple agencies automatically see hospital total rows followed by indented agency rows.
  • Global Admin, Admin, and Manager users can opt into agency breakout for supported reports.
  • Hospital Volumes and Turnaround Performance keep Other Destinations at the bottom while sorting ordinary hospitals by busiest first.
  • Tightened report table layouts for Hospital Volumes and ETA Actual vs Predicted so previews fit better in the available window.
Reporting updates
  • Added an Other Destinations report available to all report users, showing raw destination names routed to the reserved catch-all bucket with use counts.
  • Reworked Volumes By Call Info into a destination-distribution report with call-info total rows and destination child rows.
  • Updated Volumes By Call Info to resolve CBD placeholder call text through the active XML parser config, matching dashboard call-info display and CSV export values.
  • Replaced the low-value Prioritized KPI with Other Destination Uses.
  • Added KPI hover hints across reports where summary cards did not already explain their purpose.
ETA behavior
  • Updated dashboard ETA countdowns to anchor target arrival to lastTransportStateAt, then transportStartedAt, with ingest time only as a fallback.
  • Late-processed incidents now display remaining ETA based on elapsed time since the transport/state timestamp instead of resetting from ingest time.
  • Changed inbound ETA display to show Arrival Pending when remaining ETA is under two minutes.
  • Added ETA attempt status, failure reason, request timestamp, response timestamp, and request duration tracking for newly processed transports.
  • Added OSRM request/response timing to stored ETA prediction records so routing runtime can be reviewed separately from prediction accuracy.
System performance reporting
  • Added a Manager-and-higher System Performance report for source delivery, parser, processing, transport-to-ETA, and OSRM latency review.
  • Added summary KPIs for ingest file count, source-delivery P90, parser P90, processing P90, ETA coverage, OSRM P90, transport-to-ETA P90, OSRM failure rate, ingest failure rate, and poll load.
  • Added detail rows that combine ingest-file timing and ETA-attempt timing in one operational performance view.
  • Compressed the System Performance on-screen preview to the core latency columns while keeping full diagnostic timing fields in CSV export.
Audit logging
  • Expanded Agency Setup audit summaries to include mapped units, exclusions, aliases, agency additions/removals, names, and dispatch groups.
  • Expanded User Management audit summaries to include hospital/agency scope assignments and scope additions/removals.
  • Expanded report CSV export audit summaries to include exported row count, hospital filter, agency breakout state, and exporting user role.
Release metadata and validation
  • Advanced source-controlled release metadata to 0.2.1 and build 2026.08.14.2.
  • Aligned package metadata, app version metadata, source changelog data, and documentation changelog with the 0.2.1 release.
  • Validated during the workstream with TypeScript, lint, focused role/parser/routing tests, and production builds.

0.2.0 dashboard, About editor, and Agency Setup updates

Version 0.2.0Build 2026.08.12.1

August 12, 2026

DashboardAboutAgencyReportsRuntimeRelease

Pre-production update focused on dashboard stability, About page/editor behavior, modal dismissal consistency, local worker/routing validation, and XML-evidence-based agency unit mapping.

Runtime and dashboard stability
  • Recreated local OSRM and system-worker containers after stale bind mounts from an old project path were found.
  • Confirmed local Postgres, OSRM, and system-worker were running, with the worker polling SFTP.
  • Updated the local routing setting so Docker-side ETA calls use http://osrm:5000.
  • Fixed the dashboard operational clock hydration mismatch by passing a server-rendered initial timestamp into the client clock.
  • Removed the operational clock text-shadow treatment in light mode so the header time remains readable.
Dashboard pop-outs
  • Hospital alert and average-turnaround pop-outs now close when clicked inside, clicked outside, or dismissed with Escape.
  • Hospital alert and average-turnaround pop-outs use shared dismissible detail behavior.
  • Fixed the server/client boundary issue caused by passing a render-function child into a Client Component.
About page and editor
  • Updated the public About card layout so odd final cards span full width on tablet and desktop.
  • New About cards now appear at the top of the editor and the editor grid mirrors the published layout.
  • Moved the About editor Save button next to Add Card at the top.
  • Added an About preview pop-out with outside-click, Escape, and visible close-button dismissal.
  • Matched the About preview pop-out width to the public About page container and kept it responsive.
  • Made the About page credit fixed and non-editable from the editor.
  • Changed the About credit to The web application was developed by Thurston County Medic One.
  • Linked Thurston County Medic One in the About credit to the county Medic One page.
  • Normalized nested HTML/text entities from formatted About card content so encoded artifacts do not render publicly.
Agency Setup
  • Added System Settings > Agency Setup for editable XML-evidence-based agency/unit mappings.
  • Added separate unit-owning agency parsing via the XML unit augmentation agency path, while keeping sourceAgency as the incident/file agency.
  • Rebuilt Agency Setup as a verification workspace with confirmed unit-agency evidence, manual mapped units, incident-only suggestions, and explicit exclusions.
  • Seeded Agency Setup with sample-derived mappings for AMR, BH / FD17, EO / FD06, GR / FD13, LF / FD03, MC / FD09, OF / OFD, OLYM, RO / FD01, SB / FD08, TF / TFD, TN / FD12, and YF / FD02.
  • Added seed catalog tracking so older saved Agency Setup records can receive newly discovered default agencies without overwriting local edits.
  • Included LF units identified from sample XML evidence: A33, A34, B32, B34, BN31, BN34, E31, E32, E33, E34, E35, M6, T31, and TK31.
  • Kept M-unit handling explicit because sample XML showed M units belong to multiple agencies.
  • Seeded LF exclusions for known non-LF outliers E81, M4, M8, and M10.
  • Updated User Management Agency role choices to come from Agency Setup mappings instead of incident source-agency aggregates.
  • Updated Agency report scoping to use unit-attached agency evidence and mapped unit IDs when configured, with explicit exclusions and source-agency matching only as a fallback for unmapped agencies.
  • Updated System Settings help and admin landing text to describe Agency Setup.
  • Added the unitAgency column to incident exports so agency ownership can be audited separately from incident agency.
Release metadata and validation
  • Advanced source-controlled release metadata to 0.2.0 and build 2026.08.12.1.
  • Aligned package metadata, app version metadata, changelog data, and handoff documentation with the 0.2.0 release.
  • Validated with TypeScript, lint, focused tests, and production builds.

0.1.x Operational Hardening and Admin Workflow Updates

0.1.10 admin naming and agency-scoped reporting updates

Version 0.1.10Build 2026.08.11.1

August 11, 2026

AdminReportsRBACAgencyDocumentationRelease

Pre-production update focused on admin navigation naming, agency-scoped reporting, report access hardening, and current handoff documentation.

Admin navigation naming
  • Renamed Data Sources to Email/Data Sources across admin navigation, section headings, help links, help content, and related mapping copy.
  • Renamed Email Intake to Email Mapping across admin navigation, section headings, help links, action summaries, and related intake rule copy.
  • Renamed Email Delivery to Outbound Email Setup across admin navigation, page headings, help content, action summaries, and Email Mapping forwarding copy.
  • Moved Outbound Email Setup from Administration to Configuration in the admin landing page and admin help index.
  • Corrected Feeds & Intake back-navigation defaults for Email/Data Sources and Email Mapping.
Agency-scoped reporting
  • Added the Agency user role for report-only access scoped by assigned source agency values.
  • Added Agency role support to User Management, RBAC, report filtering, CSV export, admin badge labels, help content, and current project documentation.
  • Populated Agency assignment choices from distinct source agency values already seen in ingested unit records.
  • Added recent matching-unit previews for saved Agency users so administrators can verify scope before relying on the login.
  • Validated Agency assignments server-side so Agency users can only be assigned source agency values present in feed data.
Report access
  • Hid and blocked ETA Actual vs Predicted and Ingest Exceptions for Hospital, Reports, and Agency users.
  • Kept Hospital Volumes, Turnaround Performance, and Volumes By Call Info available to scoped report users.
  • Applied the same report restrictions to CSV export so direct URL access follows the visible report selector.
Validation and runtime
  • Regenerated Prisma Client after adding the Agency role and scope model.
  • Applied the Agency migration to the local Docker Postgres database.
  • Restarted the local system worker container after the database migration.
  • Validated with lint, focused RBAC/report tests, and a production build.
Release metadata
  • Advanced source-controlled release metadata to 0.1.10 and build 2026.08.11.1.
  • Aligned package metadata, app version metadata, changelog data, and handoff documentation with the 0.1.10 release target.

0.1.9 light-mode accessibility and admin usability updates

Version 0.1.9Build 2026.08.10.1

August 10, 2026

AccessibilityAdminLight ModeBrandingDocumentationRelease

Pre-production update focused on light-mode accessibility, admin card/pill/button readability, Hospital Management help, Branding upload layout, and clearer Email Delivery KPI wording.

Light-mode accessibility
  • Improved light-mode contrast for admin text, semantic status colors, placeholder text, file picker controls, footer text, and shared primary, secondary, and ghost buttons.
  • Improved public dashboard feed-status popover readability and alert/status pill contrast in light mode.
  • Aligned Administration and Reporting cards, tables, metric tiles, pills, notices, and action buttons with scoped light-mode surface treatments.
  • Improved Global Admin-only changelog note panels so internal release notes remain readable in light mode.
  • Improved changelog release chips, tags, release navigation pills, and Read/Hide controls so they remain visible in light mode.
Admin navigation and controls
  • Updated top-level admin group tabs and section subtabs so selected, inactive, and hover states have ADA-safer light-mode contrast.
  • Aligned subtab color treatment across Operations, Feeds & Intake, Configuration, Administration, and Reporting.
  • Improved light-mode visibility for System Settings timezone controls, About page editor buttons, Alert Mapping controls, Email Intake tabs, Email Delivery controls, Hospital tabs, and Mapping tabs.
Hospital Management
  • Fixed the System Bucket status pill so it stays readable and no longer wraps awkwardly in the status column.
  • Improved light-mode readability for the Other Destinations banner and listed alias pills in expanded hospital rows.
  • Expanded Hospital Management help to explain list columns, status values, editable hospital fields, aliases, thresholds, alert visibility, email recipients, activity controls, and Other Destinations behavior.
Branding
  • Moved Upload Logo into the same row as the file picker so it sits beside the selected file name or no-file-selected text.
  • Improved light-mode visibility for Branding buttons, logo upload controls, and file picker pills.
Routing, Administration, and Reporting
  • Improved light-mode readability for Routing / ETA readiness cards, KPI tiles, status pills, and action cards.
  • Improved light-mode card, table, metric, notice, and button visibility across User Management, Audit Logs, Database Maintenance, Email Delivery, and Reports.
  • Renamed the Email Delivery KPI from Active Breaches to Open Trigger Conditions so the value is clearer at a glance.
Release metadata
  • Advanced source-controlled release metadata to `0.1.9` and build `2026.08.10.1`.
  • Aligned package metadata, app version metadata, changelog data, and handoff documentation with the 0.1.9 release target.
  • Updated 0.1.9 changelog notes to include the final changelog readability and auth build-warning cleanup changes.
Build cleanup
  • Removed the Next.js production build warnings about `jose` CompressionStream and DecompressionStream usage in the Edge Runtime.

0.1.8 dashboard readability, feed-status privacy, and mapper preview updates

Version 0.1.8Build 2026.05.24.1

May 24, 2026

DashboardResponsivePrivacyMappingsRelease

Pre-production update focused on public dashboard readability, feed-status privacy, and clearer Alert XML Mapping previews.

Dashboard readability
  • Expanded the public dashboard content width for 1920x1080 viewing.
  • Adjusted large-screen typography so hospital names and unit rows remain easier to read from operational viewing distance.
  • Increased hospital card table spacing and row readability without changing dashboard data logic.
  • Improved spacing between hospital cards so primary hospital sections scan more clearly.
  • Changed constrained dashboard tables so Incident Number hides earlier as hospital cards shrink.
  • Gave the Duration column more protected space so longer ETA and arrival-pending labels do not run off the card.
Responsive table behavior
  • Prepared dashboard tables to preserve Unit, Call Info, Arrival, and Duration readability as available width shrinks.
  • Changed Incident Number to drop out before the hospital card becomes too narrow for the core no-wrap columns.
  • Protected Arrival and Duration columns from wrapping or running off the card in constrained layouts.
Feed-status privacy
  • Redacted hostnames, IP addresses, and ports from public dashboard feed-status connection errors.
  • Kept the public connection error visible enough to identify the failure state without exposing the remote endpoint.
Alert XML Mapping
  • Changed the Alert Mapping preview to show mapped sample data instead of repeating the selected XML field path.
  • Kept field path selection in Step 2 while making Step 4 a true mapped-output preview.
Release metadata
  • Advanced source-controlled release metadata to `0.1.8` and build `2026.05.24.1`.
  • Aligned package metadata and public changelog data with the 0.1.8 release.

0.1.7 dashboard readability and responsive table preparation

Version 0.1.7Build 2026.05.19.1

May 19, 2026

DashboardResponsiveReadabilityRelease

Pre-production update focused on making the public dashboard more readable at the recommended 1920x1080 wallboard resolution while preserving constrained-width table behavior.

Dashboard readability
  • Expanded the public dashboard content width for 1920x1080 viewing.
  • Adjusted large-screen typography so hospital names and unit rows remain easier to read from operational viewing distance.
  • Increased hospital card table spacing and row readability without changing dashboard data logic.
  • Improved spacing between hospital cards so primary hospital sections scan more clearly.
Responsive table behavior
  • Prepared dashboard tables to preserve Unit, Call Info, Arrival, and Duration readability as available width shrinks.
  • Changed Incident Number to drop out only when the hospital card becomes too narrow for the core no-wrap columns.
  • Protected Arrival and Duration columns from wrapping or running off the card in constrained layouts.
Release metadata
  • Advanced source-controlled release metadata to `0.1.7` and build `2026.05.19.1`.
  • Aligned package metadata and active handoff documentation for a clean next-session pickup.

0.1.6 alert pill behavior and deployment-readiness updates

Version 0.1.6Build 2026.05.18.2

May 18, 2026

AlertsReleaseDashboardDocumentation

Pre-production update focused on hospital card alert interaction reliability, deployment metadata consistency, and release communication.

Alerts
  • Hospital alert pills now remain clickable when an active hospital alert has no message content.
  • Hospital alert chips now continue using alert tone styling while an active alert is present, even with empty descriptions.
  • Updated alert description rendering to keep the dashboard indicator interaction stable under production deployment.
Changelog and release metadata
  • Updated source-controlled release version/build target to `0.1.6` and `2026.05.18.2`.
  • Aligned changelog route data with current release work so `/changelog` shows the latest in-progress release entry.

0.1.5 admin settings, alert editing, and footer metadata updates

Version 0.1.5Build 2026.05.18.1

May 18, 2026

SettingsAlertsAboutRoutingHelpRelease

Pre-production update focused on admin settings organization, Routing / ETA readability, configurable audit retention, editable About page content, alert terminology, shared formatting controls, modal alert editing, help accuracy, persistent admin back navigation, and footer-based release metadata.

Database Maintenance
  • Added configurable audit-log retention days to Database Maintenance.
  • Kept the default audit-log retention at 365 days for existing saved settings.
  • Applied the configured audit-log retention window to cleanup preview counts, manual cleanup, queued cleanup jobs, and daily worker audit cleanup.
  • Added regression coverage for legacy Database Maintenance settings and custom audit-log cutoff calculation.
Routing / ETA
  • Restructured Routing / ETA to reduce scrolling and improve scanability.
  • Consolidated routing state into a compact Readiness card with primary ETA readiness metrics and secondary provider, test, and job status.
  • Kept settings and operational actions below Readiness, with routing data settings and job logs collapsed.
System Settings
  • Reorganized System Settings into subject tabs for System Timezone, About Page, and Alert Color Settings.
  • Moved Alert Color Settings out of Alerts and into System Settings.
  • Renamed the public-about settings tab to About Page and removed the old Operations label from the time-zone settings card.
  • Changed System Timezone from a datalist text field to a searchable themed dropdown.
  • Expanded the timezone selector to U.S. IANA time zones, including regional and territory zones.
About Page
  • Replaced the single optional About agency section with editable public About page cards.
  • Converted the previous fixed About content into default editable cards when no structured About content has been saved.
  • Added safe formatting controls for editable About card bodies, including restricted links.
  • Moved version, build, and changelog access out of the About page and into the site footer.
Alerts
  • Renamed the visible Normal alert type label to Advisory while keeping existing stored alert values unchanged.
  • Changed global alert subjects to plain text.
  • Replaced marker-based global alert description formatting with a toolbar editor for global alert descriptions only.
  • Changed existing alert editing from inline expanded forms to edit modals that match the Add Alert workflow.
  • Kept hospital alert descriptions as plain text.
Shared Formatting
  • Reused the same formatted-text editor foundation for About card bodies and global alert descriptions.
  • Kept About-specific links and extra-small text enabled while keeping global alert descriptions more restricted.
  • Added regression coverage for the shared formatted HTML sanitizer.
Release Metadata
  • Updated the source-controlled release version to 0.1.5.
  • Updated the source-controlled build number to 2026.05.18.1.
  • Added the changelog link to the footer next to the version and build text.
  • Rebuilt the changelog as a navigable release browser with collapsible releases, category chips, a release index, and show-all controls.
  • Show Global Admin-only detailed notes when a Global Admin is signed in while sending only sanitized public notes to all other users.
Help and Navigation
  • Reviewed admin help pages and on-page notes against the current application behavior.
  • Updated help content for Manager access, Alert Color Settings, footer release metadata, alert mapping profiles, guarded parser paths, OSRM data locations, audit coverage, and report scope.
  • Added persistent admin Back controls so section pages return to the originating admin group even after save redirects.
  • Preserved return context while switching System Settings and XML Mappings tabs.
Data Sources
  • Preserved the SFTP connection timestamp in the final last-poll summary so the Data Sources card shows the last successful connection instead of Never after a completed poll.
Alert Color Settings
  • Replaced native browser color inputs with a themed custom color picker matching the app pop-out surface treatment.
  • Added a rectangular saturation and brightness selector, hue slider, direct hex entry, Apply and Cancel behavior, and per-alert revert-to-default action.
  • Kept default colors at #22d3ee, #ffd500, and #ff5900.
  • Preserved the existing alert.colorSettings storage and dashboard/admin alert color behavior.

0.1.3 configurable alert colors and changelog polish

Version 0.1.3Build 2026.05.17.2

May 17, 2026

AlertsHospitalsChangelog

Pre-production update focused on making alert tone colors configurable, tightening Hospital Management layout, and aligning the public changelog layout with the rest of the application.

Alert display
  • Added configurable colors for Informational, Advisory, and Critical alert tones.
  • Applied configured alert colors to public global alert banners, hospital alert status chips, and admin alert type badges.
  • Added a compact Alert Colors configuration panel on the Alerts admin page with small color swatches and live preview pills.
  • Kept existing alert records unchanged while storing the shared color settings separately.
Public changelog
  • Moved the Back to About link into the changelog page header so it aligns with other top-right page actions.
Hospital management
  • Changed hospital records to a compact expandable row layout with status, coordinate, alias, and manage columns.
  • Added a coordinate readiness badge so mapped and unmapped hospitals are easier to scan.
  • Moved Add Hospital into a collapsed panel to keep the hospital list focused during routine edits.

0.1.2 dashboard polish, alert mapping, and ingest stability

Version 0.1.2Build 2026.05.17.1

May 17, 2026

DashboardMappingsIngest

Pre-production update focused on dashboard alert usability, clearer admin mapping tools, source-specific alert mapping profiles, and safer SFTP ingest behavior.

Dashboard
  • Changed global alert details from inline expansion to a compact pop-out panel anchored to the selected alert.
  • Made global alert detail panels close when the user clicks anywhere on the screen.
  • Removed repeated alert subject text from the global alert detail panel.
Admin usability
  • Unified help bubble colors with the global alert pop-out style in dark and light themes.
  • Changed the XML Mapping sample-file control so only the Browse button opens the file picker.
  • Made the Alert Mapping tab a guided workflow with sample XML loading, click-to-assign fields, source usage, scope mode, and preview.
Alert mapping profiles
  • Added multiple named alert mapping profiles for different XML sources.
  • Added Data Source assignment for alert mapping profiles so hospital and global alert feeds can use different mappings.
  • Kept compatibility with the previous single alert mapping configuration.
Ingest stability
  • Ensured production bootstrap creates or repairs the default incident XML mapping profile before web and worker services start.
  • Added SFTP parser-readiness checks before remote files are listed, downloaded, parsed, or moved.
  • Changed parser/configuration readiness problems to source-level poll failures so remote SFTP files remain available for retry.
  • Kept the default incident XML mapping self-heal path as a defensive fallback.
Release metadata
  • Moved pre-production versioning to the 0.x.x series.
  • Recorded 0.0.0 as the initial internal development baseline.
  • Set the current release to 0.1.2.

0.1.1 audit, Manager role, and dashboard display updates

Version 0.1.1Build 2026.05.15.2

May 15, 2026

AuditRBACDashboardReports

Pre-production update focused on broader audit coverage, bounded audit-log retention, Manager access, dashboard duration display, and report tooltip containment.

Authentication and access
  • Added the Manager user role.
  • Managers have global access to Alerts, Reports, KPI Settings, Unit Maintenance, User Management, and Audit Logs.
  • Managers are blocked from Feeds & Intake, Hospitals, Branding, Routing / ETA, System Settings, Database Maintenance, and Email Delivery.
  • Managers cannot assign or manage Global Admin users.
Dashboard
  • Changed Live Average Turnaround and Overall Average Turnaround KPI values to display as HH:MM:SS.
  • Changed hospital-card average turnaround durations to show MM:SS below one hour and HH:MM:SS once hours apply.
Reports
  • Changed report metric help bubbles to stay fully visible inside the browser window.
Audit and retention
  • Expanded audit logging for administrative changes across alerts, hospitals, data sources, settings, mappings, database maintenance, Email Intake, Email Delivery, branding, and routing.
  • Added audit logging for audit log, incident, and report CSV exports.
  • Added a one-year rolling retention limit for audit log records.
  • Included audit log cleanup counts in Database Maintenance cleanup and preview.

0.1.0 operational fixes and production acceptance

Version 0.1.0Build 2026.05.15.1

May 15, 2026

ProductionAuthReportsETA

Pre-production update focused on production readiness, role hardening, global alert usability, reports, ETA diagnostics, and operational maintenance.

Dashboard and alerts
  • Added source-controlled About/footer version and build tracking.
  • Added safe formatting for global alert subjects and descriptions: bold, italic, small text, large text, and line breaks.
  • Changed public global alert banners to show subject-only while collapsed.
  • Added click-to-expand global alert descriptions when a description exists.
  • Changed collapsed global alert banners to use less vertical space.
  • Made alert descriptions optional for global and hospital alerts.
  • Reduced the dashboard title and subtitle font sizes.
  • Improved dashboard card formatting for phone portrait screens.
  • Changed dashboard unit ordering so inbound units show first by earliest expected arrival, followed by arrived units newest first.
  • Added the public About page Agency Information section controlled from System Settings.
  • Added fixed About page credit for Thurston County Medic One.
  • Added a public changelog page linked from About.
  • Added reserved Other Destinations dashboard bucket for unmapped transport destinations.
Authentication and access
  • Added the GLOBAL_ADMIN role.
  • Added migrations that move existing ADMIN users into Global Admin.
  • Kept legacy ADMIN as a full-access compatibility role during migration.
  • Removed seeded and phase guidance from the login page.
  • Added My Account for self-service email updates and password changes.
  • Changed User Management to a compact expandable table.
  • Added Global Admin user editing for email, role, hospital scope, and password reset.
  • Improved session validation so account changes take effect more quickly.
  • Added additional login abuse protection.
Routing and ETA
  • Added Routing / ETA diagnostics to the admin UI.
  • Updated the default production routing service configuration.
  • Added OSRM connection testing with stored latest diagnostic result.
  • Added active and inbound ETA coordinate coverage checks.
  • Added hospital missing-coordinate visibility.
  • Added active inbound ETA recalculation after OSRM settings or routing data are fixed.
  • Added UnitEtaPrediction history for comparing predicted ETA against actual arrival.
  • Added ETA Actual vs Predicted report multiplier hints, median hint, and P75 hint.
  • Changed ETA multiplier display to two decimals so values such as 0.95 stay visible.
Reports
  • Added canned Reports under /admin/reports.
  • Added Hospital Volumes report.
  • Added Turnaround Performance report.
  • Added Volumes By Call Info report.
  • Added ETA Actual vs Predicted report.
  • Added Ingest Exceptions report.
  • Added date range and hospital filters.
  • Added scoped CSV export at /admin/reports/export.csv.
  • Constrained hospital-scoped report users to assigned hospitals.
  • Hid global ingest exception details from hospital-scoped users.
  • Formatted report durations as H:MM:SS and timestamps to seconds.
  • Reduced ETA report preview columns while keeping full detail in CSV export.
Ingest and data handling
  • Changed XML feed timestamp parsing to store feed epoch values directly without operational time zone shifting.
  • Added same-unit destination diversion persistence through UnitDiversionEvent.
  • Kept the latest same-unit destination visible on the dashboard after a diversion.
  • Ensured a unit cannot remain active on the board more than once.
  • Wrapped unit destination, diversion, and ETA persistence in one transaction.
  • Added manual-upload size protection before reading content into memory.
  • Added parser coverage for completed lifecycle, removal-state precedence, and multiple transported units.
  • Kept Other Destinations active and eligible for unmatched XML fallback.
Email intake and delivery
  • Added manual retry/reprocess for stored Email Intake messages.
  • Reworked Email Intake into Messages, Rules, and Simulator tabs.
  • Added WATrac diversion parsing for hospital alert create and clear behavior.
  • Added alert source tracking for manual and email-generated alerts.
  • Protected manual alerts from email replacement or clearing by default.
  • Added Email Delivery SMTP settings, SMTP verify, and test send.
  • Added EmailDeliveryLog records for outbound delivery attempts.
  • Added Email Delivery trigger rules for hospital average turnaround, unit dwell, feed degraded, and feed offline events.
  • Added trigger state so notifications send once on breach and reset after recovery.
  • Wired Email Intake forwarding rules through Email Delivery.
  • Added forwarding subject/body templates and placeholders.
Configuration and admin
  • Added System Settings at /admin/configuration.
  • Added operational time zone settings for dashboard, admin, and report display.
  • Expanded suggested US operational time zones.
  • Reworked Hospital Management so normal hospitals can be edited from active and inactive tabs.
  • Clarified hospital latitude and longitude labels, examples, ranges, and validation messages.
  • Improved dropdown readability across browsers.
  • Updated Data Source parser menu labels for clearer alerting configuration.
  • Reorganized admin landing groups into Operations, Feeds & Intake, Configuration, Administration, and Reporting.
  • Added Database Maintenance cleanup coverage for unit records, ingest metadata, and email intake messages.
  • Added cleaner system-worker shutdown handling for Docker restarts.
  • Added validation for worker poll interval input.
Production and deployment
  • Added production Dockerfiles for web, worker, and OSRM.
  • Added docker-compose.prod.yml for web, worker, Postgres, OSRM, and migrate/bootstrap services.
  • Improved production admin bootstrap behavior.
  • Changed production routing service exposure to avoid unnecessary host-level access.
  • Fixed worker image runtime tooling so tsx is available for worker and bootstrap commands.
  • Fixed Prisma web runtime engine mismatch by aligning the web runtime image family.
  • Fixed web container hostname binding for health checks and host access.
  • Added environment-aware secure session cookie configuration.
  • Added STACK_PREFIX and WEB_HOST_PORT for side-by-side Docker stacks.
  • Standardized production internal service discovery.
  • Added GitHub upload scope documentation and source ignore coverage for secrets, generated output, runtime data, OSRM data, dumps, samples, and local tool state.
  • Added public/.gitkeep so production Docker builds always have a public directory.
  • Removed optional Docker NTP/Chrony service and documented host-level time synchronization.
Validation and acceptance
  • Added automated RBAC role/path tests for Global Admin, legacy Admin, Hospital Admin, and Report User.
  • Added XML lifecycle parser tests for representative samples.
  • Verified lint, tests, and production image builds during the 0.1 workstream.
  • Added docs/PRODUCTION-V1-CHECKLIST.md for go-live checks, browser acceptance, hardening notes, and runbook commands.
  • Deployed the dev branch through Portainer for testing.
  • Confirmed deployment migration and bootstrap behavior in the testing stack.
  • Documented expected routing-service readiness behavior during first deployment.
  • Documented external access troubleshooting status without publishing network details.

0.0.x Initial Development Baseline

0.0.0 initial development baseline

Version 0.0.0

May 2, 2026

Baseline

Initial internal baseline for the EMS hospital turnaround dashboard before public version/build tracking was formalized.

Baseline
  • Established the initial dashboard application baseline.
  • Started the version sequence at 0.0.0 for pre-production development tracking.
  • Later public release notes continue from this baseline into the 0.1.x series.