Skip to content

feat(server): add Fleet dashboard surface with mock data (#547) - #644

Open
EnmaJim wants to merge 1 commit into
andresharpe:releases/4.1.0from
EnmaJim:feature/547-fleet-dashboard-mock
Open

feat(server): add Fleet dashboard surface with mock data (#547)#644
EnmaJim wants to merge 1 commit into
andresharpe:releases/4.1.0from
EnmaJim:feature/547-fleet-dashboard-mock

Conversation

@EnmaJim

@EnmaJim EnmaJim commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

Linked issue

Closes #547

Summary of changes

First pass of the Fleet dashboard in the Mothership (src/server-dotnet), built against
mock JSON fixtures so the UI is reviewable now. Component structure and API call
signatures are finalized here so the live wire-up (#598) is a straight mock→real swap.

Per the #551 coordination, this issue's tab-restructure step is dropped (the v4 shell/rail
shipped in #624); #547 adds the Fleet surface as content that slots into the existing rail.

  • Fleet is the landing page (/) — the Q&A dashboard is re-homed to /decisions (the
    Decisions rail slot); a Fleet rail item is added and the active item is driven by
    ViewData["ActiveRail"].
  • Instance health cards — status LED, uptime, active workflow, task count; drone
    utilization
    (load/max, success rate, avg duration) for drone nodes.
  • Stale-detection UI — stale instances get a distinct badge/colour.
  • Alert banner + notification rail — active alerts with severity + timestamp; a separate
    alert history panel for cleared alerts with resolved timestamps.
  • Swappable data seamIFleetService with a MockFleetService reading
    Mock/fleet-instances.json / fleet-alerts.json; endpoints GET /api/fleet/instances and
    GET /api/fleet/alerts?status=. Fleet dashboard live wire-up — instance data, alerts and auth #598 swaps only the service impl (config-selected, mirroring
    the existing attachment-storage backend swap).
  • AuthDashboardAuthMiddleware extended to gate /decisions and /api/fleet/* exactly
    like the existing dashboard routes.

Screenshots / recordings

Fleet dashboard — the new landing page (/), mock data: alert banner, fleet stats, instance
health cards (outposts + drones), drone utilization, stale badges, alert rail, and alert history.

01-fleet-landing

Q&A dashboard re-homed to /decisions (Decisions rail item now active; Fleet took the root):

09-decisions-view

Testing notes

  • Build + unit/integration (the server.yml gate):
    dotnet build src/server-dotnet/dotbot.sln --configuration Release
    dotnet test  src/server-dotnet/dotbot.sln --configuration Release
    
    Result: 364 passed / 2 pre-existing skips / 0 warnings. New tests:
    • Unit/MockFleetServiceTests.cs — fixture parsing, drone-vs-outpost utilization, active/cleared
      alert filtering, fail-fast on a missing fixture.
    • Integration/FleetApiTests.csGET /api/fleet/* end-to-end through the auth pipeline +
      real fixtures.
    • Integration/FleetPageTests.cs/ renders Fleet, /decisions renders the Q&A dashboard,
      rail active-state correct.

Checklist

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Inbox

Development

Successfully merging this pull request may close these issues.

1 participant