From 241fb4f609854b8d2f5fc8856fe30b4a87384673 Mon Sep 17 00:00:00 2001 From: Jeremy Eder Date: Thu, 29 Jan 2026 00:18:59 -0500 Subject: [PATCH] Fix: Progress indicator state management (#404, #403) Fix #404 - Stop progress indicator on failure: - Force isRunActive to false when session is Failed/Completed/Stopped - Prevents indicator from cycling after terminal states Fix #403 - Show indicator between tool calls: - Display LoadingDots whenever isRunActive is true - Removed filteredMessages.length requirement - Ensures visibility during all active work periods Co-Authored-By: Claude Sonnet 4.5 --- .../src/app/projects/[name]/sessions/[sessionName]/page.tsx | 6 ++++-- components/frontend/src/components/session/MessagesTab.tsx | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/components/frontend/src/app/projects/[name]/sessions/[sessionName]/page.tsx b/components/frontend/src/app/projects/[name]/sessions/[sessionName]/page.tsx index 213a21489..d176a1668 100644 --- a/components/frontend/src/app/projects/[name]/sessions/[sessionName]/page.tsx +++ b/components/frontend/src/app/projects/[name]/sessions/[sessionName]/page.tsx @@ -219,9 +219,11 @@ export default function ProjectSessionDetailPage({ const aguiState = aguiStream.state; const aguiSendMessage = aguiStream.sendMessage; const aguiInterrupt = aguiStream.interrupt; - const isRunActive = aguiStream.isRunActive; + // Fix #404: Force isRunActive to false when session is in terminal state (Failed, Completed, Stopped) + const rawIsRunActive = aguiStream.isRunActive; + const isRunActive = rawIsRunActive && !["Failed", "Completed", "Stopped"].includes(phase); const aguiConnectRef = useRef(aguiStream.connect); - + // Keep connect ref up to date useEffect(() => { aguiConnectRef.current = aguiStream.connect; diff --git a/components/frontend/src/components/session/MessagesTab.tsx b/components/frontend/src/components/session/MessagesTab.tsx index f717d580c..9513f4e4e 100644 --- a/components/frontend/src/components/session/MessagesTab.tsx +++ b/components/frontend/src/components/session/MessagesTab.tsx @@ -351,8 +351,8 @@ const MessagesTab: React.FC = ({ session, streamMessages, chat )} - {/* Show loading indicator when agent is actively processing */} - {shouldShowMessages && isRunActive && filteredMessages.length > 0 && ( + {/* Show loading indicator when agent is actively processing (Fix #403) */} + {shouldShowMessages && isRunActive && (