Skip to content

feat(list): list TUI サブメニューの Esc をトップメニュー復帰に変更 (i32)#45

Merged
takemi-ohama merged 1 commit into
mainfrom
feat/list-tui-submenu-esc-back-i32
Jun 9, 2026
Merged

feat(list): list TUI サブメニューの Esc をトップメニュー復帰に変更 (i32)#45
takemi-ohama merged 1 commit into
mainfrom
feat/list-tui-submenu-esc-back-i32

Conversation

@takemi-ohama

Copy link
Copy Markdown
Contributor

概要

devbase list の対話メニューで、running 行を選んだ後に表示される操作サブメニュー
(up / rebuild / down) で Esc を押した場合の挙動を「全体中止」から「トップメニュー
(プロジェクト選択) へ戻る」に変更
する。

別のプロジェクトを選び直したいだけなのに Esc で一覧操作ごと終了してしまう、という
手戻りを解消する。Ctrl-C は従来どおり全体中止のまま残す。

関連 Issue

  • Closes #

変更点

  • _MENU_BACK センチネルを追加し、サブメニューの Esc を None (Ctrl-C による全体中止) と区別して「戻る」シグナルとして返す
  • Esc バインドの共通処理を _add_escape_binding() に切り出し、用途別に 2 種類を用意:
    • _with_escape_cancel() — Esc で KeyboardInterrupt (→ ask()None = 中止)。トップメニュー用
    • _with_escape_back() — Esc で _MENU_BACK を返す。サブメニュー用 (Ctrl-C は questionary 既定どおり中止のまま)
  • _tui_select_and_up()while ループ化し、サブメニューが _MENU_BACK を返したら continue でトップメニューを再表示
  • サブメニュー案内文を Esc・Ctrl-C 中止Esc 戻る / Ctrl-C 中止 に更新
  • eager=False 登録 (矢印キーのエスケープシーケンスと非衝突) は据え置き

メニュー別の Esc / Ctrl-C 挙動

メニュー Esc Ctrl-C Enter
トップ (プロジェクト選択) 全体中止 全体中止 選択
サブ (up/rebuild/down) トップへ戻る 全体中止 操作実行

動作確認

  • uv run pytest 全 464 passed / 1 skipped (既存スキップ)
  • _with_escape_back が Esc で _MENU_BACK を返すことの単体テスト
  • サブメニューで Esc → トップメニュー再表示 → 別行選択で起動、という戻りフローの統合テスト
  • 実機で「サブメニュー Esc → トップ復帰」「サブメニュー Ctrl-C → 全体中止」「矢印キー移動が阻害されない」ことを手動確認

補足

  • 単独 Esc 押下時は prompt_toolkit のフラッシュ待ち (既定 ~0.5秒) の遅延が入るが、これはターミナル UI で Esc 単独を扱う際の標準的な挙動。

running 行選択後の操作サブメニュー (up/rebuild/down) で Esc を押すと、
全体中止ではなくプロジェクト選択のトップメニューへ戻るようにする。

- _MENU_BACK センチネルを追加し、サブメニューの Esc を None (Ctrl-C 全体中止)
  と区別して「戻る」シグナルとして返す
- Esc バインドの共通処理を _add_escape_binding() に切り出し、用途別に
  _with_escape_cancel() (KeyboardInterrupt=中止 / トップメニュー用) と
  _with_escape_back() (_MENU_BACK=戻る / サブメニュー用) を用意
- _tui_select_and_up() を while ループ化し、_MENU_BACK で continue して
  トップメニューを再表示。Ctrl-C は従来どおり全体中止
- サブメニュー案内文を「Esc 戻る / Ctrl-C 中止」に更新

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

@takemi-ohama takemi-ohama left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 cross-review | round 1 | gemini | APPROVE

ロジック・テストともに問題ありません。実装は意図通りであり、エッジケースも適切に考慮されています。

@takemi-ohama takemi-ohama left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 cross-review | round 1 | codex | APPROVE

修正必須の指摘はありません。

@takemi-ohama takemi-ohama merged commit 7ccb4d5 into main Jun 9, 2026
5 checks passed
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