github / github/copilot-cli

Conversation-tree navigation: keybindings + TUI overview for forked/branched sessions (depends on #2058 / #1313)

Aperta
#3,091 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
area:input-keyboard area:sessions
Lingua principale
Shell
Stelle
11.2k
Fork
1.9k
Merge medio
14h 16m
PR unite (30g)
6

Descrizione

### Describe the feature or problem you'd like to solve

Once Copilot CLI gains the ability to fork or branch sessions (#2058, #1313), users will accumulate a **tree** of related sessions sharing common ancestry. Today there is no way to:

- see that tree
- jump back to a parent or sibling fork
- navigate among forks without copy-pasting session GUIDs from `~/.copilot/session-state/`

I'm filing this as a separate issue because it is downstream of #2058 / #1313 — it has no value until at least one of those lands — but it would be a shame for the navigation gap to surface only after fork/branch ships and people start asking "now what?". This issue is the placeholder so the design can be considered alongside the fork/branch work.

### Proposed solution

Three primitives, each useful independently:

**1. `Ctrl + [` — jump to previous fork (in-order tree traversal)**
**2. `Ctrl + ]` — jump to next fork (in-order tree traversal)**

In-order traversal means: walking the conversation tree as a depth-first sequence, the bindings move you one step left/right through that sequence. From any node, `Ctrl + [` takes you to the most recently visited sibling/ancestor; `Ctrl + ]` advances to the next.

**3. `Ctrl + |` (or any equivalent chord) — show the conversation tree as a navigable TUI**

A full-screen tree view where each node is a session, edges show fork-points, the current node is highlighted, and arrow keys + Enter let you navigate to any session. Bonus: show summary, last activity, and turn count next to each node.

The exact key bindings are a bikeshed detail — what matters is that all three primitives exist (left, right, overview).

### Example prompts or workflows

1. **Fork-and-return.** I'm 30 turns into a refactor; I `/fork` to debug an unrelated NuGet issue. After fixing it, `Ctrl + [` takes me back to the parent without me digging through `--resume ` history.

2. **Compare two approaches.** I `/branch` twice to spike Approach A and Approach B from the same starting point. `Ctrl + [` and `Ctrl + ]` flip me between them so I can A/B compare without losing context.

3. **Recover from disorientation.** I've been forking liberally for an hour and have lost track of where the "main thread" of work actually lives. `Ctrl + |` shows me the whole tree, I navigate to the trunk, and pick up where I left off.

### Additional context

- Depends on #2058 (`/fork`) and/or #1313 (`/branch`). Without one of those landing, this issue is moot.
- Prior art: Vim's jump list (`Ctrl + o` / `Ctrl + i`) is the closest existing keybinding model for "back/forward through positions".
- The TUI overview is the navigation analogue to `git log --graph` for conversation context.
- Today the workaround is `ls ~/.copilot/session-state/` + manually inspecting checkpoint files. Functional, but fundamentally not navigation.

Guida per i contributori

Apri la guida per i contributori

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.