fix: プラグイン追加確認のプロンプトが表示されず入力待ちで停止する問題を修正(v0.76.2) - #162
Merged
Conversation
対話更新で新規カタログのプラグインを 1 件ずつ確認する
_offer_new_plugins_interactive に 2 つの表示不具合があった。
1. 質問が表示されない
read -r -p "..." reply < /dev/tty 2>/dev/null の形で質問していた。
read -p はプロンプトを stderr に書くため、端末を開けなかった場合に
備えた 2>/dev/null が質問文そのものを破棄していた。
利用者にはプラグイン一覧だけが表示されて入力待ちになるため、停止した
ように見える。先へ進めるために押した Enter は空回答として
DISMISSED_PLUGINS に記録される。既定は No で一度断った項目は再提示
しない設計のため、質問を一度も見ないまま該当プラグインが恒久的に
拒否されていた。
キットの他の対話プロンプト(lib/deploy.sh:1376-1378、lib/merge.sh)と
同じ形に揃え、printf ... >&2 で質問を出力してから -p なしの read を
実行する。
2. プラグイン名に \033[1m がそのまま表示される
printf " %s%s%s%s\n" "${BOLD:-}" ... と、BOLD / NC を %s の引数として
渡していた。両者はエスケープシーケンスをバックスラッシュ表記の文字列
として保持しており、printf が解釈するのは書式文字列に含まれる場合だけ
なので、制御文字列が画面にそのまま出る。lib/colors.sh の他の出力と
同じく書式文字列側に置く。色出力が有効な端末でのみ発生する。
回帰テストを tests/unit/test-plugin-adoption.sh に 2 件追加した。修正前の
コードでは 2 件とも失敗することを確認済み。
検証:
- shellcheck -S warning: lib/plugin-adoption.sh / tests/unit/test-plugin-adoption.sh ともにクリーン
- tests/unit/test-plugin-adoption.sh: 44/44 通過(修正前は 42/44)
- tests/run-unit-tests.sh: 既存の fonts 失敗 1 件のみ。本変更に起因する失敗なし
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
This was referenced Aug 31, 2026
…rompt-visibility # Conflicts: # CHANGELOG.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
概要
対話更新でカタログに追加されたプラグインを 1 件ずつ確認する
_offer_new_plugins_interactive(lib/plugin-adoption.sh)に、表示に関する不具合が 2 件あった。片方は、質問を一度も見ないままプラグインが恒久的に拒否される結果を招く。実環境(macOS、Full プロファイル、v0.76.0)で発生を確認している。
1. 質問が表示されないまま入力待ちになる
現象
setup.sh --updateの実行中、プラグイン一覧だけが表示されて停止する。質問文は出ない。原因
read -pはプロンプトを stderr に書く。端末を開けなかった場合に備えて付けた2>/dev/nullが、質問文そのものを破棄していた。pty を割り当てて検証した結果(jq 環境非依存、GNU bash 5.3.9):
read -r -p "PROMPT" x < /dev/ttyPROMPTread -r -p "PROMPT" x < /dev/tty 2>/dev/null影響
質問が見えないため停止したように見える。先へ進めるために押した Enter は空回答となり、
caseの*)分岐でDISMISSED_PLUGINSに記録される。既定は No で、一度断った項目は再提示されない設計のため、質問を一度も見ないまま該当プラグインが恒久的に拒否される。実際に、報告環境の
~/.claude-starter-kit.confには 3 件がDISMISSED_PLUGINSとKNOWN_PLUGINSの両方に記録されていた。修正
キットの他の対話プロンプト(
lib/deploy.sh:1376-1378、lib/deploy.sh:2073-2075、lib/merge.sh)と同じ形に揃えた。質問をprintf ... >&2で明示的に出力し、-pなしのreadを実行する。2>/dev/nullはread側にのみ残るため、端末を開けなかった場合に返り値 2 で通知経路へ落とす既存の挙動は変わらない。2. プラグイン名に
\033[1mがそのまま表示されるprintf " %s%s%s%s\n" "${BOLD:-}" "$entry" "${NC:-}" ...と、BOLD/NCを%sの引数として渡していた。両者はエスケープシーケンスをバックスラッシュ表記の文字列として保持しており、printf が解釈するのは書式文字列に含まれる場合だけなので、制御文字列が画面にそのまま出る。lib/colors.shの他の出力(info/ok/section)と同じく書式文字列側に置くよう変更した。lib/colors.shは stdout が端末のときだけ色を設定するため、リダイレクト時は空文字列となり本件の影響はない。テスト
tests/unit/test-plugin-adoption.shに回帰テストを 2 件追加した。plugin-adoption: the offer prompt reaches the user— stderr のみを捕捉し、[y/N]を含む質問が出ることを確認plugin-adoption: the plugin line renders escapes instead of printing them—BOLDを明示設定したうえで、出力にリテラル\033[が含まれないことを確認修正前のコードでは 2 件とも失敗する(
Total: 44 Pass: 42 Fail: 2)。修正後は 44/44 通過。実行した検証
shellcheck -S warning lib/plugin-adoption.sh tests/unit/test-plugin-adoption.sh— いずれもクリーンtests/unit/test-plugin-adoption.sh— 44/44 通過tests/run-unit-tests.sh— 失敗はfonts: direct download fallback receives font definition1 件のみ。この失敗は本 PR の変更前(554e455)にも再現する既存のものであり、本変更に起因する失敗はないアップグレード経路
ENABLE_*フラグ、profile 既定値、生成ファイル、settings キー、manifest のいずれも追加・変更していない。変更は既存関数の出力方法に限られ、保存済み設定の解釈も分岐条件も変えていないため、既存インストールがsetup.sh --update//update-kitで取りこぼす新規キーはない。ただし、本不具合の影響を受けた環境には拒否記録が残る。復旧手順を CHANGELOG に記載した。
~/.claude-starter-kit.confのDISMISSED_PLUGINSとKNOWN_PLUGINSの両方から該当エントリを削除する必要がある(_compute_new_pluginsは SELECTED / DISMISSED / KNOWN のいずれかに含まれる項目を除外するため、DISMISSED_PLUGINSだけでは再提示されない)。ドキュメント
CHANGELOG.md— 更新済み(## [0.76.2]、復旧手順を含む)README.md/README.en.md— 変更不要。セットアップフロー、既定値、CLI フラグ、前提条件のいずれも変わらないdocs/— 変更不要。設定マッピング、機能の挙動、アップグレード挙動のいずれも変わらない補足
バージョンは 0.76.2 とした。0.76.1 は先行して修正予定の Issue #161(auto-update の稼働確認が誤って「無効」と判定される)に割り当てている。#161 より先にマージする場合は 0.76.1 へ付け替える。
🤖 Generated with Claude Code