diff --git a/ui/src/lib/panel/chat-view.svelte b/ui/src/lib/panel/chat-view.svelte index bfeb00b..020dcd4 100644 --- a/ui/src/lib/panel/chat-view.svelte +++ b/ui/src/lib/panel/chat-view.svelte @@ -79,20 +79,17 @@ } } + // The scroller is column-reverse: its origin is the bottom, scrollTop is + // zero there and goes negative upward, and the browser keeps the view at + // the bottom while content grows - no matter how late markdown lands. function nearBottom(): boolean { - if (!scroller) { - return true; - } - const left = - scroller.scrollHeight - scroller.scrollTop - scroller.clientHeight; - return left < NEAR_BOTTOM_PX; + return !scroller || Math.abs(scroller.scrollTop) < NEAR_BOTTOM_PX; } function toBottom() { if (scroller) { - scroller.scrollTop = scroller.scrollHeight; + scroller.scrollTop = 0; } - // Whatever actually scrolls - this box, or a host's pane around it. end?.scrollIntoView({ block: "end" }); } @@ -211,7 +208,7 @@
{ if (Date.now() > settleUntil) { pinned = nearBottom(); diff --git a/ui/src/lib/panel/panel-bar.svelte b/ui/src/lib/panel/panel-bar.svelte index c73f87e..cff778a 100644 --- a/ui/src/lib/panel/panel-bar.svelte +++ b/ui/src/lib/panel/panel-bar.svelte @@ -9,7 +9,6 @@ import KindMark from "$lib/shell/kind-mark.svelte"; import { cn } from "$lib/utils"; import type { ConversationIndex } from "./index.svelte"; - import PanelIsland from "./panel-island.svelte"; let { client, @@ -35,7 +34,6 @@
- {#snippet child({ props })} diff --git a/ui/src/lib/panel/panel-island.svelte b/ui/src/lib/panel/panel-island.svelte deleted file mode 100644 index e7b94fe..0000000 --- a/ui/src/lib/panel/panel-island.svelte +++ /dev/null @@ -1,70 +0,0 @@ - - - diff --git a/ui/src/lib/panel/panel-shell.svelte b/ui/src/lib/panel/panel-shell.svelte index cb0ea0d..eb2f190 100644 --- a/ui/src/lib/panel/panel-shell.svelte +++ b/ui/src/lib/panel/panel-shell.svelte @@ -5,7 +5,6 @@ import ConversationView from "./conversation-view.svelte"; import type { ConversationIndex } from "./index.svelte"; import PanelBar from "./panel-bar.svelte"; - import PanelIsland from "./panel-island.svelte"; let { client, @@ -43,15 +42,15 @@