Phase 2.1 of #327. The title numbering is the work order: take milestone issues in Phase N.M order. The one hard dependency is #331 on #330, recorded as blockedBy; the rest is sequence, not blocking. Read gh issue view 327 --comments for the plan of record.
Current state
Launching more than one or two investigations crowds the TUI out of the viewport, and no investigation is addressable afterwards. ui/tui/src/investigations/launch.rs:110 runs tmux split-window -h -t $TMUX_PANE, so every investigation subdivides the TUI's own pane and none of them carries a name. The same file already uses tmux new-window -n <name> for open_in_lazygit (line 150) and open_in_octo (line 186), with the name built from repo and PR number, so the pattern exists but the investigation path does not use it.
#54 previously fixed which pane the split targets. Moving to a named window supersedes that mechanism rather than regressing it.
Ideal state
- Pressing
i opens the investigation in its own tmux window rather than a split of the TUI's pane
- The window name is derived deterministically from the signal, so the same item always produces the same name
- The TUI keeps its full window when an investigation launches
- Several investigations run at once, each in its own named window, reachable from tmux's window list
- Launching outside tmux still fails with the existing clear message
Out of scope
- Refusing to open a second window for an item that already has one — that is the next issue in this phase, and it depends on the names this one introduces
- Prompt content, model selection, and allowed tools, which are unchanged
- Worktree resolution, which is unchanged
Starting points
ui/tui/src/investigations/launch.rs — launch() at line 64, and the new-window naming already used by open_in_lazygit at line 150
ui/tui/src/investigations/mod.rs — the module doc describes the split-window behavior and needs to change with it
QA plan
- Start the TUI in tmux, select a PR, press
i — expect a new tmux window rather than a split, with the TUI still occupying its full window
- Run
tmux list-windows — expect a window whose name identifies that PR by repo and number
- Return to the TUI, select a different PR, press
i — expect a second, separately named window, with the TUI still full-size
- Switch into one of the investigation windows — expect a running Claude Code session with the same prompt it received before this change
- Run the TUI outside tmux and press
i — expect the existing "not in tmux" error rather than a panic
Done when
Pressing i opens a deterministically named tmux window instead of splitting the TUI's pane.
Phase 2.1 of #327. The title numbering is the work order: take milestone issues in
Phase N.Morder. The one hard dependency is #331 on #330, recorded asblockedBy; the rest is sequence, not blocking. Readgh issue view 327 --commentsfor the plan of record.Current state
Launching more than one or two investigations crowds the TUI out of the viewport, and no investigation is addressable afterwards.
ui/tui/src/investigations/launch.rs:110runstmux split-window -h -t $TMUX_PANE, so every investigation subdivides the TUI's own pane and none of them carries a name. The same file already usestmux new-window -n <name>foropen_in_lazygit(line 150) andopen_in_octo(line 186), with the name built from repo and PR number, so the pattern exists but the investigation path does not use it.#54 previously fixed which pane the split targets. Moving to a named window supersedes that mechanism rather than regressing it.
Ideal state
iopens the investigation in its own tmux window rather than a split of the TUI's paneOut of scope
Starting points
ui/tui/src/investigations/launch.rs—launch()at line 64, and thenew-windownaming already used byopen_in_lazygitat line 150ui/tui/src/investigations/mod.rs— the module doc describes thesplit-windowbehavior and needs to change with itQA plan
i— expect a new tmux window rather than a split, with the TUI still occupying its full windowtmux list-windows— expect a window whose name identifies that PR by repo and numberi— expect a second, separately named window, with the TUI still full-sizei— expect the existing "not in tmux" error rather than a panicDone when
Pressing
iopens a deterministically named tmux window instead of splitting the TUI's pane.