From 006c8e9f0e39a6725d9c9abe07fa81ce85ceb421 Mon Sep 17 00:00:00 2001 From: ciregenz Date: Mon, 7 Sep 2026 12:23:57 -0700 Subject: [PATCH] [eric] chat: a bubble subscribes to the overflow context only when its text is an error card; every bubble selected an object whose message count moved per message, so a 60-bubble transcript re-rendered whole on each streamed message (ENG-487) Co-Authored-By: Claude Fable 5.1 --- frontend/src/app/pages/AgentChat/bubbles/MessageBubble.tsx | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/frontend/src/app/pages/AgentChat/bubbles/MessageBubble.tsx b/frontend/src/app/pages/AgentChat/bubbles/MessageBubble.tsx index 93992108..56b20eae 100644 --- a/frontend/src/app/pages/AgentChat/bubbles/MessageBubble.tsx +++ b/frontend/src/app/pages/AgentChat/bubbles/MessageBubble.tsx @@ -997,7 +997,12 @@ const ChatMessageBubble: React.FC = ({ message, editing = false, onSaveEd [displayText, viewportWidth], ); + // Only a bubble whose text IS an OpenSwarm error card needs the live context (the parser keys on the text, the + // context only phrases the detail). Every other bubble selected an object whose messagesCount moved on each + // message, so a 60-bubble transcript re-rendered whole per streamed message (ENG-487). + const wantsOverflowCtx = !isUser && parseOpenSwarmError(rawText) !== null; const overflowCtx = useAppSelector((state) => { + if (!wantsOverflowCtx) return undefined; const sid = state.agents.activeSessionId; if (!sid) return undefined; const s = state.agents.sessions[sid];