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 @@