TUI Epic 4: Topology screen - #160
Conversation
Pure buildProjectTopology derives a project -> worktree -> agents/ services tree with a TopologyHealth rollup (active/attention/idle/ offline) per node, matching the app's healthForStatus semantics, plus a flattened rows list (with jump ids) for the upcoming TUI Topology screen. No I/O; unit-tested. Epic 4 (Topology) phase 1 of 2. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
New "topology" screen (key t) backed by buildProjectTopology: a structural project ▸ worktree ▸ agents/services tree with health dots (active/attention/idle/offline) and per-worktree/project rollups, a detail pane, and Enter to jump to an agent/service. Wired like the other subscreens (union, statusline tab, nav cycle, dispatch, render switch, footer + help). 't' was freed by the Coordination merge (was threads). Epic 4 (Topology) phase 2 of 2. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
@coderabbitai review |
✅ Action performedReview finished.
|
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
📝 WalkthroughWalkthroughAdds a new "topology" dashboard screen. A pure ChangesTopology Dashboard Screen
Sequence Diagram(s)sequenceDiagram
participant User
participant stdin as stdin handler
participant topology as topology.ts
participant model as project-topology.ts
participant renderer as subscreen-renderers.ts
rect rgba(100, 149, 237, 0.5)
Note over User,renderer: Opening the topology screen
User->>stdin: press "t"
stdin->>topology: showTopology(host)
topology->>model: buildProjectTopology(input)
model-->>topology: ProjectTopology
topology->>renderer: renderTopologyScreen(ctx)
renderer-->>User: topology list + details sidebar
end
rect rgba(144, 238, 144, 0.5)
Note over User,renderer: Navigating and activating a row
User->>stdin: press "j" / "k"
stdin->>topology: handleTopologyKey(host, data)
topology->>topology: update topologyIndex
topology->>renderer: renderTopology → renderTopologyScreen
renderer-->>User: updated selection
User->>stdin: press "enter"
topology->>topology: findTopologySession / activateService
topology-->>User: session or service activated
end
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
The graveyard footer still advertised the pre-redesign screen cluster ([d/a/n/y/t/p/g] — 'n' is a dead key and t/p now map to different screens). Normalize every subscreen footer to the current full set [d/a/i/y/p/t/g], and simplify the no-op topology focusLine ternary. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
Sub-agent review pass. Two findings, both fixed:
Model (health rollup, pending/removing precedence, rows order, counts, empty), controller (index clamp, render purity, Enter-jump guards), and the rest of the wiring reviewed clean. |
Fourth epic of the TUI IA redesign. Adds the Topology screen — a structural map of the project (the dashboard is the actionable list lens; topology is the tree + health lens).
What changed
Phase 1 — Topology model. New pure
src/project-topology.ts:buildProjectTopology({projectName, worktrees})→{projectName, health, counts, worktrees[], rows[]}. ATopologyHealth(active/attention/idle/offline) is derived per node viahealthForStatus(mirroring the app'sopenrig-topologysemantics) and rolled up per worktree and project. Returns a flattenedrowslist (worktree ▸ agents/services, with jump ids). Unit-tested.Phase 2 — Topology screen (key
t). A health-dotted tree (project ▸ worktree ▸ agents/services) with a summary header, detail pane, andEnterto jump to an agent/service. Wired like the other subscreens (union, statusline tab, nav cycle, dispatch, render switch, footer + help).twas freed by the Coordination merge (was threads).Verification
yarn typecheck,yarn lint,yarn buildcleanyarn vitest run— 1396 tests pass (10 new model tests)Dashboard and Graveyard untouched.
🤖 Generated with Claude Code
Summary by CodeRabbit
Release Notes
New Features
t), showing an aggregated view of project worktrees, agents, and services with health indicators.j/kor arrows), direct selection (1–9), sidebar toggle (tab), refresh (r), help (?), exit (q), and activation (enter/return).UI/UX Updates
Tests