fix: 詳細ビューのマウススクロールで文字入力される不具合を修正 + レイアウト改修 - #21
Merged
Conversation
セッション詳細の useInput がマウスの SGR レポートを解釈しておらず、 マウスホイールでスクロールしようとするとレポート列(`[<64;..M` 等)が 生テキストとしてコンポーザへ入力されていた。一覧と同じく useInput 先頭で `parseSgrMouse` により先取り解釈し、ホイールはログスクロール(新設の `WHEEL_SCROLL_ROWS`)に割り当てて漏れを防ぐ。 あわせて詳細ビューのレイアウトを「コンテンツ(スクロール可能なログ)+ フッタ(コンポーザ、固定)」に変更し、ステータスヘッダ(タイトル/バッジ/ 進捗/コスト/エラー)を撤去してログ用の縦幅を最大化。ヘッダ撤去に伴い `DETAIL_CHROME_ROWS` を 10→7 に調整。 - src/ui/session-detail.tsx: マウス先取り解釈 + ホイールスクロール、ヘッダ撤去 - src/core/scroll.ts: WHEEL_SCROLL_ROWS を追加 - src/core/layout.ts: DETAIL_CHROME_ROWS を調整 - tests/app.test.tsx: ホイールが文字入力に漏れない回帰テストを追加、ヘッダ撤去に追従 - docs/ARCHITECTURE.md, .claude/rules/ink-components.md: 実装に追従
5 tasks
takecchi
added a commit
that referenced
this pull request
Jul 19, 2026
## 概要 Completed になっていて GitHub 上に PR が出ているのに、codiva の一覧で `#n` バッジが表示されないバグを修正する。 ## 原因 セッションは `codiva/<slug>` という worktree ブランチ上で作成される。一方、実際に PR 化される作業は git ワークフロー規約に従い **別ブランチ(`feat/…` / `fix/…` 等)を切ってから** push / PR することが多い。この場合 worktree の HEAD は `codiva/<slug>` から外れているため、PR 検出に使っている ``` gh pr view <state.branch> # = codiva/<slug> ``` ではヒットせず、`lookupPr` が `undefined` を返し続け、`#n` バッジが**一度も**表示されなかった。 実際にマージ済みの履歴でも、ブランチ名が `codiva/…` の PR (#17–#20) はバッジが出るが、`feat/…`・`fix/…` の PR (#21–#23) では出ない、という差が出ていた。 ## 修正 `lookupPr` を次のように変更: 1. まず worktree の**現在の HEAD ブランチ**を `git rev-parse --abbrev-ref HEAD` で解決し、そのブランチで `gh pr view` する(作業とPRが実際に載っているブランチ)。 2. そこで見つからなければ、従来どおり記録済みの `codiva/<slug>` ブランチにフォールバック。 3. detached HEAD(`HEAD` / 空)や `git`/`gh` の失敗時は best-effort で `undefined`(従来挙動を維持、セッションを妨げない)。 `git` も `gh` も既存の `ExecLike` (execFile ラッパ) 経由で、引数は argv 渡し(シェル連結なし)。`refreshPrs` 側のシグネチャは不変。 ## テスト計画 - [x] `src/utils/pr.spec.ts` を拡充(7 ケース) - HEAD ブランチで解決する / 記録ブランチにフォールバックする - HEAD == 記録ブランチのときは `gh` 呼び出しが1回だけ - git 失敗 / detached HEAD で記録ブランチを使う - どのブランチにも PR がない → `undefined` - 不正・部分 JSON → `undefined` - [x] `npm test`(470 passed) - [x] `npm run typecheck` - [x] `npm run lint`(本変更ファイルは警告なし) - [ ] 手動確認: worktree 内で `git checkout -b feat/x` → PR 作成後、一覧に `#n` が出ること
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.
概要
セッション詳細ビューの2点を改修しました。
1. マウススクロールで文字が入力される不具合を修正(バグ修正)
詳細ビューの
useInputがマウスの SGR レポートを解釈していなかったため、マウスホイールでスクロールしようとするとレポート列([<64;..Mなど)が生テキストとしてコンポーザへ入力されていました。session-list.tsx)と同様に、useInputの先頭でparseSgrMouseによりマウスレポートを先取り解釈するようにしました。WHEEL_SCROLL_ROWS= 1ティックあたり ~3行)に割り当てました。press/release はログビューでは無視します。2. 詳細ビューのレイアウト改修(コンテンツ + フッタのみ)
要件どおり、詳細ビューを「コンテンツ(スクロール可能なメッセージ/ツール履歴)+ フッタ(コメントエリア、固定)」の構成に変更しました。
DETAIL_CHROME_ROWSを 10 → 7 に調整(可視ログ高さ=スクロール移動量が正しくなる)。変更ファイル
src/ui/session-detail.tsx: マウス先取り解釈 + ホイールスクロール、ステータスヘッダ撤去src/core/scroll.ts:WHEEL_SCROLL_ROWSを追加src/core/layout.ts:DETAIL_CHROME_ROWSを 10→7tests/app.test.tsx: ホイールが文字入力に漏れない回帰テストを追加 / ヘッダ撤去に追従docs/ARCHITECTURE.md,.claude/rules/ink-components.md: 実装に追従テスト計画
npm run typecheck緑npm run lint緑(既存の warning のみ)npm test全 467 テスト緑(新規のホイール回帰テスト含む)