Skip to content

feat(web): merge Fleet into a server-filterable Dashboard (UI nav Phase 1)#61

Open
offendingcommit wants to merge 1 commit into
mainfrom
feat/dashboard-fleet-merge
Open

feat(web): merge Fleet into a server-filterable Dashboard (UI nav Phase 1)#61
offendingcommit wants to merge 1 commit into
mainfrom
feat/dashboard-fleet-merge

Conversation

@offendingcommit
Copy link
Copy Markdown
Owner

Summary

Implements Phase 1 of the UI navigation rework spec
(docs/superpowers/specs/2026-06-02-ui-navigation-rework.md, PR #55): merge the
single-instance Dashboard and the multi-instance Fleet view into one
server-aware Dashboard
.

  • The Dashboard now lists every workspace across every configured server,
    labelled <workspace> (<server>), with a server filter (default "All servers").
  • Cross-server aggregate cards (workspaces, conclusions, healthy/unreachable)
    reuse computeFleetAggregates — the former Fleet metrics.
  • Opening a workspace activates its server (if not active) then drills into the
    existing /workspaces/$workspaceId detail route — no new routes needed.
  • Per-server data fan-out lives in a new ServerWorkspaceRows child component
    (one per server → rules-of-hooks safe; mirrors the proven FleetRow pattern).
  • Fleet removed from the sidebar nav.

Files

  • packages/web/src/components/dashboard/Dashboard.tsx — rewritten as the unified parent.
  • packages/web/src/components/dashboard/ServerWorkspaceRows.tsx — new per-server child.
  • packages/web/src/components/layout/Sidebar.tsx — drop Fleet from TOP_NAV.
  • packages/web/src/test/dashboard.test.tsx — new (renders the route, asserts the
    <server> labels + the server filter narrowing).

Validation

  • make ci-web green (lint + typecheck + tests + build).
  • dashboard.test.tsx renders the real Dashboard through the router (mocked transport)
    and asserts: both servers' workspaces appear labelled (Neo)/(Iris); the filter
    lists each server; selecting one narrows to it.
  • Not yet done: manual browser check against ≥2 live servers — recommend eyeballing
    via make dev-web (or make up). The drill-down activate-then-navigate path is logic-
    tested but not exercised in a real browser here.

Deferred (intentional)

Independent of #54#57 (touches none of their files).

Implements Phase 1 of the UI navigation rework (docs/superpowers/specs/
2026-06-02-ui-navigation-rework.md): the Dashboard now lists every workspace
across every configured server as <workspace> (<server>), filterable by server,
with cross-server aggregate cards (reusing computeFleetAggregates). Opening a
workspace activates its server then drills into the existing detail route.
Per-server fan-out lives in a ServerWorkspaceRows child (rules-of-hooks safe,
mirrors FleetRow). Fleet removed from the sidebar nav; the /fleet route is left
intact for now (full removal deferred to avoid churning fleet.test.tsx while #54
is open).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant