fix(dashboard): bounded alarm drains, feed resubscribe, live pill, drop dead hub factory; doc corrections

This commit is contained in:
Joseph Doherty
2026-08-16 04:12:25 -04:00
parent e1ff05c605
commit 3faa272db9
11 changed files with 240 additions and 127 deletions
+11 -7
View File
@@ -117,13 +117,17 @@ project without binding to a metrics exporter.
effective configuration into immutable DTOs for read-only dashboard rendering.
The Blazor Server dashboard mounts at the host root and renders those snapshots
at `/`, `/sessions`, `/workers`, `/events`, `/galaxy`, `/alarms`, `/apikeys`,
and `/settings`. Pages connect to `/hubs/snapshot` (a SignalR hub published by
`DashboardSnapshotPublisher`) and refresh on every push instead of polling.
`/hubs/alarms` broadcasts `AlarmFeedMessage` values from the central alarm
monitor; `/hubs/events` mirrors per-session `MxEvent` traffic from
`EventStreamService` to clients subscribed to `session:{id}`. The dashboard
uses local Bootstrap CSS and JavaScript plus a small local stylesheet; it does
not use a Blazor UI component library.
and `/settings`. Pages run inside this process, so they consume the producing
services directly through in-process seams — `IDashboardSnapshotFeed`,
`IDashboardSessionEventSubscriber`, and `IGatewayAlarmService` — and re-render on
every update instead of polling. The three SignalR hubs are the **remote**
surface, for clients outside the gateway process: `/hubs/snapshot` pushes
`DashboardSnapshot` from `DashboardSnapshotPublisher`, `/hubs/alarms` broadcasts
`AlarmFeedMessage` values from the central alarm monitor, and `/hubs/events`
mirrors per-session `MxEvent` traffic to clients subscribed to `session:{id}`.
No in-repo page opens a hub connection. The dashboard uses local Bootstrap CSS
and JavaScript plus a small local stylesheet; it does not use a Blazor UI
component library.
`/browse` walks the `IGalaxyHierarchyCache` tree and reads subscribed tag
values live through `IDashboardLiveDataService`, which owns one shared,