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 = (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} />