From 9c4b049c8d72ce1673070d1a7333e9f688883818 Mon Sep 17 00:00:00 2001 From: Jack Kingsman Date: Sun, 1 Mar 2026 14:37:40 -0800 Subject: [PATCH] Fix double message render glitch --- frontend/src/hooks/useConversationMessages.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/frontend/src/hooks/useConversationMessages.ts b/frontend/src/hooks/useConversationMessages.ts index ed81e7d..8a204f9 100644 --- a/frontend/src/hooks/useConversationMessages.ts +++ b/frontend/src/hooks/useConversationMessages.ts @@ -381,10 +381,15 @@ export function useConversationMessages( } seenMessageContent.current.add(contentKey); - // Limit set size to prevent memory issues (keep last 500) + // Limit set size to prevent memory issues — rebuild from current messages + // so visible messages always remain in the dedup set (insertion-order slicing + // could evict keys for still-displayed messages, allowing echo duplicates). if (seenMessageContent.current.size > 1000) { - const entries = Array.from(seenMessageContent.current); - seenMessageContent.current = new Set(entries.slice(-500)); + seenMessageContent.current = new Set( + messagesRef.current.map((m) => getMessageContentKey(m)) + ); + // Re-add the just-inserted key in case it's a new message not yet in state + seenMessageContent.current.add(contentKey); } setMessages((prev) => {