diff --git a/ui-svelte/src/components/LogPanel.svelte b/ui-svelte/src/components/LogPanel.svelte index 573950ff..815bd55f 100644 --- a/ui-svelte/src/components/LogPanel.svelte +++ b/ui-svelte/src/components/LogPanel.svelte @@ -65,10 +65,17 @@ }); let preElement: HTMLPreElement; + let userScrolledUp = $state(false); - // Auto scroll to bottom when logs change + function handleScroll() { + if (!preElement) return; + const { scrollTop, scrollHeight, clientHeight } = preElement; + userScrolledUp = scrollHeight - scrollTop - clientHeight > 40; + } + + // Auto scroll to bottom when logs change, unless user has scrolled up $effect(() => { - if (preElement && filteredLogs) { + if (preElement && filteredLogs && !userScrolledUp) { preElement.scrollTop = preElement.scrollHeight; } }); @@ -127,6 +134,6 @@ {/if}
-
{filteredLogs}
+
{filteredLogs}