Keyboard and pointer input fixes. Each carries a regression test verified to fail without its fix.
Fixed
- The key monitor no longer swallows arrow keys application-wide (#9).
addLocalMonitorForEventsreceives every key event posted to the application, and the handler consumed arrows unconditionally with no window check. With the palette open as a window-modal sheet on one window, pressing ↓ in a second, still-interactive window did nothing there and silently advanced the hidden palette's selection instead. The monitor now gates on the palette's own window. - Extended keyboard navigation now honours a flag set after presentation (#10). The
@Environmentvalue was read from inside the escaping monitor closure, which served a snapshot taken when the monitor was installed — so a host enabling.commandPaletteExtendedKeyboardNavigation()after the palette appeared was ignored. The flag is now mirrored into@Stateduring body evaluation. - Hover no longer fights keyboard navigation (#11). Holding ↓ with the pointer resting over the result list scrolled rows under a stationary cursor, which fired
onHoverand yanked the selection back to whatever row landed underneath, stalling navigation. Hover-driven selection is now ignored briefly after a keyboard move.
Note
Issue #10 originally predicted that the environment read returned its default, leaving extended navigation dead on macOS. Testing against a real windowed host disproved that — the feature worked before the fix. The real defect was the stale snapshot described above, which is narrower: it needs the flag to change after presentation. The issue has been corrected.
Full changelog: v0.1.0...v0.2.0