From 73e0a4e4d848666318facd58814926da9a51a11f Mon Sep 17 00:00:00 2001 From: Charles Vien Date: Fri, 3 Apr 2026 07:45:55 -0700 Subject: [PATCH] =?UTF-8?q?Optimize=20thought=20completion=20marking=20fro?= =?UTF-8?q?m=20O(n=C2=B2)=20to=20O(n)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/buildConversationItems.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/apps/code/src/renderer/features/sessions/components/buildConversationItems.ts b/apps/code/src/renderer/features/sessions/components/buildConversationItems.ts index 7c0fa9a4b..9f6002c1f 100644 --- a/apps/code/src/renderer/features/sessions/components/buildConversationItems.ts +++ b/apps/code/src/renderer/features/sessions/components/buildConversationItems.ts @@ -98,19 +98,19 @@ function isThoughtItem( } function markThoughtCompletion(items: ConversationItem[]) { + const seenContexts = new Set(); + for (let i = items.length - 1; i >= 0; i--) { const item = items[i]; - if (!isThoughtItem(item)) continue; - const hasSubsequentItem = items - .slice(i + 1) - .some( - (next) => - next.type === "session_update" && - next.turnContext === item.turnContext, - ); + if (isThoughtItem(item)) { + item.thoughtComplete = + seenContexts.has(item.turnContext) || item.turnContext.turnComplete; + } - item.thoughtComplete = hasSubsequentItem || item.turnContext.turnComplete; + if (item.type === "session_update") { + seenContexts.add(item.turnContext); + } } }