docs: split tui command and navigation tickets

This commit is contained in:
Keisuke Hirata 2026-05-24 07:59:51 +09:00
parent e0d7468ebb
commit 0fd995c85e
4 changed files with 143 additions and 12 deletions

View File

@ -12,7 +12,9 @@
- ネイティブ GUI クライアント MVP → [tickets/native-gui-mvp.md](tickets/native-gui-mvp.md)
- E2E テストハーネス(`tests/e2e/`、opt-in → [tickets/e2e-harness.md](tickets/e2e-harness.md)
- TUI 拡充
- TUI から任意タイミングで Compact を発火する system command → [tickets/tui-system-command-compact.md](tickets/tui-system-command-compact.md)
- TUI command mode / registry / completion → [tickets/tui-command-mode.md](tickets/tui-command-mode.md)
- command modeから任意タイミングで Compact を発火 → [tickets/tui-system-command-compact.md](tickets/tui-system-command-compact.md)
- navigation mode / block focus の設計 → [tickets/tui-navigation-mode-design.md](tickets/tui-navigation-mode-design.md)
- user manifest env override 時の spawn scope overlay 前提ズレ → [tickets/tui-user-manifest-env-overlay.md](tickets/tui-user-manifest-env-overlay.md)
- ユーザーマニフェストのモデル設定 wizard → [tickets/tui-user-model-setup.md](tickets/tui-user-model-setup.md)
- メモリ機構

View File

@ -0,0 +1,63 @@
# TUI: command mode / command registry / completion
## 背景
TUI には通常の user message 入力に加えて、Compact、rollback、queue 操作、Pod attach/restore など、LLM に送らない制御操作が増えつつある。既存の入力欄には `@` FileRef、`#` KnowledgeRef、`/` WorkflowRef があり、system command を `/compact` 等に寄せると既存の参照・補完体系と衝突する。
また、制御操作を Ctrl/Alt shortcut だけで増やしていくと発見性が低く、keybinding が破綻しやすい。通常入力を守りつつ、system 操作の正規導線として `:` command mode を用意する。
本チケットは command mode の土台のみを実装する。Compact 実行など具体的な system command は後続 ticket で扱う。
## 方針
- `:` で command mode に入る。
- command mode 中は input area を command input として扱い、通常 user message と明確に分離する。
- `Esc` で command mode を抜け、通常 composer に戻る。
- `Enter` で command registry に dispatch する。
- 未知 command / 引数不正は Pod に送らず TUI 側で診断する。
- command mode の command は LLM への user message として history に混入しない。
- 既存の `@` / `#` / `/` 補完や typed segment は通常 composer 側の機能として維持する。
## 要件
- TUI に mode state を追加する。
- 少なくとも `Composer``Command` を区別する。
- status / actionbar 等で現在 command mode であることが分かる。
- `:` key で command mode に入る。
- 通常 composer に `:` を入力したい場合の escape / literal 入力方針は実装時に決める。
- 最小実装では、空 composer または通常 mode で `:` を押した時に command mode へ入る等、誤爆しにくい条件にしてよい。
- command mode の入力編集を実装する。
- text insert / backspace / cursor movement / clear / Esc / Enter。
- 通常 composer の buffer を破壊しない。
- command registry を追加する。
- command name、aliases、usage、description、argument parser、実行可否判定、executor を登録できる構造にする。
- 最初は built-in の no-op / help / unknown 診断だけでもよい。
- 後続 `tui-system-command-compact``compact` command を追加できる形にする。
- completion / suggestion を実装する。
- prefix に応じた command 候補を actionbar / popup / input 下部などに表示する。
- Tab で候補補完するか、候補表示だけにするかは実装時に決める。既存 completion との衝突を避ける。
- tests を追加する。
- `:` で command mode に入り、Esc で戻る。
- command 入力が通常 composer を壊さない。
- unknown command が user message として送信されない。
- registry から候補が出る。
- command mode 中の Enter が `Method::Run` を送らない。
## 完了条件
- TUI に command mode があり、通常 composer と視覚的・状態的に区別できる。
- command registry があり、後続 ticket で `compact` などを追加できる。
- command completion / suggestion が最低限機能する。
- command mode の入力は LLM user message として送信されない。
- 既存の composer 入力、`@` / `#` / `/` 補完、Run 中 queue、rollback restore を壊さない。
- `cargo fmt --check`
- `cargo check --workspace`
- `cargo test -p tui`
## 範囲外
- `compact` command の実行。
- manual rollback command の実行。
- Pod attach/restore command の実行。
- navigation mode / block focus。
- Vim 互換の本格 command line。

View File

@ -0,0 +1,62 @@
# 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 完全互換。

View File

@ -1,4 +1,4 @@
# TUI から任意タイミングで Compact を実行する system command
# TUI command mode から任意タイミングで Compact を実行する
## 背景
@ -14,21 +14,24 @@ Compact は現在、manifest の compaction 設定と token 閾値に基づい
## ゴール
TUI から、会話本文を送らずに任意タイミングで Compact を発火できるようにする。あわせて、Compact だけの特例ではなく、将来の TUI / Pod 制御操作にも使える system command の入口を用意する。
TUI から、会話本文を送らずに任意タイミングで Compact を発火できるようにする。system command の入口は `tickets/tui-command-mode.md` で実装済みの `:` command mode を使い、本チケットでは `compact` command と Pod 側実行経路に集中する。
## 前提
`tickets/tui-command-mode.md` で TUI の `:` command mode / command registry / completion が実装済みであること。本チケットはその registry に `compact` command を追加し、Pod 側の manual compact 実行経路へ接続する。
## 要件
### System command の入力体系
### Compact command
TUI に、通常の user message / `@` / `#` / `/` とは衝突しない system command の入力体系を追加する。
Command registry に `compact` command を追加する。
- `/``#` は使わない
- `@` FileRef とも衝突しない
- 入力された system command は LLM への user message として送られない
- command の発火は UI 上で見分けられる
- 未知 command や引数不正は、Pod に送らず TUI 側でユーザーに診断を出す
記法にするか、専用モードにするか、keybinding から command palette 的に起動するかは本チケット内で確定してよい。ただし既存の submit / completion / paste / chip 化の入力体験を壊さないこと。
- `:` command mode から `compact` を実行できる。
- `/``#` は使わない。
- `@` FileRef とも衝突しない。
- 入力された system command は LLM への user message として送られない。
- command の発火は UI 上で見分けられる。
- 未知 command や引数不正は、Pod に送らず TUI 側でユーザーに診断を出す。
### Manual Compact
@ -60,6 +63,7 @@ System command から Compact を明示実行できるようにする。
## 範囲外
- command mode / registry / completion の実装(`tickets/tui-command-mode.md`
- Compact の要約品質や prompt の変更
- compaction 閾値・retained token など manifest 設定の再設計
- slash command と WorkflowRef の意味論変更