From 62a3d1034bf5c316d1e6ae194e6c3a237795d6fe Mon Sep 17 00:00:00 2001 From: npeter83 Date: Sat, 8 Aug 2026 23:33:39 +0200 Subject: [PATCH] fix(popover): keep the last-hovered row highlighted when the pointer leaves MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The surface's onMouseLeave nulled hoverIndex, so moving the pointer off a menu snapped the highlight back to activeIndex — the first item in a menu with a free-text input (ChannelTags), where the field swallows arrow keys so there is no list-nav holding a keyboard position. The keyboard and typeahead already reclaim the highlight by nulling hoverIndex in onNavigate/onMatch, so the mouseleave reset was redundant; dropping it keeps the last hover. 0.60.3. --- VERSION | 2 +- frontend/src/components/AnchoredPopover.tsx | 12 ++++++------ frontend/src/lib/releaseNotes.ts | 7 +++++++ 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/VERSION b/VERSION index 53c9cab1..365525db 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.60.2 \ No newline at end of file +0.60.3 \ No newline at end of file diff --git a/frontend/src/components/AnchoredPopover.tsx b/frontend/src/components/AnchoredPopover.tsx index bdce815e..ddf2cee1 100644 --- a/frontend/src/components/AnchoredPopover.tsx +++ b/frontend/src/components/AnchoredPopover.tsx @@ -440,12 +440,12 @@ function PopoverSurfaceInner({ positioned element is essential: the popIn keyframe animates `transform`, which would otherwise override Floating UI's `transform: translate(x,y)` and park the popover at (0,0) for the animation's duration — the "flash in the top-left corner" bug. */} -
setHoverIndex(null)} - > +
+ {/* Intentionally NO onMouseLeave hover-reset: when the pointer leaves, the last-hovered row + stays highlighted (feels natural, and a menu with a free-text input like ChannelTags — where + the field swallows arrow keys, so there is no list-nav — has nothing to reclaim it otherwise, + so it used to snap back to the first item). Keyboard nav / typeahead take the highlight back + by nulling hoverIndex in onNavigate/onMatch above. */} {children}
diff --git a/frontend/src/lib/releaseNotes.ts b/frontend/src/lib/releaseNotes.ts index fe961d02..06264e40 100644 --- a/frontend/src/lib/releaseNotes.ts +++ b/frontend/src/lib/releaseNotes.ts @@ -14,6 +14,13 @@ export interface ReleaseEntry { } export const RELEASE_NOTES: ReleaseEntry[] = [ + { + version: "0.60.3", + date: "2026-08-08", + fixes: [ + "In a menu, the highlight now stays on the row you last hovered when you move the pointer off it, instead of snapping back to the first item.", + ], + }, { version: "0.60.2", date: "2026-08-08",