From 5515d374b9015e1adae294f2f29abc2be174c97c Mon Sep 17 00:00:00 2001 From: Alex Hancock Date: Fri, 18 Jul 2025 11:55:21 -0400 Subject: [PATCH 1/2] Reapply "fix the output not being visible issue (#3491)" (#3511) This reverts commit af872b1794e5e94464162232f0ee42ef5566a1c1. --- .../src/components/ProgressiveMessageList.tsx | 4 +++- .../sessions/SessionHistoryView.tsx | 23 +------------------ ui/desktop/src/hooks/useChatEngine.ts | 23 +------------------ 3 files changed, 5 insertions(+), 45 deletions(-) diff --git a/ui/desktop/src/components/ProgressiveMessageList.tsx b/ui/desktop/src/components/ProgressiveMessageList.tsx index 5c84cc657ed5..4386f38e6518 100644 --- a/ui/desktop/src/components/ProgressiveMessageList.tsx +++ b/ui/desktop/src/components/ProgressiveMessageList.tsx @@ -62,6 +62,8 @@ export default function ProgressiveMessageList({ const [isLoading, setIsLoading] = useState(() => messages.length > showLoadingThreshold); const timeoutRef = useRef(null); const mountedRef = useRef(true); + const hasOnlyToolResponses = (message: Message) => + message.content.every((c) => c.type === 'toolResponse'); // Try to use context manager, but don't require it for session history let hasContextHandlerContent: ((message: Message) => boolean) | undefined; @@ -199,7 +201,7 @@ export default function ProgressiveMessageList({ }} /> ) : ( - + !hasOnlyToolResponses(message) && )} ) : ( diff --git a/ui/desktop/src/components/sessions/SessionHistoryView.tsx b/ui/desktop/src/components/sessions/SessionHistoryView.tsx index 58b40d218bd5..e2bc544d7478 100644 --- a/ui/desktop/src/components/sessions/SessionHistoryView.tsx +++ b/ui/desktop/src/components/sessions/SessionHistoryView.tsx @@ -43,29 +43,8 @@ const isUserMessage = (message: Message): boolean => { return true; }; -// Filter messages for display (same logic as useChatEngine) const filterMessagesForDisplay = (messages: Message[]): Message[] => { - return messages.filter((message) => { - // Only filter out when display is explicitly false - if (message.display === false) return false; - - // Keep all assistant messages and user messages that aren't just tool responses - if (message.role === 'assistant') return true; - - // For user messages, check if they're only tool responses - if (message.role === 'user') { - const hasOnlyToolResponses = message.content.every((c) => c.type === 'toolResponse'); - const hasTextContent = message.content.some((c) => c.type === 'text'); - const hasToolConfirmation = message.content.every( - (c) => c.type === 'toolConfirmationRequest' - ); - - // Keep the message if it has text content or tool confirmation or is not just tool responses - return hasTextContent || !hasOnlyToolResponses || hasToolConfirmation; - } - - return true; - }); + return messages.filter((message) => message.display); }; interface SessionHistoryViewProps { diff --git a/ui/desktop/src/hooks/useChatEngine.ts b/ui/desktop/src/hooks/useChatEngine.ts index e8b16d50d9d6..c852b1699c7c 100644 --- a/ui/desktop/src/hooks/useChatEngine.ts +++ b/ui/desktop/src/hooks/useChatEngine.ts @@ -326,29 +326,8 @@ export const useChatEngine = ({ } }, [stop, messages, _setInput, setMessages]); - // Filter out standalone tool response messages for rendering const filteredMessages = useMemo(() => { - return [...ancestorMessages, ...messages].filter((message) => { - // Only filter out when display is explicitly false - if (message.display === false) return false; - - // Keep all assistant messages and user messages that aren't just tool responses - if (message.role === 'assistant') return true; - - // For user messages, check if they're only tool responses - if (message.role === 'user') { - const hasOnlyToolResponses = message.content.every((c) => c.type === 'toolResponse'); - const hasTextContent = message.content.some((c) => c.type === 'text'); - const hasToolConfirmation = message.content.every( - (c) => c.type === 'toolConfirmationRequest' - ); - - // Keep the message if it has text content or tool confirmation or is not just tool responses - return hasTextContent || !hasOnlyToolResponses || hasToolConfirmation; - } - - return true; - }); + return [...ancestorMessages, ...messages].filter((message) => message.display); }, [ancestorMessages, messages]); // Generate command history from filtered messages From 0310849674d94440c9ed7a5baea6b11fa135a637 Mon Sep 17 00:00:00 2001 From: Max Novich Date: Fri, 18 Jul 2025 09:36:39 -0700 Subject: [PATCH 2/2] fix filtering logic for messages --- ui/desktop/src/components/sessions/SessionHistoryView.tsx | 2 +- ui/desktop/src/hooks/useChatEngine.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ui/desktop/src/components/sessions/SessionHistoryView.tsx b/ui/desktop/src/components/sessions/SessionHistoryView.tsx index e2bc544d7478..c9b6b5e46acb 100644 --- a/ui/desktop/src/components/sessions/SessionHistoryView.tsx +++ b/ui/desktop/src/components/sessions/SessionHistoryView.tsx @@ -44,7 +44,7 @@ const isUserMessage = (message: Message): boolean => { }; const filterMessagesForDisplay = (messages: Message[]): Message[] => { - return messages.filter((message) => message.display); + return messages.filter((message) => message.display ?? true); }; interface SessionHistoryViewProps { diff --git a/ui/desktop/src/hooks/useChatEngine.ts b/ui/desktop/src/hooks/useChatEngine.ts index c852b1699c7c..4f2613abe78a 100644 --- a/ui/desktop/src/hooks/useChatEngine.ts +++ b/ui/desktop/src/hooks/useChatEngine.ts @@ -327,7 +327,7 @@ export const useChatEngine = ({ }, [stop, messages, _setInput, setMessages]); const filteredMessages = useMemo(() => { - return [...ancestorMessages, ...messages].filter((message) => message.display); + return [...ancestorMessages, ...messages].filter((message) => message.display ?? true); }, [ancestorMessages, messages]); // Generate command history from filtered messages