From c074b78ee2ad4a892bc890ea7a69267488215b34 Mon Sep 17 00:00:00 2001 From: Alessandro Pogliaghi Date: Mon, 10 Aug 2026 11:15:58 +0100 Subject: [PATCH] fix(desktop): clear stale PR status on task switch Ignore retained placeholder data when a cloud task has no PR URL, preventing another task's PR state from appearing. Add regression coverage for the disabled-query case. Generated-By: PostHog Code Task-Id: 0d440385-19e4-469a-9bdd-0ab770dcf843 --- .../ui/src/features/sidebar/useTaskPrStatus.test.ts | 10 ++++++++++ .../ui/src/features/sidebar/useTaskPrStatus.ts | 4 +++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/products/desktop/packages/ui/src/features/sidebar/useTaskPrStatus.test.ts b/products/desktop/packages/ui/src/features/sidebar/useTaskPrStatus.test.ts index 0e16f9904a40..8d1f5480ddf4 100644 --- a/products/desktop/packages/ui/src/features/sidebar/useTaskPrStatus.test.ts +++ b/products/desktop/packages/ui/src/features/sidebar/useTaskPrStatus.test.ts @@ -108,4 +108,14 @@ describe("useTaskPrStatus", () => { ); expect(lastQueryOptions?.enabled).toBe(true); }); + + it("ignores placeholder data when the query is disabled", () => { + queryData = { prState: "open", hasDiff: true }; + const { result } = renderHook(() => + useTaskPrStatus( + makeTask({ taskRunEnvironment: "cloud", cloudPrUrl: null }), + ), + ); + expect(result.current).toEqual({ prState: null, hasDiff: false }); + }); }); diff --git a/products/desktop/packages/ui/src/features/sidebar/useTaskPrStatus.ts b/products/desktop/packages/ui/src/features/sidebar/useTaskPrStatus.ts index d0db43aa62fe..deb83767e62d 100644 --- a/products/desktop/packages/ui/src/features/sidebar/useTaskPrStatus.ts +++ b/products/desktop/packages/ui/src/features/sidebar/useTaskPrStatus.ts @@ -35,6 +35,8 @@ export function useTaskPrStatus(task: { ), ); - if (!data || (!data.prState && !data.hasDiff)) return EMPTY; + // A disabled query can retain placeholder data from the previously selected + // task. Ignore it so a cloud task without a PR never shows stale PR status. + if (skipQuery || !data || (!data.prState && !data.hasDiff)) return EMPTY; return data; }