TUI Control Room (Layer 2) — filter, live feed, 3-panel layout#10
Merged
lewisnsmith merged 6 commits intomainfrom Apr 20, 2026
Merged
TUI Control Room (Layer 2) — filter, live feed, 3-panel layout#10lewisnsmith merged 6 commits intomainfrom
lewisnsmith merged 6 commits intomainfrom
Conversation
Owner
Author
|
@copilot resolve the merge conflicts in this pull request |
De-export sessionNodeKey, turnNodeKey, resolveSessionIdForItem, and loadSessionEntries. All four are only used inside their own files; exporting them misleads readers about the module's public surface. Lands ahead of the control-room refactor per repo cleanup-first rule. https://claude.ai/code/session_01EXcoDfR7Hvoobx8aNBdE67
Formalizes Layer 2 of the TUI roadmap: filter bar, live-feed annotations, and the 3-panel layout. Documents the sequential PR constraint, per-PR acceptance criteria and test matrix, and resolutions to the [P2] tail-scope and [S2] export-flow questions. https://claude.ai/code/session_01EXcoDfR7Hvoobx8aNBdE67
Parallel subagents create transient git worktrees under .claude/worktrees/ that should never land in a commit. https://claude.ai/code/session_01EXcoDfR7Hvoobx8aNBdE67
Filter bar (PR1): - `/` opens inline filter bar at bottom of tree pane - AND-filter semantics across tool_name, agent_id, execution_outcome - Filter state held on TuiApp; refresh() re-applies on each tick - Empty-result placeholder when filter produces zero rows - `setActiveFilter()` on TuiApp for programmatic filter (tests) - `parseFilterInput()` exported for direct unit testing Annotation keybinds + live feed (PR2): - `g`/`b` write verdict:good/verdict:bad via runAnnotate; badge on refresh - `a` key still opens full annotation modal (unchanged) - 1s setInterval poll in createTuiApp starts after initial load - pausePolling()/resumePolling() bracket all modal operations (regression-safe) - clearInterval in destroy() prevents leaked timers on exit - Annotation write failure is non-fatal: surfaces as status line Also: exclude .claude/worktrees/** from vitest to prevent stale test files from worktree experiments from polluting the test suite. https://claude.ai/code/session_01EXcoDfR7Hvoobx8aNBdE67
Introduces src/tui/layout.ts with a persistent Tree (30%) | Detail (45%) | Tail (25%) layout. The tail pane is always visible. Summary, view, and query are now modal overlays (s/v/Q) dismissed with Esc rather than mode switches. Tab cycles focus tree→detail→tail→tree. Removes the 2-pane layout and the t-toggle; adds test/tui-layout.test.ts covering layout snapshot, Tab cycling, and overlay open/close. https://claude.ai/code/session_01EXcoDfR7Hvoobx8aNBdE67
Contributor
Resolved and pushed in commit I merged
No new UI behavior changed in this merge-conflict-only commit, so there is no additional UI screenshot beyond the existing PR UI changes. |
2da4ebb to
3870c3c
Compare
import.meta.dirname was added in Node 21.2.0 and is not available on Node 20.x. Replace with the standard dirname(fileURLToPath(import.meta.url)) pattern so CI passes on both 20.x and 22.x matrix entries. https://claude.ai/code/session_01EXcoDfR7Hvoobx8aNBdE67
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Dispatching the TUI Control Room work (Layer 2) across sonnet-4.6 subagents.
This PR will accumulate three logical commits as the agents return:
/filter bar, AND-semantics acrosstool_name/agent_id/execution_outcome, tree drill-in/escape, empty-result placeholder) — in flight, parallel worktreeg/b/nkeybinds, 1s poll loop, tail pane, pause/resume around modals) — in flight, parallel worktreesrc/tui/layout.ts, persistent Tree/Detail/Tail, overlay modals, Tab focus cycling) — pending sequential dispatch after PR1+PR2 mergeAlready landed on this branch:
chore: drop unused tui exports before control-room refactor— de-exports 4 TUI symbols per repo cleanup-first rule.docs: add tui control room spec (2026-04-16)— formalizes the Layer 2 spec, per-PR acceptance criteria, and [P2]/[S2] resolutions.chore: ignore .claude/worktrees runtime directory— keeps parallel-agent worktrees out of commits.Dispatch shape
Each subagent is gated on
npm run checkgreen before returning.Test plan
flight log export <session> | grep verdictsurfaces the new rownpm run checkgreen on final commithttps://claude.ai/code/session_01EXcoDfR7Hvoobx8aNBdE67