From 4d54b90fbf9273c3dc2f26a856d67e16c3927e94 Mon Sep 17 00:00:00 2001 From: Adam Malczewski Date: Wed, 20 May 2026 13:47:33 +0900 Subject: feat: smart scroll — auto-follow during streaming, manual mode on scroll up, scroll-to-bottom button MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../frontend/src/lib/components/ChatMessage.svelte | 2 +- .../frontend/src/lib/components/ChatPanel.svelte | 86 +++++++++++++++++----- .../src/lib/components/ToolCallDisplay.svelte | 4 +- 3 files changed, 70 insertions(+), 22 deletions(-) (limited to 'packages/frontend/src') diff --git a/packages/frontend/src/lib/components/ChatMessage.svelte b/packages/frontend/src/lib/components/ChatMessage.svelte index 09182f3..46fd654 100644 --- a/packages/frontend/src/lib/components/ChatMessage.svelte +++ b/packages/frontend/src/lib/components/ChatMessage.svelte @@ -11,7 +11,7 @@ const isUser = $derived(message.role === "user");
{#if message.thinking} -
+
Thinking...
diff --git a/packages/frontend/src/lib/components/ChatPanel.svelte b/packages/frontend/src/lib/components/ChatPanel.svelte index e0491e7..11c3b5d 100644 --- a/packages/frontend/src/lib/components/ChatPanel.svelte +++ b/packages/frontend/src/lib/components/ChatPanel.svelte @@ -1,18 +1,46 @@
@@ -38,14 +66,34 @@ $effect(() => {
-
- {#if chatStore.messages.length === 0} -
- Send a message to start a conversation -
- {/if} - {#each chatStore.messages as message (message.id)} - - {/each} +
+
{ + isAutoScrolling = false; + }} + > + {#if chatStore.messages.length === 0} +
+ Send a message to start a conversation +
+ {/if} + {#each chatStore.messages as message (message.id)} + + {/each} +
+ + +
diff --git a/packages/frontend/src/lib/components/ToolCallDisplay.svelte b/packages/frontend/src/lib/components/ToolCallDisplay.svelte index f92f0f7..d85372c 100644 --- a/packages/frontend/src/lib/components/ToolCallDisplay.svelte +++ b/packages/frontend/src/lib/components/ToolCallDisplay.svelte @@ -43,10 +43,10 @@ const shellResult = $derived( ); -
+