TUIのオーバーホール実装
This commit is contained in:
+61
-3
@@ -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` ほか
|
||||
のナビゲーションキーが追加された
|
||||
|
||||
Reference in New Issue
Block a user