diff --git a/src/renderer/components/ChatPane.tsx b/src/renderer/components/ChatPane.tsx index 73bb69b..728a5ce 100644 --- a/src/renderer/components/ChatPane.tsx +++ b/src/renderer/components/ChatPane.tsx @@ -530,7 +530,7 @@ export function ChatPane({ )} {isSessionBusy && !pendingApproval && !pendingUserInput && (() => { - const label = summarizeSessionActivity(sessionActivity); + const label = session.currentIntent ?? summarizeSessionActivity(sessionActivity); return (
@@ -593,6 +593,7 @@ export function ChatPane({ isActive={isTurnActive(item, itemIndex)} turnStartedAt={item.turnStartedAt} sessionId={session.id} + currentIntent={session.currentIntent} agentNames={item.agentNames} isLastRunPanel={item.isLastRunPanel} onDiscard={onDiscardRunChanges} diff --git a/src/renderer/components/chat/TurnActivityPanel.tsx b/src/renderer/components/chat/TurnActivityPanel.tsx index 0e7a278..11d4ce7 100644 --- a/src/renderer/components/chat/TurnActivityPanel.tsx +++ b/src/renderer/components/chat/TurnActivityPanel.tsx @@ -41,6 +41,7 @@ export interface TurnActivityPanelProps { isActive: boolean; turnStartedAt?: string; sessionId: string; + currentIntent?: string; agentNames?: ReadonlySet; isLastRunPanel?: boolean; onDiscard?: (sessionId: string, runId: string, files?: ProjectGitFileReference[]) => Promise; @@ -418,6 +419,7 @@ export function TurnActivityPanel({ isActive, turnStartedAt, sessionId, + currentIntent, agentNames, isLastRunPanel, onDiscard, @@ -471,8 +473,12 @@ export function TurnActivityPanel({ return groupActivityStream(stream); }, [thinkingMessages, scopedEvents]); - // Extract intent text for the header - const intentText = useMemo(() => extractLatestIntent(scopedEvents), [scopedEvents]); + // Prefer the session-level normalized intent when active; fall back to + // scanning run timeline for report_intent tool calls (backward compat). + const intentText = useMemo( + () => (isActive ? currentIntent : undefined) ?? extractLatestIntent(scopedEvents), + [isActive, currentIntent, scopedEvents], + ); const fallbackSummary = useMemo( () => !intentText ? generateActivitySummary(scopedEvents) : undefined, [intentText, scopedEvents],