diff --git a/desktop/src/features/channels/ui/BotActivityBar.tsx b/desktop/src/features/channels/ui/BotActivityBar.tsx index a4b4054d4..238624cf7 100644 --- a/desktop/src/features/channels/ui/BotActivityBar.tsx +++ b/desktop/src/features/channels/ui/BotActivityBar.tsx @@ -209,8 +209,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 @@ -313,7 +316,7 @@ function BotActivityAgentPill({