From 1b5bf32ce560f44dd558f3951121c3f4b0560e85 Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Sat, 27 Dec 2025 20:40:25 -0600 Subject: chore: permissions ux --- packages/ui/src/components/session-turn.tsx | 6 ++++++ packages/ui/src/components/toast.tsx | 5 +---- packages/ui/src/hooks/create-auto-scroll.tsx | 17 +++++++++++++++++ 3 files changed, 24 insertions(+), 4 deletions(-) (limited to 'packages/ui/src') 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 @@ -328,6 +328,12 @@ export function SessionTurn( } }) + createEffect(() => { + if (permissionParts().length > 0) { + autoScroll.forceScrollToBottom() + } + }) + createEffect(() => { if (working() || !isLastUserMessage()) return 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, } } -- cgit v1.2.3