diff --git a/src/lib/components/chat/Messages.svelte b/src/lib/components/chat/Messages.svelte index 34f529f4e9..31bc65832c 100644 --- a/src/lib/components/chat/Messages.svelte +++ b/src/lib/components/chat/Messages.svelte @@ -89,7 +89,7 @@ let message = history.messages[history.currentId]; const visitedMessageIds = new Set(); - while (message && (messagesCount !== null ? _messages.length <= messagesCount : true)) { + while (message && (messagesCount !== null ? _messages.length < messagesCount : true)) { if (visitedMessageIds.has(message.id)) { console.warn('Circular dependency detected in message history', message.id); break; diff --git a/src/lib/components/chat/Messages/ResponseMessage.svelte b/src/lib/components/chat/Messages/ResponseMessage.svelte index 45c7527bdc..9295ecd136 100644 --- a/src/lib/components/chat/Messages/ResponseMessage.svelte +++ b/src/lib/components/chat/Messages/ResponseMessage.svelte @@ -1074,37 +1074,6 @@ - {#if message.done && !readOnly && forkHandler} - - { - forkHandler?.(message.id); - }} - > - - - - - - - - - - {/if} - {#if onInsertToNote && visibleResponseContent} {/if} + {#if message.done && !readOnly && forkHandler} + + { + forkHandler?.(message.id); + }} + > + + + + + + + + + + {/if} + {#if $user?.role === 'admin' || ($user?.permissions?.chat?.regenerate_response ?? true)} {#if $settings?.regenerateMenu ?? true} { + await tick(); + requestAnimationFrame(() => { + if (messagesContainerElement) { + messagesContainerElement.scrollTop = messagesContainerElement.scrollHeight; + + requestAnimationFrame(() => { + if (messagesContainerElement) { + messagesContainerElement.scrollTop = messagesContainerElement.scrollHeight; + } + }); + } + }); + setTimeout(() => { + if (messagesContainerElement) { + messagesContainerElement.scrollTop = messagesContainerElement.scrollHeight; + } + }, 80); + }; + const loadChatPreview = async (selectedIdx) => { if (!chatList || chatList.length === 0 || selectedIdx === null) { selectedChat = null; @@ -336,6 +358,8 @@ }); if (chat) { + selectedChat = chat; + if (chat?.chat?.history) { selectedModels = (chat?.chat?.models ?? undefined) !== undefined @@ -343,14 +367,8 @@ : [chat?.chat?.models ?? '']; history = chat?.chat?.history; - messages = createMessagesList(chat?.chat?.history, chat?.chat?.history?.currentId); - - // scroll to the bottom of the messages container - await tick(); - const messagesContainerElement = document.getElementById('chat-preview'); - if (messagesContainerElement) { - messagesContainerElement.scrollTop = messagesContainerElement.scrollHeight; - } + messages = []; + await scrollPreviewToBottom(); } else { messages = []; } @@ -853,7 +871,8 @@ {/if} {#if messages === null} @@ -871,8 +890,9 @@ readOnly={true} {selectedModels} bind:history - bind:messages autoScroll={true} + {messagesContainerId} + messagesCount={8} sendMessage={() => {}} continueResponse={() => {}} regenerateResponse={() => {}}