diff --git a/desktop/src/features/channels/ui/BotActivityBar.tsx b/desktop/src/features/channels/ui/BotActivityBar.tsx index b71f2ec9eb..29455a3e09 100644 --- a/desktop/src/features/channels/ui/BotActivityBar.tsx +++ b/desktop/src/features/channels/ui/BotActivityBar.tsx @@ -213,8 +213,11 @@ function BotActivityAgentPill({ ); const activeId = headline?.id ?? GENERIC_LABEL_ID; // No fresh action headline (see deriveActivityPillLabel) — decay to the - // agent-named generic working label. - const activeLabel = headline?.label ?? `${agent.name} is working…`; + // agent-named generic label. Typing-fallback-only agents read + // "is typing…" (matching the human indicator's vocabulary); observer-backed + // agents read "is working…". + const activeLabel = + headline?.label ?? `${agent.name} is ${typingOnly ? "typing" : "working"}…`; // The rendered label lags the derived one while the pill is moving: the // push-up ticker plays after the slot settles (or immediately when idle). // Keyed by transcript item id, not label text — a NEW action swaps, while @@ -317,7 +320,7 @@ function BotActivityAgentPill({