Conversation-tree navigation: keybindings + TUI overview for forked/branched sessions (depends on #2058 / #1313)
- Ngôn ngữ chính
- Shell
- Star
- 11.2k
- Fork
- 1.9k
- Merge trung bình
- 14 giờ 16 phút
- Pull request đã merge (30 ngày)
- 6
Mô tả
### 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.
Hướng dẫn đóng góp
Hướng nghiên cứu
Bắt đầu bằng cách đọc các issue về fork/branch phụ thuộc #2058 và #1313, sau đó xem xét workaround cho trạng thái phiên trong ~/.copilot/session-state/ và workflow --resume. Được coi là hoàn tất khi người dùng có thể chuyển đến fork trước và fork sau, đồng thời mở được tổng quan dạng cây hội thoại có thể điều hướng, trong đó phiên hiện tại được làm nổi bật và có thể điều hướng đến một phiên khác.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- shell
- Lĩnh vực
- cli
- Loại issue
- Tính năng
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức độ hoạt động
- Ít trao đổi
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 35/100