From de52c0f50747e7acac29b6e48c90dd9fdd3d7466 Mon Sep 17 00:00:00 2001 From: Adam Bowker Date: Mon, 18 May 2026 12:27:18 -0700 Subject: [PATCH] fix(code-review): refresh staged/unstaged diffs on index changes External git operations (terminal `git add`, commits) write `.git/index` but the file watcher's `onGitStateChanged` handler only invalidated branch-related queries, leaving the cached `getDiffCached` and `getDiffUnstaged` results stale. The renderer kept showing the previous staged version even after the index changed. Also drop the `hasStagedFiles` gate on `getDiffCached` so the staged section appears/disappears in lockstep with the query result rather than racing against a separately-derived flag from `changedFiles`. Generated-By: PostHog Code Task-Id: 4d1b802b-2174-457f-84f1-6d969eab2e34 --- .../features/code-review/hooks/useReviewDiffs.ts | 9 ++++----- apps/code/src/renderer/hooks/useFileWatcher.ts | 1 + 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/code/src/renderer/features/code-review/hooks/useReviewDiffs.ts b/apps/code/src/renderer/features/code-review/hooks/useReviewDiffs.ts index d21a64ac7..52bd4df43 100644 --- a/apps/code/src/renderer/features/code-review/hooks/useReviewDiffs.ts +++ b/apps/code/src/renderer/features/code-review/hooks/useReviewDiffs.ts @@ -31,7 +31,7 @@ export function useReviewDiffs( trpc.git.getDiffCached.queryOptions( { directoryPath: repoPath as string, ignoreWhitespace: hideWhitespace }, { - enabled: isActive && !!repoPath && hasStagedFiles, + enabled: isActive && !!repoPath, staleTime: 30_000, gcTime: 0, refetchOnMount: "always", @@ -55,8 +55,7 @@ export function useReviewDiffs( ), ); - const diffLoading = - diffUnstagedLoading || (hasStagedFiles && diffCachedLoading); + const diffLoading = diffUnstagedLoading || diffCachedLoading; const stagedParsedFiles = useMemo( () => @@ -106,8 +105,8 @@ export function useReviewDiffs( const refetch = useCallback(() => { if (repoPath) invalidateGitWorkingTreeQueries(repoPath); refetchDiffUnstaged(); - if (hasStagedFiles) refetchDiffCached(); - }, [repoPath, hasStagedFiles, refetchDiffCached, refetchDiffUnstaged]); + refetchDiffCached(); + }, [repoPath, refetchDiffCached, refetchDiffUnstaged]); return { changedFiles, diff --git a/apps/code/src/renderer/hooks/useFileWatcher.ts b/apps/code/src/renderer/hooks/useFileWatcher.ts index 9ed8837f2..44604f15e 100644 --- a/apps/code/src/renderer/hooks/useFileWatcher.ts +++ b/apps/code/src/renderer/hooks/useFileWatcher.ts @@ -71,6 +71,7 @@ export function useFileWatcher(repoPath: string | null, taskId?: string) { onData: ({ repoPath: rp }) => { if (rp !== repoPath) return; invalidateGitBranchQueries(repoPath); + invalidateGitWorkingTreeQueries(repoPath); }, }), );