From d8ff049affe112585625c7ff01731dbf7361152b Mon Sep 17 00:00:00 2001 From: Mohamed Boudra Date: Sat, 18 Apr 2026 10:10:38 +0700 Subject: [PATCH] fix(app): only open tooltip on keyboard focus Modal close restores focus to the tooltip's trigger, which was firing onFocus and re-opening the tooltip. Gate onFocus on input modality so only keyboard-driven focus opens it, matching W3C tooltip behavior. Also removes the key-based remount workarounds that existed solely to sidestep this bug. --- .../app/src/components/agent-status-bar.tsx | 14 ++--------- packages/app/src/components/ui/tooltip.tsx | 23 +++++++++++++++++++ 2 files changed, 25 insertions(+), 12 deletions(-) diff --git a/packages/app/src/components/agent-status-bar.tsx b/packages/app/src/components/agent-status-bar.tsx index b5e061fd6..d7aa38dea 100644 --- a/packages/app/src/components/agent-status-bar.tsx +++ b/packages/app/src/components/agent-status-bar.tsx @@ -424,12 +424,7 @@ function ControlledStatusBar({ {thinkingOptions && thinkingOptions.length > 0 ? ( <> - + 0 ? ( <> - + { + lastInputWasKeyboard = true; + }; + const markPointer = () => { + lastInputWasKeyboard = false; + }; + window.addEventListener("keydown", markKeyboard, true); + window.addEventListener("mousedown", markPointer, true); + window.addEventListener("pointerdown", markPointer, true); + window.addEventListener("touchstart", markPointer, true); +} + +function shouldOpenOnFocus(): boolean { + return !isWeb || lastInputWasKeyboard; +} + function composeEventHandlers( original?: (event: E) => void, injected?: (event: E) => void, @@ -304,6 +326,7 @@ export function TooltipTrigger({ (e: any) => { onFocus?.(e); if (!ctx.enabled || disabled) return; + if (!shouldOpenOnFocus()) return; clearOpenTimer(); ctx.setOpen(true); },