hermes-agent/apps/desktop/src
Brooklyn Nicholson 7f69494c3a fix(desktop): stop tooltips re-opening when a menu/dialog restores focus to its trigger
Picking a model from the composer model pill left the pill's tooltip
stuck open over the fresh selection: Radix Tooltip opens on ANY trigger
focus (its isPointerDownRef guard only covers a pointerdown on the
trigger itself), and Radix menus/dialogs restore focus to their trigger
on close — so every mouse-driven pick ended with a phantom tip. Same
pattern on every Tip-wrapped trigger that opens an overlay.

Gate the focus-open to KEYBOARD focus: the trigger's own onFocus runs
before Radix's composed handler and calls preventDefault() unless the
trigger matches :focus-visible — composeEventHandlers skips onOpen for
defaultPrevented events. Chromium keeps focus-visible modality across
the menu round-trip, so a mouse pick's focus restore no longer opens
the tip, while Tab-focus still shows it (a11y unchanged). Fails open if
:focus-visible is unsupported.

Tests cover the three branches (suppress on non-keyboard focus, keep on
keyboard focus, fail open on selector error); chat/shell suites green.
2026-07-18 01:04:24 -04:00
..
app fix(desktop): expose Local / custom endpoint in Providers API-keys tab (#62818) 2026-07-17 18:58:37 -04:00
components fix(desktop): stop tooltips re-opening when a menu/dialog restores focus to its trigger 2026-07-18 01:04:24 -04:00
contrib fmt(js): npm run fix on merge (#65229) 2026-07-15 21:40:56 +00:00
fonts fix(desktop): crisp terminal text via opaque xterm canvas 2026-06-12 19:36:30 -05:00
hooks perf(desktop): kill the layout-thrash cascade on session switch (#66033) 2026-07-16 22:46:08 -04:00
i18n fix(desktop): expose Local / custom endpoint in Providers API-keys tab (#62818) 2026-07-17 18:58:37 -04:00
lib fix(desktop): preserve numeric and display LaTeX (#66173) 2026-07-17 19:02:18 -04:00
plugins feat(desktop): plugin manager, runtime loader, and plugins settings 2026-07-13 17:57:53 -04:00
sdk fmt(js): npm run fix on merge (#65229) 2026-07-15 21:40:56 +00:00
store fmt(js): npm run fix on merge (#66465) 2026-07-17 18:59:51 +00:00
themes refactor(desktop): retire desktop-controller for the contribution shell; views as contributions 2026-07-13 17:57:54 -04:00
types fix(moa): reject half-filled MoA saves at the API boundary and hold desktop autosave until slots are complete 2026-07-15 09:50:08 -07:00
global.d.ts feat(desktop): electron — openDir IPC + ⌘W menu bridge (tabs, not windows) 2026-07-13 17:57:54 -04:00
hermes-parity.test.ts feat(desktop): CLI/dashboard parity — skills hub, MCP test/toggle/catalog, maintenance ops, log filters (#57441) 2026-07-03 01:02:47 -07:00
hermes-profile-scope.test.ts fix(desktop): route gateway restart / status / update to the active profile 2026-06-24 19:16:26 -05:00
hermes.test.ts fix: limit desktop model pickers to explicit providers 2026-07-07 15:12:54 -07:00
hermes.ts fix(mcp): harden hosted OAuth across profiles and clients 2026-07-17 04:50:47 -07:00
main.tsx fix(desktop): slow session switch (#65890) 2026-07-16 15:34:53 -04:00
styles.css refactor(desktop): retire desktop-controller for the contribution shell; views as contributions 2026-07-13 17:57:54 -04:00
vite-env.d.ts Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00