diff options
Diffstat (limited to 'packages/ui/src')
| -rw-r--r-- | packages/ui/src/components/session-turn.tsx | 6 | ||||
| -rw-r--r-- | packages/ui/src/components/toast.tsx | 5 | ||||
| -rw-r--r-- | packages/ui/src/hooks/create-auto-scroll.tsx | 17 |
3 files changed, 24 insertions, 4 deletions
diff --git a/packages/ui/src/components/session-turn.tsx b/packages/ui/src/components/session-turn.tsx index ce4845a71..8cb426387 100644 --- a/packages/ui/src/components/session-turn.tsx +++ b/packages/ui/src/components/session-turn.tsx @@ -329,6 +329,12 @@ export function SessionTurn( }) createEffect(() => { + if (permissionParts().length > 0) { + autoScroll.forceScrollToBottom() + } + }) + + createEffect(() => { if (working() || !isLastUserMessage()) return const diffs = message()?.summary?.diffs diff --git a/packages/ui/src/components/toast.tsx b/packages/ui/src/components/toast.tsx index 7e90e9f2f..f34c46d42 100644 --- a/packages/ui/src/components/toast.tsx +++ b/packages/ui/src/components/toast.tsx @@ -92,7 +92,6 @@ export type ToastVariant = "default" | "success" | "error" | "loading" export interface ToastAction { label: string onClick: "dismiss" | (() => void) - dismissAfter?: boolean } export interface ToastOptions { @@ -132,10 +131,8 @@ export function showToast(options: ToastOptions | string) { onClick={() => { if (typeof action.onClick === "function") { action.onClick() - if (action.dismissAfter) toaster.dismiss(props.toastId) - } else { - toaster.dismiss(props.toastId) } + toaster.dismiss(props.toastId) }} > {action.label} diff --git a/packages/ui/src/hooks/create-auto-scroll.tsx b/packages/ui/src/hooks/create-auto-scroll.tsx index e262b7c69..b780f47c6 100644 --- a/packages/ui/src/hooks/create-auto-scroll.tsx +++ b/packages/ui/src/hooks/create-auto-scroll.tsx @@ -35,6 +35,22 @@ export function createAutoScroll(options: AutoScrollOptions) { }) } + function forceScrollToBottom() { + if (!scrollRef) return + + setStore("userScrolled", false) + isAutoScrolling = true + if (autoScrollTimeout) clearTimeout(autoScrollTimeout) + autoScrollTimeout = setTimeout(() => { + isAutoScrolling = false + }, 1000) + + scrollRef.scrollTo({ + top: scrollRef.scrollHeight, + behavior: "smooth", + }) + } + function handleScroll() { if (!scrollRef) return @@ -161,6 +177,7 @@ export function createAutoScroll(options: AutoScrollOptions) { handleScroll, handleInteraction, scrollToBottom, + forceScrollToBottom, userScrolled: () => store.userScrolled, } } |
