|
| 1 | +# UI Navigation Rework — Future Improvements (Draft) |
| 2 | + |
| 3 | +- **Date captured:** 2026-06-02 |
| 4 | +- **Status:** DRAFT — vision captured from discussion, **not yet brainstormed or scheduled**. |
| 5 | + Needs a full `brainstorming` → `writing-plans` pass before any implementation. |
| 6 | +- **Author intent:** reduce overlap between three navigation surfaces and make |
| 7 | + drill-down navigation clearer. |
| 8 | + |
| 9 | +## Motivation |
| 10 | + |
| 11 | +Today three surfaces overlap: |
| 12 | + |
| 13 | +- **Instance selector** — pick the active Honcho connection. |
| 14 | +- **Dashboard** (`packages/web/src/components/dashboard/Dashboard.tsx`) — workspace |
| 15 | + count + queue status for the active instance. |
| 16 | +- **Fleet** (`packages/web/src/components/fleet/`) — cross-instance observability: |
| 17 | + workspaces / sessions / queue side-by-side per instance. |
| 18 | + |
| 19 | +Dashboard and Fleet are **nearly identical** in what they show (workspace/queue |
| 20 | +metrics), differing mainly in single-instance vs all-instances scope. That overlap |
| 21 | +is the thing to collapse. |
| 22 | + |
| 23 | +## Proposed information architecture |
| 24 | + |
| 25 | +A single hierarchical drill-down, navigable as an **outline / tree**: |
| 26 | + |
| 27 | +``` |
| 28 | +Server (instance) |
| 29 | + └─ Workspace |
| 30 | + ├─ Peers |
| 31 | + ├─ Sessions |
| 32 | + ├─ Conclusions |
| 33 | + └─ … (queue, dreams, webhooks, etc.) |
| 34 | +``` |
| 35 | + |
| 36 | +- Navigation drills **Server → Workspace → {Peers | Sessions | Conclusions | …}**. |
| 37 | +- An **outline view** makes the hierarchy explicit and improves wayfinding (vs. the |
| 38 | + current flat per-feature pages). |
| 39 | + |
| 40 | +## Fleet folds into Dashboard |
| 41 | + |
| 42 | +- The Dashboard becomes the **unified, all-servers view**: every workspace across |
| 43 | + every server, each labelled **`<workspace> (<server>)`**. |
| 44 | +- **Filterable by server** — selecting a server narrows the Dashboard to that |
| 45 | + server's workspaces. Fleet stops being a separate page and becomes an **overlay / |
| 46 | + filter state** on the Dashboard. |
| 47 | + |
| 48 | +## Open question: does standalone Fleet survive? |
| 49 | + |
| 50 | +Fleet "still has merit" — but possibly **repositioned as a settings/management-style |
| 51 | +view** (fleet health, per-instance admin) rather than a primary nav destination. |
| 52 | +To decide in brainstorming: what is Fleet's unique job once cross-instance browsing |
| 53 | +lives in the Dashboard? (Likely: fleet *health/ops*, not fleet *browsing*.) |
| 54 | + |
| 55 | +## Open questions (resolve during brainstorming) |
| 56 | + |
| 57 | +- How does the **instance selector** relate to the new top-level "Server" node — is |
| 58 | + it absorbed into the tree, or kept as a global switcher? |
| 59 | +- **Routing**: how does `Server → Workspace → …` map onto TanStack Router flat-route |
| 60 | + files, and how are deep links / breadcrumbs handled? |
| 61 | +- What exactly lives in a **settings-like Fleet** (health, queue depth, version, auth |
| 62 | + status)? |
| 63 | +- Responsive/mobile behaviour of the outline/tree. |
| 64 | +- Migration: does the current `/fleet` route redirect, or stay as the ops view? |
| 65 | + |
| 66 | +## Non-goals (for this capture) |
| 67 | + |
| 68 | +- This is a **vision record**, not an implementation plan. No code, no schedule. |
| 69 | +- Does not change the data layer — `compareQueries.ts` / `fleetAggregates.ts` |
| 70 | + already fan out across instances and can back a unified Dashboard unchanged. |
| 71 | + |
| 72 | +## Next step |
| 73 | + |
| 74 | +When prioritised: run `superpowers:brainstorming` against this doc to resolve the |
| 75 | +open questions, then `writing-plans` for the implementation. Keep it a separate |
| 76 | +concern (its own branch/PR) from the proxy work in #54. |
0 commit comments