summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAdam <[email protected]>2026-01-22 05:45:53 -0600
committerAdam <[email protected]>2026-01-22 05:45:53 -0600
commitae2693425e75af4e69039be707076d1bdc809b2c (patch)
treeaa97f26f540427774112161aca0e9c44af428c5b
parentd9b94850192554d4d7ef9d47e213997b79543833 (diff)
downloadopencode-ae2693425e75af4e69039be707076d1bdc809b2c.tar.gz
opencode-ae2693425e75af4e69039be707076d1bdc809b2c.zip
fix(app): snap to bottom on prompt
-rw-r--r--packages/app/src/components/prompt-input.tsx3
-rw-r--r--packages/app/src/pages/session.tsx6
2 files changed, 9 insertions, 0 deletions
diff --git a/packages/app/src/components/prompt-input.tsx b/packages/app/src/components/prompt-input.tsx
index b0ab5a3b0..7670f5765 100644
--- a/packages/app/src/components/prompt-input.tsx
+++ b/packages/app/src/components/prompt-input.tsx
@@ -65,6 +65,7 @@ interface PromptInputProps {
ref?: (el: HTMLDivElement) => void
newSessionWorktree?: string
onNewSessionWorktreeReset?: () => void
+ onSubmit?: () => void
}
const EXAMPLES = [
@@ -1110,6 +1111,8 @@ export const PromptInput: Component<PromptInputProps> = (props) => {
}
if (!session) return
+ props.onSubmit?.()
+
const model = {
modelID: currentModel.id,
providerID: currentModel.provider.id,
diff --git a/packages/app/src/pages/session.tsx b/packages/app/src/pages/session.tsx
index 75a9676ea..a4ce6493d 100644
--- a/packages/app/src/pages/session.tsx
+++ b/packages/app/src/pages/session.tsx
@@ -909,6 +909,11 @@ export default function Page() {
overflowAnchor: "dynamic",
})
+ const resumeScroll = () => {
+ setStore("messageId", undefined)
+ autoScroll.forceScrollToBottom()
+ }
+
// When the user returns to the bottom, treat the active message as "latest".
createEffect(
on(
@@ -1535,6 +1540,7 @@ export default function Page() {
}}
newSessionWorktree={newSessionWorktree()}
onNewSessionWorktreeReset={() => setStore("newSessionWorktree", "main")}
+ onSubmit={resumeScroll}
/>
</Show>
</div>