Skip to content

fix(desktop): AgentManager 右サイドバーにセッション全体の差分を表示#227

Merged
MocA-Love merged 2 commits intomainfrom
fix/agent-manager-changes-sidebar
Apr 16, 2026
Merged

fix(desktop): AgentManager 右サイドバーにセッション全体の差分を表示#227
MocA-Love merged 2 commits intomainfrom
fix/agent-manager-changes-sidebar

Conversation

@MocA-Love
Copy link
Copy Markdown
Owner

@MocA-Love MocA-Love commented Apr 16, 2026

Closes #226

Summary

  • AgentManager 右サイドバー「変更」パネルで、セッション中のコミット・ワーキングツリー差分が 0 件と表示されていた問題を修正。
  • git log startHeadSha..HEAD は HEAD が startHeadSha の子孫でないと(ブランチ切替・reset・rebase)無音で 0 件を返すため、「セッション全体」セクションを新設して git diff --name-status -z startHeadSha HEAD で二コミット間のファイル差分をそのまま表示する。
  • 開始HEAD が git オブジェクトから失われているケース(reset 等)を gitRevExists で検出し、UI にはアンバー色の注意バナーを出す。
  • supervisor: resume のたびに startHeadSha が上書きされ初回ランの履歴が埋もれていた問題を修正。既に記録済みならそのまま維持する。

再現手順(修正前)

  1. AgentManager で TODO タスクを作成して実行
  2. タスク内でブランチを切替 or reset するなど、HEAD が startHeadSha の子孫にならない挙動を含ませる
  3. 右サイドバーで「開始時 HEAD: A → B」と表示されるのに「コミット (0)」「ワーキングツリー (0)」で差分が一切見えない

修正後の挙動

  • 右サイドバーに「セッション全体」セクションが追加され、開始HEAD と現在 HEAD の間のファイル差分が一覧される。
  • ファイルをクリックすると scope=session で diff ビューアに展開される。
  • 開始HEAD が reset 等で失われた場合は専用の注意バナーを表示。
  • resume を繰り返しても最初に記録した開始HEAD が維持され、セッション全体のコミット履歴が見える。

変更ファイル

  • `apps/desktop/src/main/todo-agent/git-status.ts`
  • `apps/desktop/src/main/todo-agent/supervisor.ts`
  • `apps/desktop/src/renderer/features/todo-agent/TodoManager/ChangesSidebar/ChangesSidebar.tsx`

Test plan

  • `bun run lint` / `bun run typecheck` ともに green(CIで確認)
  • Electron を起動し、TODO セッションで実際に複数コミット→ブランチ切替→resume を行い、右サイドバーに
    - 「セッション全体」セクションが表示される
    - 「コミット」「ワーキングツリー」「セッション全体」それぞれのファイルクリックで差分が開く
    - 開始HEAD を git reset で失わせた場合に注意バナーが出る
    ことを確認

Summary by CodeRabbit

リリースノート

  • 新機能
    • セッション全体の変更ファイルをサイドバーで表示可能に。ファイルごとのdiff参照ができるようになりました。
    • セッション開始時点のコミットが到達不可能な場合に警告を表示。
    • 変更内容の閲覧範囲をセッションレベルで拡張し、より詳細なgit差分追跡が可能に。

Issue #226。

- `git log startHeadSha..HEAD` は HEAD が startHeadSha の子孫でない場合
  (ブランチ切替・reset・rebase)無音で0件を返し、`gitOut` が例外を
  握りつぶしていたため「新規コミット無し」と「開始点が失われた」を
  区別できなかった。`gitRevExists` で解決可能性を確認し、
  `startHeadUnreachable` としてUIへ通知する。
- `git diff --name-status -z startHeadSha HEAD` で2コミット間のファイル
  差分を `sessionFiles` として追加。divergent な履歴でも累積デルタを
  表示できるようにした。
- ChangesSidebar に「セッション全体」セクションと、開始HEAD喪失時の
  注意表示を追加。選択中スコープのラベル切替も session / commit を
  考慮する。
- supervisor: resume のたびに `startHeadSha` を上書きすると初回ランの
  コミットが埋もれてしまうため、既に記録済みの場合は維持する。
@chatgpt-codex-connector
Copy link
Copy Markdown

Codex usage limits have been reached for code reviews. Please check with the admins of this repo to increase the limits by adding credits.
Repo admins can enable using credits for code reviews in their settings.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 16, 2026

Warning

Rate limit exceeded

@MocA-Love has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 29 minutes and 24 seconds before requesting another review.

Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 29 minutes and 24 seconds.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 5e0a2bbd-824a-4ae5-8e0e-1640ee5e162c

📥 Commits

Reviewing files that changed from the base of the PR and between 85ad352 and 6e721e0.

📒 Files selected for processing (1)
  • apps/desktop/src/renderer/features/todo-agent/TodoManager/ChangesSidebar/ChangesSidebar.tsx
📝 Walkthrough

Walkthrough

セッション開始時のHEAD参照を再開時に保持するようにし、到達不可能なHEAD検出機能を追加。セッション中のファイル差分をgit diffから抽出して表示し、コミット数がゼロの場合でも変更内容を確認できるようにしました。

Changes

Cohort / File(s) Summary
Git Status データ拡張
apps/desktop/src/main/todo-agent/git-status.ts
gitRevExists()関数を追加して開始HEADの到達可能性を検出。SessionGitChangedFileインターフェースとSessionGitSnapshotsessionFilesstartHeadUnreachableフィールドを追加。parseNameStatusNul()git diff --name-status -zの出力をパース。
セッション開始状態の保持
apps/desktop/src/main/todo-agent/supervisor.ts
セッション再開時に既存のstartHeadShaを上書きせず、初回のみ記録するよう変更。
サイドバーUI更新
apps/desktop/src/renderer/features/todo-agent/TodoManager/ChangesSidebar/ChangesSidebar.tsx
セッション全体の差分ファイル一覧を表示する「セッション全体」セクションを追加。開始HEADが到達不可能な場合の警告表示を実装。スコープラベル表示の一貫性向上。

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Poem

🐰 セッションの扉を開いても、
遠い過去へ迷わぬよう、
HEADの足跡をそっと記す。
消えたコミットも、道は見える、
ウサギのようにしなやかに🥕

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 44.44% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed PR タイトルは「fix(desktop): AgentManager 右サイドバーにセッション全体の差分を表示」で、変更の主要な内容(右サイドバーに「セッション全体」の差分表示を追加)を明確に示しており、チームメンバーが履歴を見たときに主な変更を理解できます。
Description check ✅ Passed PR の説明は description_template の構造に従い、Summary、再現手順、修正後の挙動、変更ファイル、Test plan を含んでいます。リンク済みの issue (#226) も明記されており、変更内容が十分に記載されています。
Linked Issues check ✅ Passed 提案された修正内容(supervisor で startHeadSha を上書きしない、git-status に sessionFiles と startHeadUnreachable を追加、ChangesSidebar に「セッション全体」セクションを追加)がすべてコード変更に反映されており、issue #226 の要件を満たしています。
Out of Scope Changes check ✅ Passed すべての変更は #226 で説明されたバグ修正と「セッション全体」差分表示機能に関連しており、範囲外の変更は検出されません。

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/agent-manager-changes-sidebar

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@MocA-Love
Copy link
Copy Markdown
Owner Author

@codex review

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 85ad3524fd

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

`git diff <start>..HEAD -- <path>` は削除ファイルでも有効な patch を
返すため、「セッション全体」セクションでは `code === "D"` を無効化
せず、削除の差分も閲覧できるようにする。ワーキングツリー側の
`D` 無効化はファイルが worktree から既に失われているため維持する。
@MocA-Love MocA-Love self-assigned this Apr 16, 2026
@MocA-Love MocA-Love merged commit e8f5ac1 into main Apr 16, 2026
6 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.

[bug] AgentManager右サイドバーでコミット/ワーキングツリーが空表示になる

1 participant