yoi/.yoi/tickets/00001KSKBPPMR/item.md

75 lines
3.2 KiB
Markdown

---
title: "TUI: navigation mode / block focus の設計"
state: "planning"
created_at: "2026-05-27T00:00:15Z"
updated_at: "2026-05-27T00:00:15Z"
---
## Migration reference
- legacy_ticket: tickets/tui-navigation-mode-design.md
- migrated_from: TODO.md / tickets directory migration on 2026-05-27
# TUI: navigation mode / block focus の設計
## 背景
TUI の操作は現在 composer を中心にしており、履歴 block / task 表示 / queued input / system 操作の間を移動する統一的な navigation model はまだない。今後 command mode、manual compact、rollback、Pod picker、queue 編集などが増えると、Ctrl/Alt shortcut だけでは操作体系が散らばる。
一方で、通常入力は最優先で守る必要がある。特に streaming 中の入力取りこぼしや rollback restore、Run 中 input queue を入れたことで、composer の文字入力を暗黙操作で壊さないことが重要になっている。
本チケットは navigation mode のアイデアを保持する設計 ticket であり、すぐ実装する前提ではない。
## アイデア
- 通常は composer mode。
- 文字入力、Enter submit/queue、`@` / `#` / `/` 補完を優先する。
- `Esc` など明示操作で navigation mode に入る。
- 履歴 block / task pane / queued input / picker 的 UI に focus を移す。
- focus があることを視覚的に分かるようにする。
- navigation mode では `j/k` または `↑/↓` で block focus / scroll を行う。
- `i` / `Enter` / `Esc` で composer に戻る案。
- composer のカーソルが最上行にある時の `↑` で履歴へ抜ける自然操作も候補。
- ただし multi-line input / IME / completion / typed segment と衝突しやすいため、初期実装では慎重に扱う。
- 暗黙 focus 移動より、明示 navigation mode を優先する案が安全。
- command mode (`:`) とは分ける。
- command mode は system command 入力。
- navigation mode は画面上の対象選択 / scroll / block action。
## 検討事項
- mode 名と status/actionbar 表示。
- composer mode から navigation mode へ入る key。
- navigation mode から composer mode へ戻る key。
- `↑/↓` を composer cursor movement と block focus movement のどちらに使うか。
- block focus の単位。
- Turn header
- User message
- Assistant block
- Tool call/result
- System message
- Task row
- Queued input row
- focused block に対する action。
- copy
- expand/collapse
- retry/fork/rollback など将来操作
- scrollback と block focus の関係。
- search (`/` ではなく別 key が必要。`/` は WorkflowRef と衝突する可能性)。
- mouse support を入れるか。
## 完了条件(未確定)
- navigation mode の keymap と UI 表示方針が決まる。
- composer 入力を壊さない focus 移動ルールが決まる。
- block focus の最小単位が決まる。
- command mode / queue / rollback / Pod picker と衝突しない。
- 実装 ticket に分割できる。
## 範囲外
- 今すぐの実装。
- command mode の実装(`tickets/tui-command-mode.md`)。
- compact command の実装。
- Vim 完全互換。