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",