From 43110f5356046b25d85dad203276d24cda48eb37 Mon Sep 17 00:00:00 2001 From: Jon Staab Date: Thu, 27 Aug 2026 20:52:11 -0700 Subject: [PATCH] Fix chat identity bug --- src/app/chats.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/app/chats.ts b/src/app/chats.ts index 309094a0..7423e808 100644 --- a/src/app/chats.ts +++ b/src/app/chats.ts @@ -103,8 +103,16 @@ export const chatsById = call(() => { const chat = chatsById.get(chatId) if (chat) { - chat.messages = reject(spec({id: event.id}), chat.messages) - dirty = true + const messages = reject(spec({id: event.id}), chat.messages) + + // Replace the chat with a fresh object rather than mutating its messages in place: + // deriveChat is deduplicated by reference (see makeDeriveItem/deriveDeduplicated), so a + // chat whose identity is unchanged never reaches the ui and the deleted message lingers + // on screen until some unrelated addEvents happens to rebuild it. + if (messages.length !== chat.messages.length) { + chatsById.set(chatId, {...chat, messages}) + dirty = true + } } } }