Skip to content

Latest commit

 

History

History
1184 lines (727 loc) · 110 KB

File metadata and controls

1184 lines (727 loc) · 110 KB

Changelog

1.42.0 (2026-05-30)

Features

Bug Fixes

  • ensure screen capture permission flow consistency (#875) (920d85d)
  • hotkeys: ensure consistent initialdelay with interval for repeat (#872) (caf1177)

Documentation

  • installation: add nightly homebrew install and upgrade guide (#878) (40dfe49)
  • make documenation richer for cli for better man generation (#879) (ddcd631)

1.41.0 (2026-05-28)

Features

  • hints,vision: make vision options fully configurable (#869) (68c590f)
  • hints: add vision detection strategy (#867) (6fe14f4)

Bug Fixes

  • hints,vision: use ScreenCaptureKit for modern macOS (#868) (785f95b)
  • reduce log noise and remove structured_logging config option (#864) (ebadd9b)
  • show output in log when exec failes in hotkey (#866) (4aa3b95)

1.40.1 (2026-05-26)

Bug Fixes

  • retrigger github action due to outage during v1.40 release (8f4800e)

1.40.0 (2026-05-26)

Features

  • scroll: add similar <mode>.app_configs with overridables (#849) (1b0de2e)

Bug Fixes

  • cli: expose missing --role and --text flag on cli (#846) (a5e61a8)
  • darwin: harden CGo callback singletons with generation-stamped slots (#862) (0ec420a)
  • darwin: protect clickState performLeftClickAtPosition (#853) (a8bdc48)
  • linux,overlay,wayland: add MAP_FAILED check after mmap in overlay buffer setup (9ebd520)
  • linux,overlay,wayland: add xkb_state_unref and xkb_context_unref to overlay destroy (9ebd520)
  • linux,overlay,wayland: embed key ring in NeruWaylandOverlay instead of file-scope singleton (9ebd520)
  • linux,overlay,x11: add null-check after calloc in x11_overlay_new (9ebd520)
  • linux,overlay: close keymap fd outside format check to prevent leak (9ebd520)
  • linux,scroll: ensure __keyup_<key> on release just like darwin variant (9ebd520)
  • prevent goroutine leak on context cancellation in processClickableNodesConcurrent (#852) (f76b4a7)
  • rename variable to ctx to avoid package shadowing (#851) (cabc51d)

Performance Improvements

  • darwin: replace layout map init busy-wait with NSCondition (#856) (4cffc9a)

Documentation

  • better and concise write-ups for docs (#848) (452785d)

1.39.0 (2026-05-23)

Features

  • hints: configurable visibility check for noise reduction (#844) (48b3ff7)
  • hints: mission control notifications and actions (#842) (2218dd2)

Bug Fixes

  • hints: ensure ctx cancellation for chaining calls (#839) (c413124)
  • hints: reverse hints label to prevent prefix cluster (#845) (7781e24)
  • preserve mode flags on mode refresh (#843) (5e63847)

Performance Improvements

  • hints: skip AX hit tests for webkit apps (#841) (3646c88)

1.38.1 (2026-05-21)

Bug Fixes

  • ensure retry to set electron and chromium attrs (#834) (a4f4047)
  • overlay: ensure modes overlay resized properly before showing (#835) (9d77d15)
  • resolve memory leaks in animations, overlays and indicators (#831) (09181b1)

Performance Improvements

  • eliminate thread explosion (#829) (052418b)
  • hints: early exit on out of bounds child on chromium or electron (#836) (cc39c82)
  • hints: optimize hint generation and filtering performance (#833) (6818af6)
  • optimize overlays memory usage (#832) (8e85dfe)

1.38.0 (2026-05-19)

Features

  • hints: add AXGenericElement to default clickable role (#810) (f7196c7)
  • hints: add neru own bundle to menubar targets (#802) (df4c515)
  • hints: add support for screen capture thumbnail (#800) (1c2146c)
  • hotkey: repeat global hotkey actions while held automatically (#817) (1e0429e)
  • scroll,cli: add --steps flag for overrides (#824) (e5cee80)

Bug Fixes

  • hints: add explicit includeOutOfBounds (#813) (b55ec1d)
  • hints: add popovers, sheets and menus into interactive leaf elements (#805) (582523b)
  • hints: allow links in textarea (#828) (6c2c919)
  • hints: better clickaction heuristic detection (#812) (8ec5b1b)
  • hints: better widget detection (#814) (9bd59cd)
  • hints: eliminate hidden elements and simplify filtering (#821) (fc57e51)
  • hints: ensure menubar elements include out of bounds (#815) (4a147b3)
  • hints: filter zero-sized elements during tree build (#825) (7853065)
  • hints: improve mission control detection (#807) (5ae21e2)
  • hints: improve notification center hints (#808) (01a670a)
  • hotkey: eliminate initial repeat delay for held-key actions (#819) (ad88403)

Performance Improvements

  • hints: add max_parallel_depth option and bump to 10 (#826) (d62d723)
  • hints: faster hints activation (#822) (0f1afcb)
  • hints: improve hint visibility checking (#818) (f2be692)
  • hints: more parallelizing for element collection (#803) (3d9480e)
  • hints: optimise AX API calls (#804) (a8476d3)
  • hints: reduce AX roundtrips plus parallel tree workers (#827) (82e0629)

1.37.0 (2026-05-13)

Features

  • add mouse action indicator (#791) (ae285d2)
  • hints: add boundary highlights for targeted elements (#793) (8d05247)
  • hints: add native PIP support for mac (#795) (0651fee)
  • hints: add simple hints placement customisation (#797) (48de8a8)

Bug Fixes

  • config: remove default launcher keybinds if mode is disabled (#788) (68040c4)
  • hints: add capability to search text on subtree (#792) (f694847)
  • hints: cap hint generation when elements exceed key combinations (#794) (0305936)

Performance Improvements

  • hints: reduce AX work during hints activation (#796) (3240e0f)

1.36.0 (2026-05-10)

Features

  • add smooth scroll animation (#779) (7050362)
  • hints,action: add cycle_hint action (#783) (aff245b)
  • hints,cli: add --search flag to show search input upon activation (#785) (cc14b02)
  • hints: add --role and --text filter flags (#772) (142940f)
  • hints: add search capability similar to homerow (#784) (bdb1046)
  • hints: add native IME text input session plus improvements (#786) (a226c54)

Bug Fixes

  • cli: properly support comma-separated values for --role and --text flags (#773) (0b6b338)
  • config: replace default launcher hotkeys on rebind (#778) (7486c19)
  • hints: ensure menubar item adhere to strictFiltering (#767) (41e9ba8)
  • hints: include AXPopover windows (#769) (7cc4b28)
  • hints: remove AXTextField from leaf roles so that finder search works (#770) (7ebaa82)
  • linux,wayland: do not fallback evdev on first grab fail, try others (#781) (83bb7d7)
  • linux,wayland: explicitly enable keyboard interactivity on overlay when evdev fallback (#780) (732f876)
  • linux,wlroots: filter out uinput virtual keyboard devices from evdev capture (#776) (4850af2)

1.35.0 (2026-05-06)

Features

  • add sleep action for reliability (#761) (f55ab47)
  • add action feed key passthrough cli command (#759) (f041f13)
  • cli: add --window flag for move_mouse command (#765) (610a80b)
  • grid,recursive_grid: add app_configs.hotkey overrides (#763) (1bbedb5)

Bug Fixes

  • allow macOS notification prompts (#753) (a593a24)
  • always run alert UI regardless of binary or bundle (#756) (36ee674)
  • cli,feed: preserve uppercase letters in action feed (#762) (aeba2bb)
  • ditch open and purely run the binary for services (#755) (1f9bd4e)
  • ensure eventtap and passthrough blacklist resolves the same (#754) (c1c7776)
  • ensure global hotkeys are canonicalized before event tap registration (#752) (6134d00)
  • strict filtering for Chromium/Electron apps (#749) (e53fea7)

Documentation

  • tips: add snippet to move window to another native space on macOS (346f892)

1.34.0 (2026-05-02)

Features

  • prompt for macOS accessibility permission on startup (#742) (2281b39)

Bug Fixes

  • use proper cert for adhoc code signing (#738) (3789ac6)

Performance Improvements

  • batch AXUIElementCopyMultipleAttributeValues (#743) (81fb53e)

Documentation

  • add missing hints.app_configs section (#744) (636ac94)

1.33.0 (2026-05-01)

Features

  • linux: add uinput scroll support as first detection layer (#731) (65a9913)
  • support sticky modifiers on supported linux backends (#719) (957ef8b)

1.32.0 (2026-04-20)

Features

  • add super and meta modifier as cmd alias (#703) (997e08a)
  • add multi-monitor support (#704) (8316f4f)
  • add NixOS module and Linux systemd support for home-manager module (#695) (c2da28c)
  • initial implementation for x11 and wlroots for wayland (#694) (af4dea7)
  • move_monitor: consolidate monitor movement and actions (#706) (9088c57)

Bug Fixes

  • allow single-row and single-column recursive grids (#684) (e9e43e6)
  • cli: add more profile information to doctor command (#686) (83dc84d)
  • hints: guard visible rows lookup against zero-count results (#689) (9f87280)
  • hints: honor app-specific clickable roles during element discovery (#692) (3ab2381)
  • hints: traverse AXHeading nodes when building the hint tree (#691) (f45689a)
  • nix: add libxi for build input (bdc47e8)
  • preserve recursive-grid animation for count-changing layer transitions on macOS (#682) (c720ecc)
  • split daemon startup by platform plus some shut down fixes (#693) (6315c8a)
  • sticky_modifier: prevent from misfiring on multi-modifier hotkey activation (#710) (f5da80a)
  • use primary modifier instead of cmd for cross platform (#701) (5e24e4a)

Documentation

  • add missing configurations that should be presented (#687) (994ed70)
  • remove trigger keyword and update home manager setup for linux (b0190ff)

1.31.0 (2026-04-04)

Features

  • config: add semantic theming and unify overlay color defaults (#676) (0ec0159)
  • config: unify color configuration with light/dark theme support (#674) (20937cd)
  • recursive_grid: add opt-in native depth transitions/animation (#678) (e1edf43)

Bug Fixes

  • add capability reporting and remove global config access (#669) (239e464)
  • anchor sticky modifiers to virtual cursor in grid modes (#671) (460bb56)
  • config: add default cursor-follow toggle for grid modes (#665) (14a0f48)
  • config: explicitly add "`" in default-config file (bc909d9)
  • config: remove tap_cooldown field (78c8c1b)
  • recursive_grid: ensure move cursor to selection when enable toggle-cursor-follow-selection (#680) (d562d67)
  • show a lightweight virtual selection pointer in hold mode (#666) (48a1c0e)
  • sticky_modifier: stabilize activation and chord handling (#667) (18f374c)
  • treat manual relative mouse moves as selection override (#663) (e3d920f)

1.30.0 (2026-03-28)

Features

  • add per-mode custom hotkeys (#633) (c23426b)
  • add support for cursor selection mode (#660) (16a7042)
  • cli: add --repeat flag to re-activate mode after action (#637) (24c6ff1)
  • cli: add scroll actions (#635) (2e5dc48)
  • config: merge hotkeys and custom_hotkeys on top of defaults instead of replacing (#647) (cc2a6d1)
  • config: support multiple actions per hotkey binding (#642) (39ed7fa)
  • hints: support app-specific hotkey overrides (#649) (e22d3ab)
  • unify in-mode bindings under custom_hotkeys and remove legacy keybinding fields (#643) (27a7c8b)

Bug Fixes

  • apply sticky modifiers to IPC-triggered click actions (#654) (09099a4)
  • cli: rename restore_cursor to restore_cursor_pos for consistency (#644) (a6044a9)
  • config: rename mode.custom_hotkeys to mode.hotkeys for consistency (#648) (ec91ac0)
  • honor recursive-grid repeat for direct actions (#641) (d464d66)
  • sticky_modifier: auto arm modifier detection after short delay (#657) (3bec95c)
  • sticky_modifier: gate auto-arm timer on nav mode with sticky modifiers enabled (#658) (ab8afbd)

Documentation

  • add sleep use cases for clicking and moving cursor (ca5ba20)

1.29.1 (2026-03-22)

Bug Fixes

  • alert: use UserNotifications framework for alert if possible (#628) (5ebadd0)
  • nix: use open with flags instead of running the binary in launch agent (#629) (ae635f8)
  • sticky_modifier: add debounce and cooldown to prevent Karabiner conflicts (#625) (9052dee)
  • sticky_modifier: emit physical key events when toggled (#627) (1a3ecb1)

1.29.0 (2026-03-21)

Features

  • cli: add docs command to open version aware docs (#617) (d4e591b)
  • scroll: add action key support to scroll mode (#616) (dc7d7b1)

Bug Fixes

  • config: allow disabling all hotkeys via empty [hotkeys] section (#611) (ced7236)
  • config: remove unnecessary defaults for exclusions (#612) (d38e5c8)
  • overlay: make label arrow looking nicer in sizing (#619) (cab1b80)
  • rename bundle binary from Neru to neru (#621) (ee93475)

Performance Improvements

  • hints: skip debounce for same-count updates and prevent stale callbacks (#615) (ed1d579)

Documentation

  • add config showcases to documentation from discussion (947077c)
  • add homebrew repo link (d26fd65)
  • add tips & tricks to documentation from discussion (bcb2301)
  • change INFO to NOTE for proper rendering on github (e65b497)
  • cli: improve readability and add more info (1f7f571)
  • config: improve readability and add missing configuration keys (9c48371)

1.28.0 (2026-03-18)

Features

  • add config onboarding flow on first launch (#600) (04cae66)
  • cli: add neru config init and neru config validate commands (#598) (e4b0b91)
  • cli: expand neru doctor into a comprehensive diagnostic tool (#603) (e140297)

Bug Fixes

  • cli: prevent duplicate error messages in CLI commands (#604) (cd7221b)
  • exit on config validation failure instead of silently continuing with defaults (#601) (41dc09d)
  • hints: clear accessibility cache before showing hints to prevent stale positions (#606) (31414f2)

1.27.1 (2026-03-16)

Bug Fixes

  • scroll: remove ctrl for pageup and pagedown in default config (#596) (02be302)
  • sticky_modifier: add tap duration threshold for sticky modifier toggle (#594) (4aba731)
  • support simultaneous modifier key taps for sticky modifiers (#592) (c902db8)

1.27.0 (2026-03-15)

Features

  • action: add --monitor flag to move_mouse --center for multi-monitor support (#579) (a2c34fb)
  • action: support --modifier flag (#581) (f51c379)
  • add modifier+action workflow for modes (#586) (16a2e71)
  • hotkeys: add support for left/right-prefixed modifiers (#582) (9914ec8)
  • passthrough: add should_exit_after_passthrough option (#575) (4f386c9)

Bug Fixes

  • ipc: replace static ProtocolVersion with build version validation (#583) (d9f4ba1)
  • make smooth cursor animation non blocking (#580) (cd818ba)
  • normalize key aliases (enter, backspace, esc) in modifier combo bindings (#588) (140cc31)
  • recursive_grid: ensure to normalise keyToCell (#565) (0f531dc)
  • recursive_grid: make autohide preview multiplier configurable (#573) (a26acf4)
  • sticky_modifier: cancel pending modifier toggle on passthrough events (#589) (2f3406c)

Documentation

  • update docs and stuffs for info and reading (#568) (e0de417)

1.26.0 (2026-03-11)

Features

  • add app icon with brand new systray icon (#546) (be8a856)
  • mode_indicator: customisable text and mode respective colors (#549) (357f9ca)
  • passthrough: refresh hints mode after modifier shortcut passes through to OS (#551) (31ba19b)
  • recursive-grid: add sub-key preview mini-grid inside each cell (#540) (19349ea)
  • recursive-grid: support individual layer customisation for cols, row, keys (#554) (75cff13)
  • support passthrough unbounded keys to the OS (#541) (47db376)
  • support mode specific exit_keys that merges with the global exit_keys (#543) (1eaed7f)

Bug Fixes

  • build: ad-hoc codesign app bundle in justfile, CI release workflow and nix (#547) (da3fe6b)
  • eventtap: prevent use-after-free by always dispatching cleanup asynchronously (#556) (277f4fa)
  • eventtap: remove 150ms enable delay for instant key capture after mode activation (#555) (8c6d0df)
  • recursive-grid: avoid center sub-key preview overlap (#558) (4daea67)
  • slim down default config and improve docs (#552) (3b48bc7)

1.25.0 (2026-03-08)

Features

  • action: add --center flag to move_mouse command (#516) (d462bbe)
  • hotkeys: support function keys F13 through F20 (#524) (5ba6fc4)
  • make backspace configurable in config for each mode (#530) (c989188)
  • overlay: implements auto detected padding and border radius labels (#526) (6f12b54)
  • recursive-grid: add optional rounded label badge backgrounds with theme-aware styling (#512) (d74c3d1)

Bug Fixes

  • centralize key mapping with unified ValidNamedKeys registry (#531) (9127b7a)
  • config: disable file logging by default (#529) (30bb9ee)
  • config: move all visual related configuration to ui section (#533) (3947c75)
  • config: propagate service config updates during hot-reload (#521) (26d1d19)
  • config: rename corner_radius to border_radius for consistency (#532) (0e14253)
  • cursor: add settling delay before cursor restore after click actions (#514) (da4de9d)
  • docs: backspace is not supported for reset_key for now (#520) (7e14d56)

1.24.0 (2026-03-06)

Features

  • add theme-aware default for label_color - Closes #489 (#491) (9d22a6e)
  • cursor: Add center_cursor_position option (#504) (32f903a)
  • implements program wide theme aware config for all colors (#500) (8201eb4)
  • stable reference keyboard layout with auto-detection and config override (#507) (c5cad50)

Bug Fixes

  • config: revamp the default colors (#505) (c8b4d99)
  • eliminate duplicate configSnapshot() in app activation path (#494) (972181b)
  • ipc: wire IPC reload through app-level config reload and fix stale config (#496) (6ce064d)
  • lifecycle: remove dead q.Style write, keep cache invalidation (#495) (315134a)
  • prevent event tap from blocking native thread and fix deadlock in callback cleanup (#509) (9b98230)
  • recursive-grid: execute action on final depth selection instead of when reaching max depth (#502) (920104d)

1.23.0 (2026-03-04)

Features

  • add auto_exit_actions config option for modes (#486) (e70f6aa)

1.22.1 (2026-03-03)

Bug Fixes

  • default reset_key to space in grid and recursive-grid modes (#481) (b39c6a9)
  • docs: need --action for command with action (0789121)

1.22.0 (2026-03-01)

Features

Bug Fixes

  • also support -c and --config for launch command (#476) (f1b890d)

1.21.4 (2026-02-28)

Bug Fixes

  • add mutex to protect indicatorConfig from concurrent access (#469) (79aecb8)
  • bridge: add mutex to protect global appWatcher from data races (#465) (7db27b8)
  • bridge: add mutex to protect global logger from data races (#464) (ec6cf07)
  • bridge: cancel pending enable block in disableEventTap (#451) (38f399a)
  • config: change default font_size to 10.0 (#449) (d387caa)
  • config: close Watch channel on context cancellation (#470) (6996684)
  • hints: preserve mode state during refresh and enable auto-activation (#454) (7a1accc)
  • infra: add mutex synchronization for eventtap adapter state transitions (#471) (56b2045)
  • lifecycle: resolve TOCTOU race in handleScreenParametersChange (#466) (bbc0ba6)
  • logger: resolve data race in global logger access (#463) (f6c4d0c)
  • overlayutil: validate generation to prevent stale callback race (#467) (9788b42)
  • recursivegrid: add screen-change handling with callback-based resize and TOCTOU guards (#468) (a6fc091)
  • scroll: add mutex synchronization for context state access (#472) (c10bcfe)

1.21.3 (2026-02-25)

Bug Fixes

  • accessibility: add pointer fast-path in Element.Equal to avoid CGo on cache hits (#438) (1a2a3f8)
  • accessibility: use nil instead of empty slice for leaf node children (#437) (a422f9a)
  • bridge: avoid temporary NSString allocation in prefix matching loops (#435) (32451f4)
  • bridge: use NSSet for O(1) lookup in NeruDrawIncrementGrid removal pass (#436) (5fb5551)
  • eventtap: replace dispatch_sync with os_unfair_lock for hotkey lookup (#433) (029b767)
  • gc: replace runtime.ReadMemStats with runtime/metrics to avoid STW pause (#439) (3c97f48)
  • grid: gate runtime.ReadMemStats behind debug log level in DrawGrid (#441) (d94227f)
  • grid: reuse Grid.Index() in drawGridIncrementalStructural instead of rebuilding maps (#445) (0ea1493)
  • hints: avoid map allocation in hintsAreStructurallyEqual on hot path (#442) (2b239bf)
  • hints: remove element caching from HintService (#444) (cb45be1)
  • hints: replace fmt.Sprintf map keys with image.Point in drawHintsIncrementalStructural (#443) (b495951)
  • overlays: cache hint labels and add drawMu to prevent use-after-free across all overlays (#434) (30243d9)
  • overlay: use dirty-rect partial redraw for match-prefix-only updates (#431) (2ca0373)
  • overlay: use system font as default, cache NSFont, and improve font resolution (#446) (5f5c08a)
  • tree: add sync.Pool for TreeNode to reduce GC pressure (#440) (b4e9290)

1.21.2 (2026-02-24)

Bug Fixes

  • accessibility: use priority queue for per-role TTL eviction in InfoCache (#422) (420ea16)
  • eventtap: use O(1) lookup table for hotkey matching (#425) (77c80fa)
  • hints: add max_depth config for accessibility tree traversal safety (#420) (4d40358)
  • hints: make parallel tree-building threshold configurable and lower default to 20 (#427) (112e6fd)
  • overlay: cache parsed hex colors to eliminate redundant parsing (#426) (82de189)
  • overlay: replace NSDictionary with typed model classes for hint and grid cell data (#423) (3d5158e)
  • replace per-node debug logs with aggregate statistics (#429) (34ead23)

1.21.1 (2026-02-23)

Bug Fixes

  • accessibility: prevent AXUIElementRef leaks by releasing tree nodes after use (#418) (fd80ec3)
  • bridge: add explicit __strong qualifiers to ObjC fields in EventTapContext struct (#417) (1809167)
  • bridge: enable ARC and fix memory management in bridge package (#416) (00ce086)
  • overlay: include size in hint dicts and use position as center directly (#415) (a931c5a)
  • overlay: switch to layer-backed rendering with Retina/multi-monitor support (#412) (77e2be5)
  • overlay: use NSPanel with non-activating style to prevent focus stealing (#414) (d04a0c4)

1.21.0 (2026-02-22)

Features

  • add configurable mode indicator overlay for every mode (#408) (3463c7e)

Bug Fixes

  • standardize overlay creation and lifecycle across components (#410) (35285c9)

1.20.0 (2026-02-20)

Features

  • recursive_grid: allow grid_cols and grid_rows instead of a fixed NxN (#404) (84c445e)
  • recursive_grid: split min_size to min_size_width and min_size_height (#405) (50ce224)
  • rename quadgrid to recursive_grid (#403) (1c251bb)
  • systray: add version-aware docs URL with fallback to main (#400) (28f3c9b)
  • use hex alpha for transparency control (#399) (50f4056)

Bug Fixes

  • replace NSWindowSharingReadWrite with NSWindowSharingReadOnly (#396) (f0774b0)

1.19.0 (2026-02-19)

Features

  • add screen share overlay hiding via config, CLI, and system tray (#390) (dad9b7a)
  • hints: add opt-in Mission Control detection with hybrid caching (#387) (b215c83)
  • quadgrid: add configurable grid size support (#393) (cb4479b)

1.18.3 (2026-02-16)

Bug Fixes

  • config: normalize fullwidth CJK characters in key comparison (#385) (123b6fd)
  • keymap: fix thread safety issues — use-after-free, MRC memory leaks, and TIS main-thread requirement (#384) (515b0af)
  • remove unused flake.lock (57363f6)

1.18.2 (2026-02-15)

Bug Fixes

  • eventtap: include Shift modifier in key callback and normalize special key strings (#379) (4c7a2b3)
  • keymap: debounce keyboard layout change notifications (#378) (b66c425)
  • keymap: derive kKeyCodeMaxPrintable from enum for robustness (#381) (b11a459)
  • keymap: generic keyboard layout support (#376) (81be0db)
  • keymap: pre-cache Shift+Caps modifier combination (#380) (965c29c)

1.18.1 (2026-02-10)

Bug Fixes

  • hint_service: optimize cache access with RWMutex and batch cleanup (#371) (d8f3e18)
  • overlayutil: release callback ID on timeout and cancel paths (#370) (314e78b)
  • state: add unsubscribe support to enabled state callbacks (#373) (6ccb54f)
  • systray: ensure NSApplication runs on main thread to prevent SIGTRAP (#375) (619848a)
  • systray: properly link to bug report and feature request on github (#367) (2a1bb38)

1.18.0 (2026-02-07)

Features

  • systray: add ability to toggle visibility of systray via config (#365) (de0fcd0)
  • systray: add submenu separator and more help links (#361) (117e86a)
  • systray: remove systray dependency with own implementation (#357) (27a21ed)
  • systray: restructure menu items and add notification for copy version (#359) (1ccdf8b)

Bug Fixes

  • systray: remove unnecessary tooltips, annoying (#363) (81ba09a)

1.17.1 (2026-02-02)

Bug Fixes

  • overlay: ensure grid borders are visible at screen edges (#355) (a0fdd77)
  • quadgrid: nicer quadgrid default border (#356) (45030c0)
  • ui: offset odd border widths for nicer grid rendering (#353) (01cddd0)

1.17.0 (2026-02-02)

Features

Bug Fixes

  • bypass input method by mapping key code directly (#346) (11bc421)
  • eventtap: resolve race conditions in lifecycle management (#348) (518ca19)

1.16.0 (2026-01-31)

Features

  • scroll: remove legacy scroll area and replace with label (#337) (34b51fd)

Bug Fixes

  • bridge: ensure overlays persist across macOS spaces (#340) (34d1933)
  • bridge: resolve overlay issue on spaces and full screen (#342) (3d347d5)
  • lifecycle: only resize overlays when need to (b78317e)

1.15.1 (2026-01-26)

Bug Fixes

  • add support for customisable exit and reset key (#334) (b945da6)

1.15.0 (2026-01-24)

Features

  • accessibility: add support for macos stage manager for hints (#330) (bed96d8)
  • add configurable mouse action refresh delay for hints mode (#324) (cffc408)
  • add mouse movement via keyboard and CLI commands (#309) (0b09be6)

Bug Fixes

  • accessibility: resolve menubar instability and race conditions (#328) (1cbe1c3)
  • hints: prevent stale hints from displaying during label refresh (#326) (8ea4154)

1.14.1 (2026-01-18)

Bug Fixes

  • action: improve mouse_down/mouse_up reliability for native macOS apps (#299) (a60bd2d)
  • improve plist with nix (#305) (84d1aeb)

1.14.0 (2026-01-08)

Features

  • simplify action mode with direct action keybindings in hints/grid mode (#295) (7531361)

1.13.0 (2026-01-08)

Features

  • implements configurable scroll keybindings (#291) (250c412)

1.12.3 (2025-12-26)

Bug Fixes

  • do not use devbox to build, set the environment manually (#281) (75ec201)

1.12.2 (2025-12-21)

Bug Fixes

1.12.1 (2025-12-12)

Bug Fixes

  • accessibility: adjust mouse click event timing to prevent in-transit clicks (#272) (2889bef)
  • add grid character validation and custom labels support (#269) (0a16068)
  • grid: fix prefixes not initialized in cached grids (#271) (01f92f4)
  • prevent empty grid state when typing invalid key sequences (#270) (b2dd915)
  • support numbers and symbols in grid and hints character configurations (#267) (6fe4513)

1.12.0 (2025-12-02)

Features

  • add devbox development environment support (#261) (7551025)
  • cli: implement services CLI for launchd management (#258) (f6e014a)
  • nix: add launchd configuration options to home-manager module (#256) (8e2e1c7)
  • overlay: implement native macOS overlay windows for grid and hints rendering (#253) (52eebb1)

Performance Improvements

  • comprehensive performance optimizations for hint generation, caching and accelsibility processing (#259) (ac62d79)

1.11.1 (2025-11-30)

Bug Fixes

  • improve unsafe pointer handling for C callback interop (#250) (50c0929)

1.11.0 (2025-11-30)

Features

  • modes: add Action and Scroll navigation modes with Mode interface (#238) (8c55ec4)
  • test: enhance integration tests with comprehensive coverage (#242) (f44b1ea)

Bug Fixes

  • resolve CLI nil pointer regression and add comprehensive tests (#244) (9a611d6)

Performance Improvements

  • implement accessibility query optimization (#245) (9ab4930)
  • implement grid rendering optimizations (#247) (dda783f)
  • implement hint filtering performance optimizations (#246) (8076df5)
  • implement memory management optimizations (#248) (f54dedc)

1.10.5 (2025-11-28)

Bug Fixes

  • config: fix app-specific hints configuration and add tests (#223) (1ca2c38)
  • overlay: clear overlay when switching from scroll to hints/grid mode (#228) (20a23ea)
  • scroll: improve responsiveness of scroll mode activation (#225) (7377a74)

Performance Improvements

1.10.4 (2025-11-27)

Bug Fixes

  • cleanup for some unused code and functions (#211) (3093084)
  • grid: ensure grid overlay style updated in reload config (#208) (c08cb2a)
  • hints: ensure hints using the configured config styles than just defaults (#209) (f7e808c)
  • logger: add consoleWriter parameter to Init for output control (#215) (6fbf809)
  • minor refactoring to ensure functions are not too long (#212) (99ccfbf)

Performance Improvements

  • overlay: optimize memory usage in drawing operations (#206) (aac6119)

1.10.3 (2025-11-26)

Bug Fixes

  • add coding standard with stricter golangci config (#196) (8ab3f3b)
  • add more test and update some existing tests (#192) (50a59af)
  • clang indent tab and format (#202) (8536bef)
  • cleanup some obvious comments and add some comments within complex functions (#203) (58f5164)
  • crash in grid bench and move all bench test to its own file (#191) (97263a3)
  • ensure tests are all with blackbox approach (#189) (33c2223)
  • make most struc private and expose getter and setter (#197) (83bdde4)
  • no magic numbers and some refactoring to adhere coding style (#200) (04433ec)
  • remove Get keywords from getter (#198) (342b0bd)
  • remove unneeded globals (#194) (4418fd3)
  • update flake to support overlays [skip ci] (#195) (cea0a6e)

1.10.2 (2025-11-25)

Bug Fixes

  • lifecycle: ensure handleScreenParametersChange will refresh overlays including state and style (#186) (883a13a)
  • logger: remove noises that doesn't bring value for debugging (#188) (c119abf)

1.10.1 (2025-11-24)

Bug Fixes

  • metrics: provide toggle to enable metrics collection, off by default (#183) (f7b6532)
  • more test to improve coverage (#179) (7b4d521)
  • remove all GetScrollableElements (#184) (5340972)
  • standardize error handling and include err113 lint (#185) (3d1888e)
  • tighten golangci lint and refactoring variables (#181) (e570663)

1.10.0 (2025-11-23)

Features

  • cli: add --action flag for hints and grid commands (#167) (d41bc99)
  • config: remove subgrid_enabled option and make subgrid always enabled (#171) (970962e)
  • implement program wide DI and initial testing suite (#175) (bf29d4e)

Bug Fixes

  • add IPC timeout with flags and 5 sec default (#155) (6e5bd24)
  • allow smooth mouse movement (#159) (63cb580)
  • config: ensure reliable reload and improve startup validation UX (#169) (8127e49)
  • do not restore cursor if switches to scroll action (#152) (d5ed1d5)
  • domain based refactoring & update comments (#157) (b5d6c96)
  • enhance codebase robustness and error handling (#165) (b3e6188)
  • ensure clean scroll context when switching mode (#163) (cd69912)
  • ensure just fmt pointing to new bridge location [skip ci] (#162) (1089e10)
  • focus on performance optimisation (#173) (74b61f4)
  • grid: move mouse to cell center when showing subgrid (#172) (bcedcd0)
  • hints: prevent cursor restoration during hint mode transitions (#170) (83922f0)
  • improve godoc and remove noises for obvious or not needed comments [skip ci] (#164) (3a3c2b2)
  • improve logging and add config dumps (#154) (bc99f53)
  • make uuid direct in go.mod (#176) (bb2bbe2)
  • modes: reset cursor state when exiting scroll mode via ESC (#174) (12f2124)
  • more tests (#177) (a019a53)
  • remove : from exec (#168) (385f2ce)
  • restructure the codebase to be more concise (#161) (a089c13)
  • use faster default smooth cursor for config (#160) (97c8af7)

1.9.0 (2025-11-16)

Features

  • implement restore cursor after escape mode (#150) (131570f)

1.8.0 (2025-11-16)

Features

  • add action cli that act on current cursor position (#126) (52aaba6)
  • add submode for action that is configurable and allow to <tab> through (#144) (770fc42)
  • allow different action colors configuration for grid, same as hints (#129) (61307c8)
  • centralize overlay into a single manager and window (#146) (70c4fbe)
  • grid based navigation mode (#111) (441192b)
  • grid: optimize for square cells across all screen types (#122) (d40d990)
  • simplify actions (#141) (49629ff)

Bug Fixes

  • add missing grid cli for various actions (#125) (c92d09e)
  • add more loggings throughout the program for better viewabilitiy (#130) (a6ab8d7)
  • allow hiding unmatched in grid (#113) (59bcca6)
  • do not clear hintOverlay when cleaning up grid (#142) (d31648f)
  • ensure backspace can successfully return back to main grid with state (#136) (ae139b1)
  • ensure different screen sizes and resolution gets the best grid (#115) (6016fce)
  • ensure grid and hint dont sleep when refresh overlays (#124) (e35c486)
  • ensure grid is clicking on absolute point, not relative points (#118) (c08b2a9)
  • ensure hints working across multi displays (#117) (29cf0cb)
  • grid: only call ResizeToActiveScreen when it is needed, not every activation (#123) (856f0b6)
  • improve ci for formatting, linting and vetting go and objc files (#149) (4d09a16)
  • improve linting with more checks (#147) (6091077)
  • improve log retention with rotation with more configurable options (#145) (87a85e7)
  • improve matched_text highlihts to only highlight the prefix text (#137) (6d6e639)
  • improve perf for grid by caching the labels plus more optim (#139) (41fc4ed)
  • improve resize callback handling for better UX (#132) (38dbdd9)
  • make actions point based instead of element based (#110) (472a390)
  • make grids more predictable than always linearly showing the labels (#131) (808ca14)
  • more improvements on linting configuration and fixes (#148) (80e0544)
  • more perf for grids and hints (#140) (013025c)
  • only use default hotkey when not configured (#143) (f6629cf)
  • react to screen changes and support extended displays for grid (#116) (1fd81c2)
  • refactoring and move domain based implementation to internals (#108) (9675949)
  • remove subgrid cell and row config, as we are fixing it to square 3x3 (#127) (56d89d2)
  • restrict keys to only available cells (#114) (d819d72)
  • restructure config and move ax related to hints section instead (#128) (a9947dc)
  • separated restore cursor for grid (#112) (f91567f)
  • slightly improve memory for overlay.m (#138) (84bd351)
  • update default values (#119) (7a946bb)

1.7.1 (2025-11-09)

Bug Fixes

  • ensure less memory leaks and crashes in objc (#106) (75f521d)

1.7.0 (2025-11-09)

Features

  • implements triple click and simple drag and drop with mouse down and mouse up on a target (#102) (ee89ce1)
  • more robust cli and IPC handling + flexibility in hotkey mappings (#103) (e1eefbe)

Bug Fixes

  • add version copy for systray (#92) (2e7242b)
  • allow <tab> key to toggle between scroll hint and scroll mode (#87) (5fa4c15)
  • allow <tab> to switch between hints and hints_action (#93) (44ef64e)
  • allow scroll hints styles to be configurable (#88) (84e087c)
  • auto mouse_up calls after mouse_down (#104) (f789391)
  • chill shouldIncludeElement checks (#96) (3141ace)
  • ensure status command shows the right message when using default (#91) (4873616)
  • ensure to init the same style for default scrol hints (#89) (0e0fc86)
  • implements IsMissionControlActive to only show hints for mission control when active (#95) (9ac2295)
  • make scroll configuration easier and put everything in pixel (#90) (401da6b)
  • more refactor for main package (#99) (ed1c635)
  • nicer color for matched texts in hint (#100) (ba7e3c9)
  • refactor main.go and split them out, also update build command (#98) (2e98331)
  • simpler scroll mechanism (#85) (edd608f)
  • vertical action menu without magic heuristic numbers (#101) (9c2405d)
  • wrong key for scroll_step_full in default config [skip ci] (#94) (c15e203)

1.6.0 (2025-11-07)

Features

  • add more actions to systray (#83) (af3e11d)
  • add more actions to systray menu for Neru (#76) (5c121db)
  • allow to bypass heuristic checks for scrollable and clickable (#81) (60af71b)
  • also allow per-app ignore checks (2803d0d)
  • make scroll areas dynamic with available areas (#79) (bded86e)
  • revamp hotkey to support custom bash script and IPC calls (#82) (09633de)
  • split out electron, chromium and firefox supports (#74) (6b842f6)
  • use app watcher to enable electron accessibility (#73) (2b9e0e5)

Bug Fixes

  • add conditional parallelize for tree building (#72) (21c06aa)
  • always force to US keyboard (#75) (a76b29f)
  • avoid memory leak and proper cleanups (#80) (1845299)
  • centralize app watcher into single instance (#78) (b81a7c0)
  • move timer based watcher for hotkeys registration to app watcher (#77) (ae4e6cd)
  • removing maxDepth checks (#70) (53e0557)

1.5.1 (2025-11-06)

Bug Fixes

  • add defaults to the config to support launch on bundle start (#67) (30049e0)
  • root cmd to auto launch when in app bundle (#65) (0af1e45)

1.5.0 (2025-11-06)

Features

  • allow configurable additional targets for menubar by bundle IDs (#60) (bca0da2)
  • implement bundle to work locally (#62) (7f18d45)

Bug Fixes

  • add cache for elements and improve tree walking duration (#58) (22b1fa3)
  • allow 3 characters for maxHints (#63) (641c2b9)
  • no need to check isEnabled in go code (#59) (ce753d9)
  • optimize tree building and element finding with parallelization and simple ttl caching (#54) (008f827)
  • remove isclickable and isscrollable proxy and call it directly (#56) (e94de63)
  • remove configurable maxHints and derive it from hintChars (#61) (3745e68)
  • replace complex visibleChildren logic with AXVisibleRow detection (#57) (ac896fb)

1.4.0 (2025-11-04)

Features

  • add notification center hints (configurable) (#49) (5e28692)
  • update branding to neru (#52) (7f9922b)

Bug Fixes

  • better heuristic for clickable detection (#51) (f8767af)

1.3.0 (2025-11-03)

Features

  • allow configuration for restore cursor position (#47) (d5e5d87)
  • new action to move mouse to a position (#46) (9efc9eb)

Bug Fixes

  • chromium support fix (#43) (f8c8463)
  • replace all click actions to use actual mouse click rather than accessibility (#45) (7ebfaef)

1.2.0 (2025-11-03)

Features

  • add occlusion detection with Dock exception (#34) (1d4146f)

Bug Fixes

  • apply heuristic checks for clickable elements (#38) (f6be55d)
  • dynamically add menubar and dock roles when enabled (#37) (ab53a03)
  • properly check for electron with dynamic maxDepth (#36) (a10bdf7)

1.1.1 (2025-11-02)

Bug Fixes

  • ensure dock getting hints and does not crash the program (#28) (b572f58)
  • improve large list traversal with progressive checks (#30) (5c3a0e3)
  • move around config keys to places that make more sense (#31) (a929ec6)
  • standardize rect query and do not consider padding for bounds (#32) (fff37f5)

1.1.0 (2025-11-02)

Features

Bug Fixes

  • auto deregister hotkeys when focused app is excluded (#26) (b5811ef)
  • ensure we can activate other modes when in a mode (#21) (5f8e29e)
  • make action hints style configurable to be visually difference (#22) (8510d03)
  • remove clickable role injection (#19) (707eb8d)
  • remove numeric hint, feels useless (#24) (8db6945)

1.0.3 (2025-11-01)

Bug Fixes

1.0.2 (2025-11-01)

Bug Fixes

  • allow to unset global hotkeys (#10) (a0fc0bf)
  • ensure correct config exposes to status command (#8) (f2e3f1e)
  • remove reload config (#11) (a493743)
  • remove root run and requires launch command to start daemon (#12) (efbf00a)

1.0.1 (2025-11-01)

Bug Fixes

  • ensure action to run with cgo enabled (#6) (0963c66)
  • ensure checking from ./bin instead of ./build (#4) (8ee6942)

1.0.0 (2025-11-01)

Features

  • actually implement middle click (3783a60)
  • add ci (#1) (0aab5c0)
  • add hint support for dock and menubar (7c08d53)
  • allow additional clickable roles in config (f893bb4)
  • better hints (4685a7f)
  • init project with implementation (43d255e)
  • initial try to support electron (86db6f7)
  • more hint modes (3badbbb)
  • nicer action hints (2a712b0)
  • nicer hint with arrow (e83c5b8)
  • only check visible child for ax (2c1252b)
  • support -v and --version (ba29ea1)
  • support backspace to go back during hint mode (8399942)
  • support global and per-app ax roles (677e1c4)
  • switch to cobra-cli with IPC socket for normal actions (958989e)

Bug Fixes

  • actually properly support chrome and electron (5f6ec2d)
  • add fallback and validation for empty hint_characters (36b8c64)
  • configurable roles for scroll and hint (735c98c)
  • ensure config for hint styles are passed through (8679355)
  • ensure event loop runs in main thread (6826fdb)
  • ensure to flush event after clicks (cb1d5ab)
  • explicit validation for scrollAreaByNumber (bdbce7f)
  • fallback to actual click if press action failed (e186bb1)
  • make matched hint color text configurable (fd0980f)
  • make sure ctrl-c actually kills the program (a566cf9)
  • more logs for additional accessibility (407f992)
  • refactor scroll magic numbers to be constants (521df2a)
  • remove escape mapping (a795e2b)
  • remove action mapping from config (6974c7d)
  • remove stupid animations (97a390c)
  • remove unneeded smoothscroll function (fb77bdc)
  • remove unused config (23df329)
  • some improvement for pre-production (b0e5a79)
  • sort of working scroll mechanism (cd4376a)
  • support 3 characters hint without clashes (7120ded)