Skip to content

feat(tui): 切替で上下=セッション・左右=タブ、Ctrl-O 単押しで切替へ#199

Merged
kkyosuke merged 1 commit into
mainfrom
feat/switch-tab-keys
Jun 19, 2026
Merged

feat(tui): 切替で上下=セッション・左右=タブ、Ctrl-O 単押しで切替へ#199
kkyosuke merged 1 commit into
mainfrom
feat/switch-tab-keys

Conversation

@kkyosuke

Copy link
Copy Markdown
Owner

目的

没入(Attached)のキー操作を再設計し、タブの操作系を「切替(Switch)」に集約する。あわせてタブストリップの見た目を分かりやすくリッチ化する。

変更内容

キー操作

  • 没入(Attached): リーダーキー方式(Ctrl-O +次の1キー)を廃止。Ctrl-O単押しで切替へズームアウトする。没入の中ではタブ操作キーを持たない。
  • 切替(Switch):
    • ↑↓k/j)= セッション移動
    • ←→h/l)= 選択中セッションのタブ切替(アクティブタブを実際に切り替え、右ペインのプレビューも追従。Enter/Ctrl-O で戻るとそのタブに入る)
    • t = 選択中セッションの在席アクション UI(設定 session_action_ui の Menu/Prompt)を開いて新規ペインを追加
    • Enter=確定 / c=作成 / r=改名 / Esc=戻る / Ctrl-O=統括
  • 在席(Focus): terminal/agent新規ペインを追加して没入へ(open_terminalnew_pane を追加し、切替 Enter の再アタッチと区別)。

タブ UI

  • タブストリップを 2 行のリッチ表示に変更(1 行目=番号付きチップ、2 行目=アクティブタブの cyan 下線。選択は反転+太字で濃く、他は薄く)。
  • 没入だけでなく切替のプレビューにも表示し、左右でどのタブに動くか見えるようにした。
  • TAB_BAR_ROWS を 1→2 に。

主な実装箇所

  • terminal_pane.rs: PaneStepDetach/Closed に簡素化、単押し Ctrl-O で detach。
  • event/handlers.rs: switch_key に左右タブ・t を追加、open_panenew_pane を追加。
  • event/mod.rs: tab_op コールバック(読み取り/ナビ兼用)+切替プレビューへのタブ公開。
  • ui/panes.rsui/mod.rsui/chrome.rs: tab_strip_lines(2 行)、ジオメトリ予約、フッター/ヒント文言。
  • ドキュメント: design/05-home.md / 03-commands/02-tui.md

テスト・確認方法

  • cargo fmt / cargo clippy --all-targets -- -D warnings / cargo test(1180 件)すべて green。
  • 変更ファイルは行・関数カバレッジ 100%(CI ゲート対象)。

🤖 Generated with Claude Code

没入(Attached)のキー操作を再設計し、タブUIをリッチ化する。

- 没入: リーダーキー方式を廃止し、`Ctrl-O` 単押しで切替へズームアウト。
  タブ切替・ペイン追加・閉じるは没入の中ではなく切替で行う。
- 切替: `↑↓`(jk)=セッション移動、`←→`(hl)=選択中セッションのタブ切替
  (アクティブタブを実切替し、プレビューも追従)。`t` で在席のアクション UI
  (設定 session_action_ui の Menu/Prompt)を開いて新規ペインを追加。
- タブストリップを 2 行のリッチ表示に(番号付きチップ+アクティブタブの
  下線、選択は濃く・他は薄く)。没入だけでなく切替プレビューにも表示。
- 在席の terminal/agent は新規ペインを追加して没入へ(open_terminal に
  new_pane を追加し、切替 Enter の再アタッチと区別)。

ドキュメント(design/05-home.md, 03-commands/02-tui.md)も更新。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

📊 Test Coverage

🚀 いまのカバレッジ (Lines): 100.00% — この調子でいこう!

🎉✨ パーフェクト!全ファイル Lines カバレッジ 100% を達成しました 🏆🐰

@kkyosuke kkyosuke merged commit 6102a2e into main Jun 19, 2026
4 checks passed
@kkyosuke kkyosuke deleted the feat/switch-tab-keys branch June 19, 2026 01:49
kkyosuke added a commit that referenced this pull request Jun 19, 2026
## 目的

`Cargo.toml` の `version` を `0.0.3` → `0.1.0` に上げ、`v0.1.0` のリリースを起動する。

`main` へマージされると `auto-release.yml` が version 変更を検知し、`v0.1.0` タグ・GitHub
Release・各プラットフォームのバイナリが自動生成される。

## 変更内容

- `Cargo.toml` の `version` を `0.1.0` に更新
- `Cargo.lock` の `usagi` を `0.1.0` に追従

## v0.0.3 からの主な変更

### 機能追加
- ローカル LLM 導入のバックグラウンド化・モデル選択モーダル化(#201, #202)
- 没入ペインの強化:
タブ切り替え(#191)、リンククリックでブラウザ起動(#187)、ドラッグ選択とコピー(#138)、出力中リンクの装飾(#194)
- 切替モードの操作改善: 上下=セッション・左右=タブ・Ctrl-O 単押し切替(#199)、セッション表示名の変更(#190)
- `:agent` で前回の Claude セッションを継続起動(#185)
- カーソル移動できる共通入力ウィジェット(#189)/ブロックカーソル化(#200)
- worktree 作成時に submodule を初期化(#184)
- セッション削除時に会話履歴と Agent phase も削除(#193)

### 修正
- issue 採番の衝突・キャッシュ依存を解消(#192, #195)
- セッション status 反映の堅牢化(Ready 固まり修正・許可待ち検知)(#186)
- モーダルが端末・枠からはみ出さないよう一元クランプ(#197)
- 切替プレビューで root の起動中 agent をライブ表示(#188)

### パフォーマンス
- ターミナルペイン描画を変化検知ベースにし無駄な再構築を削減(#182)

## テスト・確認方法

- バージョン変更のみのため新規コード変更なし
- `cargo fmt` / `cargo clippy --all-targets -- -D warnings` / `cargo
test` は CI / pre-push フックで検証

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant