From fcb7d1f89949043c58538a6a29697e4ece39df7c Mon Sep 17 00:00:00 2001 From: Aleksander Grygier Date: Tue, 27 Jan 2026 16:33:35 +0100 Subject: [PATCH] fix: Sync streaming content to active messages --- .../components/app/chat/ChatScreen/ChatScreen.svelte | 3 ++- tools/server/webui/src/lib/stores/chat.svelte.ts | 11 +++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/tools/server/webui/src/lib/components/app/chat/ChatScreen/ChatScreen.svelte b/tools/server/webui/src/lib/components/app/chat/ChatScreen/ChatScreen.svelte index 5fe8942cea..f7be829a6b 100644 --- a/tools/server/webui/src/lib/components/app/chat/ChatScreen/ChatScreen.svelte +++ b/tools/server/webui/src/lib/components/app/chat/ChatScreen/ChatScreen.svelte @@ -18,6 +18,7 @@ chatStore, errorDialog, isLoading, + isChatStreaming, isEditing, getAddFilesHandler } from '$lib/stores/chat.svelte'; @@ -75,7 +76,7 @@ let isServerLoading = $derived(serverLoading()); let hasPropsError = $derived(!!serverError()); - let isCurrentConversationLoading = $derived(isLoading()); + let isCurrentConversationLoading = $derived(isLoading() || isChatStreaming()); let isRouter = $derived(isRouterMode()); diff --git a/tools/server/webui/src/lib/stores/chat.svelte.ts b/tools/server/webui/src/lib/stores/chat.svelte.ts index 36851a2018..a4fe1c3c70 100644 --- a/tools/server/webui/src/lib/stores/chat.svelte.ts +++ b/tools/server/webui/src/lib/stores/chat.svelte.ts @@ -106,8 +106,15 @@ class ChatStore { this.isLoading = this.chatLoadingStates.get(convId) || false; const s = this.chatStreamingStates.get(convId); this.currentResponse = s?.response || ''; - if (s?.response && s?.messageId && this.messageUpdateCallback) - this.messageUpdateCallback(s.messageId, { content: s.response }); + this.isStreamingActive = s !== undefined; + this.setActiveProcessingConversation(convId); + // Sync streaming content to activeMessages so UI displays current content + if (s?.response && s?.messageId) { + const idx = conversationsStore.findMessageIndex(s.messageId); + if (idx !== -1) { + conversationsStore.updateMessageAtIndex(idx, { content: s.response }); + } + } } registerMessageUpdateCallback( callback: (messageId: string, updates: Partial) => void