Skip to content

fix(tui): 没入→在席ズームアウト直後の Esc で元のタブへ再アタッチ#433

Merged
kkyosuke merged 1 commit into
mainfrom
usagi/mode
Jun 27, 2026
Merged

fix(tui): 没入→在席ズームアウト直後の Esc で元のタブへ再アタッチ#433
kkyosuke merged 1 commit into
mainfrom
usagi/mode

Conversation

@kkyosuke

Copy link
Copy Markdown
Owner

目的

没入(Attached)中のエージェントから在席(Focus)へズームアウトし、直後に Esc を押すと在席に留まってしまうバグを修正する。

再現手順:

  1. エージェントにアタッチ(没入)
  2. Ctrl-O aCtrl-T 相当 / ToFocus)で在席へズームアウト
  3. Esc

期待: 操作元のタブへ戻る(再アタッチ)。
実際: 在席のまま、ライブなペインのプレビュー上で停止していた(focus_discard_new_tab が「+ new」を破棄してペインタブのプレビューへ移るだけ)。

変更内容

  • HomeState に 1 回限りの再アタッチ用フラグ focus_return_attach を追加。
  • 没入→在席のズームアウト(PaneExit::ToFocus)でこのフラグを立てる(arm_focus_return_attach)。
  • 在席の Esc ハンドラで、フラグが立っていればそのペインへ再アタッチ(没入へ復帰=直前のタブへ戻る)focus_discard_new_tab より先に判定するため、ライブなタブストリップが再公開されていても再アタッチが優先される。
  • フラグは 1 回限り: 在席で Esc 以外のキーを処理した時点(clear_focus_return_attach)と、在席に通常入る経路(enter_focus_surface)で解除する。これにより t で在席を開いた場合など、ズームアウト由来でない経路の Esc は従来どおり一段戻る。
  • document/design/05-home.md のモード遷移・在席の Esc 説明を更新。

テスト・確認方法

  • cargo fmt / cargo clippy --all-targets -- -D warnings / cargo test(全 2222 件パス)。
  • 追加/更新したテスト:
    • attached::ctrl_t_then_esc_re_attaches_to_the_zoomed_out_pane — ライブなタブストリップを再公開する本番同等の条件で、ズームアウト直後の Esc がペインへ再アタッチすることを検証(順序保証込み)。
    • attached::ctrl_t_in_the_pane_zooms_out_to_focus — ToFocus 自体は再アタッチしないこと+他キーで再アタッチarming が解除されることを検証。
    • focus_menu::focus_esc_on_the_new_tab_over_panes_steps_back_onto_the_pane — arming を解除した「+ new」over panes の Esc(従来のプレビューへ戻る経路)を引き続き検証。
    • テスト用ランナー run_full_tabs(カスタム tab_op)を追加。

🤖 Generated with Claude Code

没入中のエージェントから Ctrl-O a(Ctrl-T)で在席へズームアウトし
直後に Esc を押すと、在席に留まって(ライブなペインのプレビュー上で
停止して)しまい、操作元のタブへ戻れなかった。

在席が「ライブなペインからのズームアウト」で開かれたときに 1 回限りの
再アタッチ用フラグ(focus_return_attach)を立て、直後の Esc はその
ペインへ再アタッチ(没入へ復帰=直前のタブへ戻る)するようにした。
間に他のキーを押すとフラグは解除され、Esc は従来どおり一段戻る。

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 053f079 into main Jun 27, 2026
4 checks passed
@kkyosuke kkyosuke deleted the usagi/mode branch June 27, 2026 14:31
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