From 01d0a0c78b68e4b3ab21fd923e292dce5127cdb9 Mon Sep 17 00:00:00 2001 From: Richard Solomou Date: Mon, 25 May 2026 07:56:53 +0300 Subject: [PATCH] fix(sidebar): stop pulsing cloud icon for the whole in_progress window MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `in_progress` covers the entire time a cloud run is alive on the backend, including when the agent is idle waiting for the next user message. The `ph-pulse` animation on that state made every active cloud task look like it was constantly doing something, and the local "agent is generating right now" signal (`isPromptPending` → `DotsCircleSpinner`) was already handling the real "active" affordance. Two changes: - Pulse only on `queued` (genuinely transient, usually a few seconds). `in_progress` renders as a steady filled accent cloud/Slack icon. - Drop the cloud short-circuit in `TaskIcon` so cloud tasks share the same precedence as local: needsPermission → terminalCloud → isGenerating → isSuspended → isUnread → PR/diff → isPinned → `CloudStatusIcon` (non-terminal) → originProductMeta → `ChatCircle`. Cloud tasks with an open PR now show the PR icon, with a diff show the branch icon, suspended show the pause icon, etc. — same as local tasks. Generated-By: PostHog Code Task-Id: b95e757c-ba51-444c-978c-27c02e740d85 --- .../sidebar/components/items/TaskIcon.tsx | 40 +++++++++++++------ 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/apps/code/src/renderer/features/sidebar/components/items/TaskIcon.tsx b/apps/code/src/renderer/features/sidebar/components/items/TaskIcon.tsx index de44afcd4..562e24059 100644 --- a/apps/code/src/renderer/features/sidebar/components/items/TaskIcon.tsx +++ b/apps/code/src/renderer/features/sidebar/components/items/TaskIcon.tsx @@ -104,11 +104,11 @@ function CloudStatusIcon({ const link = meta && threadUrl ? threadUrl : undefined; const ariaLabel = link ? `Open ${sourceLabel} thread` : undefined; - if (taskRunStatus === "queued" || taskRunStatus === "in_progress") { + if (taskRunStatus === "queued") { return ( @@ -120,6 +120,22 @@ function CloudStatusIcon({ ); } + if (taskRunStatus === "in_progress") { + return ( + + {renderIconSpan({ + icon: , + link, + ariaLabel, + })} + + ); + } if (taskRunStatus === "completed") { return ( ; } - if (isCloudTask) { - return ( - - ); - } if (isSuspended) { return ( @@ -320,6 +326,16 @@ export function TaskIcon({ if (isPinned) { return ; } + if (isCloudTask) { + return ( + + ); + } if (originProductMeta) { const { Icon, label } = originProductMeta; const link = slackThreadUrl;