fix: 質問待ちの詳細ビューで会話ログを遡れるようにする(Tab で切替) - #125
Merged
Merged
Conversation
セッション詳細では `pendingPermission` があいだキーを全部 PermissionDialog へ
委譲していたため、↑↓/PgUp/PgDn がすべて選択肢の移動に食われて**会話ログを 1 行も
遡れなかった**。質問の背景(何をしようとしているのか)が分からないまま回答する
しかない状態だったので、一覧の `ListFocus` と同じようにゾーンを分ける。
- `DetailFocus`(dialog / log)を追加し、`Tab` で往復する。既定は `dialog`
(回答は待たせている用事なので、そこへ辿り着くのに Tab を踏ませない)。
- `log` ゾーンでは ↑↓ / PgUp / PgDn がログのスクロールに戻り、ダイアログは
`active={false}` で表示のまま残す(回答の途中経過は内部 state なので
アンマウントしない)。`Esc` とダイアログのクリックでも回答へ戻れる。
- ホイールはゾーンに関係なく通す(押下と違って副作用が無く、背景を読む第一の手段)。
`log` ゾーンでは押下系も通すので範囲選択・URL クリックも普段どおり使える。
- pending が解けたらゾーンは `dialog` へ畳む(次の質問でキーの意味が変わらないように)。
- 「表示のみ」の案内は view から渡す(`inactiveHint`)。一覧の
「↑↓: セッション切替」は詳細では嘘になるため。
takecchi
commented
Aug 13, 2026
takecchi
left a comment
Owner
Author
There was a problem hiding this comment.
レビューしました。追加の指摘事項はありません。LGTM です。
DetailFocus によってダイアログとログのキー操作が明確に分離されており、ダイアログをアンマウントせず active だけを切り替えるため、回答途中の内部状態も保持されます。ホイール、クリック、Esc、Ctrl+C の各経路についても既存の PermissionDialog 側ハンドラーとの競合を確認しましたが、問題は見つかりませんでした。
確認結果:
- 追加された「許可待ちでも Tab でログを遡れ、Tab で回答へ戻れる」テスト成功
npm run typecheck成功npm run build成功- GitHub CI 成功
補足: ローカルで全テストを並列実行した際、今回の差分外にある既存の非同期テストがタイミング依存で失敗しました(hooks.spec.tsx 3件、app.test.tsx 5件)。hooks.spec.tsx は単独再実行で 7/7 成功し、対象の新規統合テストも成功しているため、本PRの不具合とは判断していません。
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.
背景
セッション詳細ビューは
pendingPermissionがあるあいだキーを全部PermissionDialogへ委譲していたため、↑↓/PgUp/PgDnがすべて選択肢の移動に食われ、会話ログを 1 行も遡れなかった。結果、「何の話か分からないまま質問に答える」しかない状態だった。一覧画面には同じ問題への答え(
ListFocus= composer / dialog / list をTabで回す)が既にあるので、詳細ビューにも同じ考え方(↑↓ が指す対象を一意にする)を持ち込む。変更
DetailFocus(dialog/log)を追加し、許可/質問待ちのあいだTabで往復する。dialog— 回答は待たせている用事なので、そこへ辿り着くためにTabを踏ませない(一覧のzoneForRowと同じ方針)。logゾーンでは↑↓/PgUp/PgDnがログのスクロールに戻る。ダイアログはactive={false}で表示のまま(質問文を読みながら遡れる)。Tab/Esc/ ダイアログのクリック(onActivate)の 3 つ。dialogへ畳む(次の質問でキーの意味が勝手に変わらないように)。logゾーンだけ通すので、範囲選択と URL クリックも普段どおり使える(dialogゾーンでは従来どおり飲む)。detail.helpLog/detail.dialogInactiveHelpを ja/en に追加し、detail.helpPendingにTabの案内を足した。PermissionDialogの「表示のみ」ヒントは view から渡す(inactiveHint)— 一覧の「↑↓: セッション切替」は詳細では嘘になるため、共有コンポーネントに view の知識を持たせない。.claude/rules/ink-components.md(ゾーンの不変条件・マウスの例外)/docs/ARCHITECTURE.md(SessionDetailの責務)/README.md(利用者向けのキー表)を実装より先に更新。テスト
tests/app.test.tsxに統合テストを追加(許可待ちでも Tab でログを遡れ、Tab で回答へ戻れる):dialogゾーンでは↑でログが動かない(ダイアログのもの)dialogゾーンでも効くTab→logゾーンでフッタ/ダイアログの案内が入れ替わり、質問文は表示されたままlogゾーンの↑でログを遡れ、「過去ログを表示中」が出るTabで戻ってそのままyで許可できる(往復でダイアログが壊れない)lint(Biome)/typecheck/test(tests/app.test.tsx99 件)/buildの 4 点体感確認(実 TTY + 認証が必要)はお願いします: 詳細ビューで質問が来ている状態で
Tab→↑↓でログが遡れること、Tab/ クリックで回答へ戻れることを確認してください。🤖 Generated with Claude Code