Repository navigation
v2.17.1 — Overlay stability
Overlay stability release — fixes the hotkey flash bug, adds keyboard selection visibility, and cleans up native caption drag.
What changed
- Hotkey flash: pressing Ctrl+Space after the overlay sat idle for a few seconds used to flash open then immediately close. The overlay now correctly detects focus-flaps from Explorer re-assertion and defers dismissal long enough for WebView2 to settle.
- Keyboard selection: arrow-key selection in the overlay now has visible feedback — selected rows get a highlight ring so you can see where you are without reaching for the mouse.
- Caption drag: the overlay can now be dragged by its title area using native Win32 caption drag, and the search input gets select-all on focus for faster re-typing.
- Tray menu: removed "Open Config" from the tray context menu (was redundant with Settings).
Bug Fixes
- Hotkey flash after idle: extended the post-show quiescence window to 2 seconds so Explorer/Task Manager re-assertion cycles don't trigger a spurious Escape. Added epoch-based cancellation for deferred-hide threads so rapid hide→show toggles can't let a stale thread fire on the new show.
- FocusExisting dead code:
on_hotkeynow correctly returnsFocusExistingwhen the overlay is visible but unfocused (e.g. after Explorer steals focus), instead of always hiding. The handler refocuses the input without re-sending the Show command. - Stale Painted rejection: the host now rejects
Paintedevents when the overlay was already hidden between Show and first paint, preventing a hidden window from suddenly appearing. - FocusReassert scoped: focus re-assertion only fires when the overlay is visible and actually unfocused, not unconditionally.
- Grid-view hover border: removed unintended hover border on grid-view rows.
- Selected row border: removed inset border on
.selectedrow that clashed with the hover style.
Architecture
- Deferred-hide epoch counter: added
AtomicU64epoch to the host event loop. Show and Hide bump the epoch; deferred-hide threads capture it before sleeping and skip Escape if the epoch advanced. Eliminates the race window between rapid hotkey toggles.
Commit Log
3e4c697fix: overlay hotkey flash — FocusExisting + deferred-hide epoch cancellation76e478ffix(tray): remove Open Config from tray menuc3429cffix(overlay): drop hover border on grid-view rows55c29a6fix(overlay): native caption drag + select-all input UX (#22)343fcbbfix(overlay): drop inset border on .selected row7efb8edfix(overlay): visible + a11y feedback for keyboard selection (#17)42cb713investigate(issue-17): keyboard navigation gap report5e257c1fix(overlay): prevent flash on first hotkey press after long idle (#19)0df2344Update README.mdaf42e3bcleanupb914372feat(settings): add fade animation for window open/closebefea40fix: MIT license line wrapping to match OSI standard513bf24doc fixc33e64crelease: v2.17.1