diff options
| author | Adam <[email protected]> | 2026-01-22 05:45:53 -0600 |
|---|---|---|
| committer | Adam <[email protected]> | 2026-01-22 05:45:53 -0600 |
| commit | ae2693425e75af4e69039be707076d1bdc809b2c (patch) | |
| tree | aa97f26f540427774112161aca0e9c44af428c5b | |
| parent | d9b94850192554d4d7ef9d47e213997b79543833 (diff) | |
| download | opencode-ae2693425e75af4e69039be707076d1bdc809b2c.tar.gz opencode-ae2693425e75af4e69039be707076d1bdc809b2c.zip | |
fix(app): snap to bottom on prompt
| -rw-r--r-- | packages/app/src/components/prompt-input.tsx | 3 | ||||
| -rw-r--r-- | packages/app/src/pages/session.tsx | 6 |
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> |
