From d07c8d8e4ca69a5d4f6c20ba675c985dab6e5c3d Mon Sep 17 00:00:00 2001 From: Howard Gil Date: Tue, 24 Feb 2026 13:17:11 -0800 Subject: [PATCH] fix: preserve loading indicator when tool messages are appended (#3055) When tool messages (role="tool") are appended after an assistant message, they shift array indices causing isCurrentMessage to become false for the assistant message, which makes the loading indicator disappear. Fix by calculating lastVisibleMessageIndex based on user/assistant roles instead of using messages.length - 1. Co-Authored-By: Claude Opus 4.6 --- packages/v1/react-ui/src/components/chat/Messages.tsx | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/v1/react-ui/src/components/chat/Messages.tsx b/packages/v1/react-ui/src/components/chat/Messages.tsx index cae316a0097..ba892f4fdc6 100644 --- a/packages/v1/react-ui/src/components/chat/Messages.tsx +++ b/packages/v1/react-ui/src/components/chat/Messages.tsx @@ -87,11 +87,16 @@ export const Messages = ({ const LoadingIcon = () => {icons.activityIcon}; + const lastVisibleMessageIndex = messages.reduce( + (lastIdx, msg, idx) => (msg.role === "user" || msg.role === "assistant" ? idx : lastIdx), + -1, + ); + return (
{messages.map((message, index) => { - const isCurrentMessage = index === messages.length - 1; + const isCurrentMessage = index === lastVisibleMessageIndex; return ( ); })} - {messages[messages.length - 1]?.role === "user" && inProgress && ( + {messages[lastVisibleMessageIndex]?.role === "user" && inProgress && ( )} {interrupt}