File tree Expand file tree Collapse file tree
apps/webapp/app/components Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -205,7 +205,10 @@ function renderDashboardPart(
205205 // One spinner at a time: an in_progress investigation card in this turn
206206 // already shows its own progress pill.
207207 if ( options ?. suppressPendingPill ) return null ;
208- return < ChatPendingTool key = { i } label = { `${ toolPendingLabel ( type . slice ( 5 ) ) } …` } /> ;
208+ // Stable key across tool changes: only the LABEL changes from call to
209+ // call, so the spinner keeps spinning instead of remounting (and
210+ // restarting its animation) on every new tool.
211+ return < ChatPendingTool key = "agent-pending" label = { `${ toolPendingLabel ( type . slice ( 5 ) ) } …` } /> ;
209212 }
210213 if ( p . state === "output-error" ) return renderPart ( part , i ) ;
211214 return null ;
Original file line number Diff line number Diff line change @@ -85,5 +85,16 @@ export function SpinnerWhite({ className }: { className?: string }) {
8585 * loading. `size` is the logo's pixel size (the matrix does not scale from CSS).
8686 */
8787export function AgentSpinner ( { size = 16 } : { size ?: number } ) {
88- return < AgentDotMatrix size = { size } active palette = "mono" restColor = "#ffffff" decorative /> ;
88+ return (
89+ < AgentDotMatrix
90+ size = { size }
91+ active
92+ // A spinner is born spinning: resting on the playlist's first shape means
93+ // the initial frame is already mid-cycle — no logo-head flash on mount.
94+ restShape = "square"
95+ palette = "mono"
96+ restColor = "#ffffff"
97+ decorative
98+ />
99+ ) ;
89100}
You can’t perform that action at this time.
0 commit comments