From a67b2d93cd86ada0f3433f6fa4105d06d67d9d0d Mon Sep 17 00:00:00 2001 From: Brooklyn Nicholson Date: Mon, 27 Jul 2026 19:07:24 -0500 Subject: [PATCH] fix(desktop): paint the live status line as scaffolding MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The drafting/stall status row kept its own type and colour — text-sm at muted-foreground/70, with the hint at /55 — so "Editing" while the model drafts a call rendered a full step larger than the "Explored 3 files" line it turns into a moment later, in a different grey. Route it through the scaffold label token so the whole left column reads as one kind of line. The timer keeps its midground tint: that belongs to the live-signal cluster with the dither block, not to the scaffolding. --- .../components/assistant-ui/thread/status.tsx | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/apps/desktop/src/components/assistant-ui/thread/status.tsx b/apps/desktop/src/components/assistant-ui/thread/status.tsx index e5c29e0bfe4..c0e7a3a3cc8 100644 --- a/apps/desktop/src/components/assistant-ui/thread/status.tsx +++ b/apps/desktop/src/components/assistant-ui/thread/status.tsx @@ -6,6 +6,7 @@ import { useSessionView } from '@/app/chat/session-view' import { toolPresentVerb } from '@/components/assistant-ui/tool/run-summary' import { useElapsedSeconds } from '@/components/chat/activity-timer' import { ActivityTimerText } from '@/components/chat/activity-timer-text' +import { SCAFFOLD_LABEL_CLASS } from '@/components/chat/scaffold-row' import { Codicon } from '@/components/ui/codicon' import { Loader } from '@/components/ui/loader' import { useI18n } from '@/i18n' @@ -16,6 +17,9 @@ import { sessionAwaitingInput } from '@/store/prompts' import { $turnStartedAt } from '@/store/session' import { type DraftingTool, sessionDraftingTool } from '@/store/tool-drafting' +// A status line is scaffolding like any other — "Editing" while the model +// drafts a call is the same kind of line as "Explored 3 files" once it has run, +// and reads as one continuous column only if it shares their type and colour. const StatusRow: FC<{ children: ReactNode; label: string } & React.ComponentPropsWithoutRef<'div'>> = ({ children, label, @@ -25,7 +29,11 @@ const StatusRow: FC<{ children: ReactNode; label: string } & React.ComponentProp
@@ -37,7 +45,7 @@ const StatusRow: FC<{ children: ReactNode; label: string } & React.ComponentProp const COMPACTION_LABEL = 'Summarizing thread' const HintText: FC<{ children: ReactNode }> = ({ children }) => ( - {children} + {children} ) /** These indicators render inside whichever transcript mounted them, so every @@ -120,11 +128,7 @@ export const ResponseLoadingIndicator: FC = () => { const hint = useStatusHint(compacting, drafting) return ( - +