TUIのオーバーホール実装

This commit is contained in:
2026-04-21 23:12:35 +09:00
parent 388079759c
commit 72128aab9f
11 changed files with 2151 additions and 414 deletions
+61 -3
View File
@@ -7,10 +7,20 @@
| キー | 動作 |
|---|---|
| 文字キー | カーソル位置に挿入 |
| `Backspace` | カーソル直前を削除 |
| `Delete` | カーソル直後を削除 |
| `Backspace` | カーソル直前を削除(ペーストプレースホルダは 1 回で全削除) |
| `Delete` | カーソル直後を削除(同上) |
| `Left` / `Right` | カーソル移動 |
| `Home` / `End` | 行頭 / 行末へ |
| `Up` / `Down` | 論理行単位の上下移動(桁位置を保持) |
| `Home` / `End` | 現在行の行頭 / 行末へ |
| `Alt-Enter` | 改行を挿入(Input を複数行化) |
### ペーストプレースホルダ
ブラケットペーストで入力されたテキストは入力バッファ上では不可分な
プレースホルダ `[Clipboard #N | X chars, Y lines]` として表示される。
実テキストは裏で保持され、送信時に `#N` ラベル無しで展開されて Pod に渡る。
カーソルはプレースホルダ内部には入れず、`Backspace` / `Delete` 1 回で
プレースホルダ全体が消える。`#N` の通し番号は TUI プロセス起動中で連番。
## 送信(Enter
@@ -31,6 +41,50 @@ Paused 中に Enter すると、入力の有無で 2 通り:
3. 入力を新しい user メッセージとして append
4. ターン開始
## 履歴ビューのナビゲーション
履歴ビューは全画面 TUI の上段にあり、TUI 内部で全ブロックを state として
保持してスクロール可能。スクロールバック(端末側の履歴)ではなく TUI の
自前バッファを動かす点に注意。
| キー | 動作 |
|---|---|
| `Shift-Up` / `Shift-Down` | 1 論理行スクロール |
| `PageUp` / `PageDown` | 1 ページスクロール(`area_height - 1` 行) |
| `Ctrl-[` / `Ctrl-]` | 前 / 次のターン先頭へジャンプ |
| `Ctrl-Home` | 履歴の先頭へ |
| `Ctrl-End` | 履歴の末尾へ(末尾追従モードを再開) |
### 末尾追従
デフォルトは「末尾追従」モード:新しいイベント到着で自動的に最新行が
画面下に固定される。ユーザーが上方向にスクロールした瞬間に追従は解除され、
その位置で固定される(新着イベントが来ても画面は動かない)。再び追従に
戻すには `Ctrl-End`。追従解除中はステータスバー右に `↑ scrolled` が点く。
### ターン単位ジャンプ
`Ctrl-[` / `Ctrl-]` は TurnHeader ブロックの位置にスクロールオフセットを
合わせる。多数のツール呼び出しが挟まった長いターンでも前後ターンの先頭に
1 発で戻れる。末尾ターンから `Ctrl-]` を押すと末尾追従に復帰する。
## 表示モード
履歴各ブロックの密度を 3 段階で切り替える。現在のモードはステータスバー
右端に `[mode]` として表示される。
| キー | 動作 |
|---|---|
| `Ctrl-O` | `detail``normal``overview``detail` の順に循環 |
- **detail**: 全ブロック完全表示。ツールブロックは結果本体も全量
- **normal**: 完了ブロックは概ね 5–6 行に圧縮、実行中のツールブロックは
detail と同じ扱い
- **overview**: 各ブロック 1 行に畳む(ツールブロックは
`ToolResult.summary` 1 行、長文 AssistantText は先頭 1 行 + 省略記)
モード切替は全体に一括適用。個別ブロックの開閉は持たない。
## Pod 制御
| キー | Running 中 | Idle / Paused |
@@ -61,3 +115,7 @@ Running 中に割り込みたい場合、ほとんどのケースで `Ctrl-C`(
- かつて存在した `Ctrl-R`Resume 専用)は、空 Enter での Resume に統合されたため廃止
- かつて存在した `Esc`TUI 終了)は、`Ctrl-C` の 2 連打 UX に統合されたため廃止
- 旧 inline viewport 時代は履歴スクロールを端末側スクロールバックに
任せていたため TUI 内のスクロールキーは存在しなかった。全画面 alt screen
への移行(`tickets/tui-fullscreen-overhaul.md`)で `Shift-Up/Down` ほか
のナビゲーションキーが追加された