diff --git a/packages/ui/src/components/chat/MessageList.tsx b/packages/ui/src/components/chat/MessageList.tsx index 56bf01de..5a12b3a0 100644 --- a/packages/ui/src/components/chat/MessageList.tsx +++ b/packages/ui/src/components/chat/MessageList.tsx @@ -700,6 +700,7 @@ const TurnBlock = React.memo(({ const isFirstAssistant = assistantIndex === 0; const isLastAssistant = assistantIndex === visibleAssistantMessages.length - 1; const isActivityOwner = Boolean(activityOwnerMessageId) && message.info.id === activityOwnerMessageId; + const hasAnchoredActivitySegment = visibleActivitySegments.some((segment) => segment.anchorMessageId === message.info.id); const shouldAttachFullTurnContext = chatRenderMode === 'sorted' ? isAssistantMessage : (isActivityOwner || isFirstAssistant || isLastAssistant); @@ -722,7 +723,11 @@ const TurnBlock = React.memo(({ activityOwnerMessageId, isFirstAssistantInTurn: isFirstAssistant, isLastAssistantInTurn: isLastAssistant, - isWorking: isLastTurn && sessionIsWorking && message.info.id === streamingAssistantMessageId, + isWorking: isLastTurn && sessionIsWorking && ( + chatRenderMode === 'sorted' + ? hasAnchoredActivitySegment + : message.info.id === streamingAssistantMessageId + ), hasTools: turn.hasTools, hasReasoning: turn.hasReasoning, ...(shouldAttachFullTurnContext ? { @@ -777,6 +782,7 @@ const TurnBlock = React.memo(({ activeStreamingPhase, visibleAssistantMessages, visibleAssistantIds, + visibleActivitySegments, activityOwnerMessageId, shouldAnimateUserMessage, onUserAnimationConsumed, diff --git a/packages/ui/src/components/chat/message/parts/ProgressiveGroup.tsx b/packages/ui/src/components/chat/message/parts/ProgressiveGroup.tsx index 7ec819df..6bfacdb8 100644 --- a/packages/ui/src/components/chat/message/parts/ProgressiveGroup.tsx +++ b/packages/ui/src/components/chat/message/parts/ProgressiveGroup.tsx @@ -242,18 +242,19 @@ const getRelativePathFromDirectory = (filePath: string, currentDirectory: string return normalizedPath; }; -const renderReadFilePath = (displayPath: string) => { +const renderReadFilePath = (displayPath: string, animate = true) => { const lastSlash = displayPath.lastIndexOf('/'); if (lastSlash === -1) { return ( - {displayPath} - + ); } @@ -277,7 +278,13 @@ const renderReadFilePath = (displayPath: string) => { {displayDir} / - {name} + + {name} + ); }; @@ -682,7 +689,7 @@ const StaticToolRowInner: React.FC<{ title={entry.offset ? `${entry.displayPath}:${entry.offset}` : entry.displayPath} > {showToolFileIcons ? : null} - {renderReadFilePath(entry.displayPath)} + {renderReadFilePath(entry.displayPath, animateTailText)} )) : null} diff --git a/packages/ui/src/components/chat/message/parts/ToolPart.tsx b/packages/ui/src/components/chat/message/parts/ToolPart.tsx index d74f6d70..77274067 100644 --- a/packages/ui/src/components/chat/message/parts/ToolPart.tsx +++ b/packages/ui/src/components/chat/message/parts/ToolPart.tsx @@ -1359,20 +1359,20 @@ const renderPathLikeGitChanges = (path: string, grow = true) => { ); }; -const renderAnimatedPathWithIcon = (path: string, _animate = true, grow = true, showFileIcons = true) => { - void _animate; +const renderAnimatedPathWithIcon = (path: string, animate = true, grow = true, showFileIcons = true) => { const lastSlash = path.lastIndexOf('/'); if (lastSlash === -1) { return ( {showFileIcons ? : null} - {path} - + ); } @@ -1399,9 +1399,13 @@ const renderAnimatedPathWithIcon = (path: string, _animate = true, grow = true, {displayDir} / - + {name} - + );