@@ -230,6 +231,7 @@ export function ChatPage() {
activity={activity}
teamTasks={teamTasks}
isRunning={isRunning}
+ isBusy={isBusy}
loading={messagesLoading}
scrollTrigger={scrollTrigger}
/>
@@ -238,7 +240,7 @@ export function ChatPage() {
(
@@ -83,7 +84,7 @@ export const ChatThread = memo(function ChatThread({
const displayItems = useMemo(() => buildDisplayItems(messages), [messages]);
- if (messages.length === 0 && !isRunning) {
+ if (messages.length === 0 && !isBusy) {
if (loading) {
return (
diff --git a/ui/web/src/pages/chat/hooks/use-chat-messages.ts b/ui/web/src/pages/chat/hooks/use-chat-messages.ts
index 5ec37dc8..3f3b7b63 100644
--- a/ui/web/src/pages/chat/hooks/use-chat-messages.ts
+++ b/ui/web/src/pages/chat/hooks/use-chat-messages.ts
@@ -411,12 +411,17 @@ export function useChatMessages(sessionKey: string, agentId: string) {
setMessages((prev) => [...prev, msg]);
}, []);
+ // isBusy: true when main agent is running OR team tasks are active.
+ // Used for stop button visibility, top bar status, empty state check.
+ const isBusy = isRunning || teamTasks.length > 0;
+
return {
messages,
streamText,
thinkingText,
toolStream,
isRunning,
+ isBusy,
loading,
activity,
blockReplies,