From c206e661f7b87243924bc2084cedf759077affdd Mon Sep 17 00:00:00 2001 From: Aleksander Grygier Date: Sun, 6 Sep 2026 00:20:04 +0200 Subject: [PATCH] ui : skip sibling refetch for in-place message edits refreshAllMessages refetches every message of the conversation just to rebuild sibling info, but preserve-responses and non-branching assistant edits never create branches, so the sibling map stays valid. Refresh only after actions that branch (editWithBranching kept) or delete. Assisted-by: pi:zai-org/GLM-5.3 --- .../components/app/chat/ChatMessages/ChatMessages.svelte | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tools/ui/src/lib/components/app/chat/ChatMessages/ChatMessages.svelte b/tools/ui/src/lib/components/app/chat/ChatMessages/ChatMessages.svelte index 0a90097318..d84ee12ab2 100644 --- a/tools/ui/src/lib/components/app/chat/ChatMessages/ChatMessages.svelte +++ b/tools/ui/src/lib/components/app/chat/ChatMessages/ChatMessages.svelte @@ -51,8 +51,9 @@ newExtras?: DatabaseMessageExtra[] ) => { onUserAction?.(); + // in-place edit: the store already updated activeMessages and no + // branch is created, so sibling info stays valid without a refetch await chatStore.editUserMessagePreserveResponses(message.id, newContent, newExtras); - refreshAllMessages(); }, editWithBranching: async ( @@ -72,7 +73,10 @@ ) => { onUserAction?.(); await chatStore.editAssistantMessage(message.id, newContent, shouldBranch); - refreshAllMessages(); + + // only a branch changes sibling info; an in-place edit already + // landed in activeMessages + if (shouldBranch) refreshAllMessages(); }, forkConversation: async (