From 2496e0468598571091edde659740a604332486d0 Mon Sep 17 00:00:00 2001 From: thzxx Date: Mon, 20 Apr 2026 21:00:42 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E4=B8=8D=E6=98=BE=E7=A4=BA=E5=92=8C=E6=80=9D?= =?UTF-8?q?=E8=80=83=E6=B0=94=E6=B3=A1=E6=AE=8B=E7=95=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit renderMessages() 中 existingCount 使用 children.length 计算, 包含了 currentPlaceholder(正在思考...)元素,导致: 1. 新用户消息被误判为已渲染而跳过 2. 旧 placeholder 残留 DOM 变成独立消息气泡 修复:existingCount 改用 querySelectorAll('.message') 只计算实际消息元素 --- src/renderer/components/chat-area.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/renderer/components/chat-area.ts b/src/renderer/components/chat-area.ts index f80b6ef..2a5d9bb 100644 --- a/src/renderer/components/chat-area.ts +++ b/src/renderer/components/chat-area.ts @@ -89,7 +89,8 @@ export function renderMessages(): void { emptyStateEl.style.display = 'none'; messagesContainerEl.style.display = ''; - const existingCount = messagesContainerEl.children.length; + // 只计算已渲染的 .message 元素(排除 placeholder 和其他非消息元素) + const existingCount = messagesContainerEl.querySelectorAll('.message').length; const isNewMessage = existingCount > 0 && existingCount < msgs.length; for (let i = existingCount; i < msgs.length; i++) { appendMessageDOM(msgs[i], i);