diff options
| author | Adam <[email protected]> | 2025-12-29 14:40:53 -0600 |
|---|---|---|
| committer | Adam <[email protected]> | 2025-12-29 14:40:53 -0600 |
| commit | 35a626e7113dfe1ea89d765dbffa41a7a648ff89 (patch) | |
| tree | 03637f454a943a9e3ee481194ac6a3029f720c30 | |
| parent | bb7b0ff2213406078693d9b2900bd7c4493c9cf5 (diff) | |
| download | opencode-35a626e7113dfe1ea89d765dbffa41a7a648ff89.tar.gz opencode-35a626e7113dfe1ea89d765dbffa41a7a648ff89.zip | |
fix(desktop): don't flash permissions with auto-accept
| -rw-r--r-- | packages/ui/src/components/message-part.tsx | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/packages/ui/src/components/message-part.tsx b/packages/ui/src/components/message-part.tsx index be40fbd33..cf4daebbf 100644 --- a/packages/ui/src/components/message-part.tsx +++ b/packages/ui/src/components/message-part.tsx @@ -93,7 +93,7 @@ export type PartComponent = Component<MessagePartProps> export const PART_MAPPING: Record<string, PartComponent | undefined> = {} -const TEXT_RENDER_THROTTLE_MS = 250 +const TEXT_RENDER_THROTTLE_MS = 100 function same<T>(a: readonly T[], b: readonly T[]) { if (a === b) return true @@ -441,6 +441,18 @@ PART_MAPPING["tool"] = function ToolPartDisplay(props) { return next }) + const [showPermission, setShowPermission] = createSignal(false) + + createEffect(() => { + const perm = permission() + if (perm) { + const timeout = setTimeout(() => setShowPermission(true), 50) + onCleanup(() => clearTimeout(timeout)) + } else { + setShowPermission(false) + } + }) + const [forceOpen, setForceOpen] = createSignal(false) createEffect(() => { if (permission()) setForceOpen(true) @@ -466,7 +478,7 @@ PART_MAPPING["tool"] = function ToolPartDisplay(props) { const render = ToolRegistry.render(part.tool) ?? GenericTool return ( - <div data-component="tool-part-wrapper" data-permission={!!permission()}> + <div data-component="tool-part-wrapper" data-permission={showPermission()}> <Switch> <Match when={part.state.status === "error" && part.state.error}> {(error) => { @@ -507,7 +519,7 @@ PART_MAPPING["tool"] = function ToolPartDisplay(props) { /> </Match> </Switch> - <Show when={permission()}> + <Show when={showPermission() && permission()}> {(perm) => ( <div data-component="permission-prompt"> <div data-slot="permission-message">{perm().title}</div> |
