1.42.0 (2026-05-30)
- ensure screen capture permission flow consistency (#875) (920d85d)
- hotkeys: ensure consistent initialdelay with interval for repeat (#872) (caf1177)
- installation: add nightly homebrew
installandupgradeguide (#878) (40dfe49) - make documenation richer for cli for better man generation (#879) (ddcd631)
1.41.0 (2026-05-28)
- hints,vision: make vision options fully configurable (#869) (68c590f)
- hints: add
visiondetection strategy (#867) (6fe14f4)
- hints,vision: use
ScreenCaptureKitfor modern macOS (#868) (785f95b) - reduce log noise and remove
structured_loggingconfig option (#864) (ebadd9b) - show
outputin log whenexecfailes in hotkey (#866) (4aa3b95)
1.40.1 (2026-05-26)
- retrigger github action due to outage during v1.40 release (8f4800e)
1.40.0 (2026-05-26)
- cli: expose missing
--roleand--textflag 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_FAILEDcheck after mmap in overlay buffer setup (9ebd520) - linux,overlay,wayland: add
xkb_state_unrefandxkb_context_unrefto overlay destroy (9ebd520) - linux,overlay,wayland: embed key ring in
NeruWaylandOverlayinstead 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)
1.39.0 (2026-05-23)
- hints: configurable visibility check for noise reduction (#844) (48b3ff7)
- hints: mission control notifications and actions (#842) (2218dd2)
- 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)
1.38.1 (2026-05-21)
- 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)
- 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)
- hints: add
AXGenericElementto 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
--stepsflag for overrides (#824) (e5cee80)
- 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)
- hints: add
max_parallel_depthoption 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)
- 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)
- 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)
1.36.0 (2026-05-10)
- add smooth scroll animation (#779) (7050362)
- hints,action: add
cycle_hintaction (#783) (aff245b) - hints,cli: add
--searchflag to show search input upon activation (#785) (cc14b02) - hints: add
--roleand--textfilter flags (#772) (142940f) - hints: add
searchcapability similar to homerow (#784) (bdb1046) - hints: add native IME text input session plus improvements (#786) (a226c54)
- cli: properly support comma-separated values for
--roleand--textflags (#773) (0b6b338) - config: replace default launcher hotkeys on rebind (#778) (7486c19)
- hints: ensure menubar item adhere to strictFiltering (#767) (41e9ba8)
- hints: include
AXPopoverwindows (#769) (7cc4b28) - hints: remove
AXTextFieldfrom 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)
- add
sleepaction for reliability (#761) (f55ab47) - add action feed key passthrough cli command (#759) (f041f13)
- cli: add
--windowflag formove_mousecommand (#765) (610a80b) - grid,recursive_grid: add
app_configs.hotkeyoverrides (#763) (1bbedb5)
- 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
openand 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)
- tips: add snippet to
move windowto another native space on macOS (346f892)
1.34.0 (2026-05-02)
1.33.0 (2026-05-01)
- linux: add
uinputscroll support as first detection layer (#731) (65a9913) - support sticky modifiers on supported linux backends (#719) (957ef8b)
1.32.0 (2026-04-20)
- add
superandmetamodifier ascmdalias (#703) (997e08a) - add multi-monitor support (#704) (8316f4f)
- add NixOS module and Linux systemd support for home-manager module (#695) (c2da28c)
- initial implementation for
x11andwlrootsfor wayland (#694) (af4dea7) - move_monitor: consolidate monitor movement and actions (#706) (9088c57)
- allow single-row and single-column recursive grids (#684) (e9e43e6)
- cli: add more profile information to
doctorcommand (#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
primarymodifier instead ofcmdfor cross platform (#701) (5e24e4a)
- add missing configurations that should be presented (#687) (994ed70)
- remove
triggerkeyword and update home manager setup for linux (b0190ff)
1.31.0 (2026-04-04)
- 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)
- 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_cooldownfield (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)
- 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)
- apply sticky modifiers to IPC-triggered click actions (#654) (09099a4)
- cli: rename
restore_cursortorestore_cursor_posfor consistency (#644) (a6044a9) - config: rename
mode.custom_hotkeystomode.hotkeysfor 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)
- add
sleepuse cases for clicking and moving cursor (ca5ba20)
1.29.1 (2026-03-22)
- alert: use UserNotifications framework for alert if possible (#628) (5ebadd0)
- nix: use
openwith 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)
- cli: add docs command to open version aware docs (#617) (d4e591b)
- scroll: add action key support to scroll mode (#616) (dc7d7b1)
- 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
Nerutoneru(#621) (ee93475)
- 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)
- add config onboarding flow on first launch (#600) (04cae66)
- cli: add
neru config initandneru config validatecommands (#598) (e4b0b91) - cli: expand neru doctor into a comprehensive diagnostic tool (#603) (e140297)
- 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)
- scroll: remove
ctrlfor 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)
- action: add
--monitorflag to move_mouse--centerfor multi-monitor support (#579) (a2c34fb) - action: support
--modifierflag (#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_passthroughoption (#575) (4f386c9)
- 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)
1.26.0 (2026-03-11)
- 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
passthroughunbounded keys to the OS (#541) (47db376) - support mode specific
exit_keysthat merges with the globalexit_keys(#543) (1eaed7f)
- 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)
- action: add --center flag to move_mouse command (#516) (d462bbe)
- hotkeys: support function keys F13 through F20 (#524) (5ba6fc4)
- make
backspaceconfigurable in config for each mode (#530) (c989188) - overlay: implements auto detected
paddingandborder radiuslabels (#526) (6f12b54) - recursive-grid: add optional rounded label badge backgrounds with theme-aware styling (#512) (d74c3d1)
- centralize key mapping with unified ValidNamedKeys registry (#531) (9127b7a)
- config: disable file logging by default (#529) (30bb9ee)
- config: move all visual related configuration to
uisection (#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:
backspaceis not supported forreset_keyfor now (#520) (7e14d56)
1.24.0 (2026-03-06)
- add theme-aware default for label_color - Closes #489 (#491) (9d22a6e)
- cursor: Add
center_cursor_positionoption (#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)
- 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)
1.22.1 (2026-03-03)
- default reset_key to space in grid and recursive-grid modes (#481) (b39c6a9)
- docs: need
--actionfor command with action (0789121)
1.22.0 (2026-03-01)
1.21.4 (2026-02-28)
- 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)
- 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)
- 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)
- 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)
1.20.0 (2026-02-20)
- recursive_grid: allow
grid_colsandgrid_rowsinstead of a fixed NxN (#404) (84c445e) - recursive_grid: split
min_sizetomin_size_widthandmin_size_height(#405) (50ce224) - rename
quadgridtorecursive_grid(#403) (1c251bb) - systray: add version-aware docs URL with fallback to main (#400) (28f3c9b)
- use hex alpha for transparency control (#399) (50f4056)
1.19.0 (2026-02-19)
- 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)
- 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)
- 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)
- 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 reportandfeature requeston github (#367) (2a1bb38)
1.18.0 (2026-02-07)
- systray: add ability to toggle visibility of systray via config (#365) (de0fcd0)
- systray: add submenu separator and more help links (#361) (117e86a)
- systray: remove
systraydependency with own implementation (#357) (27a21ed) - systray: restructure menu items and add notification for copy version (#359) (1ccdf8b)
1.17.1 (2026-02-02)
- 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)
- 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)
- 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)
1.15.0 (2026-01-24)
- 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)
- 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)
- 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)
1.13.0 (2026-01-08)
1.12.3 (2025-12-26)
1.12.2 (2025-12-21)
1.12.1 (2025-12-12)
- 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)
- 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)
- comprehensive performance optimizations for hint generation, caching and accelsibility processing (#259) (ac62d79)
1.11.1 (2025-11-30)
1.11.0 (2025-11-30)
- modes: add Action and Scroll navigation modes with Mode interface (#238) (8c55ec4)
- test: enhance integration tests with comprehensive coverage (#242) (f44b1ea)
- 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)
- 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)
1.10.4 (2025-11-27)
- 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)
1.10.3 (2025-11-26)
- 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
Getkeywords from getter (#198) (342b0bd) - remove unneeded globals (#194) (4418fd3)
- update flake to support overlays [skip ci] (#195) (cea0a6e)
1.10.2 (2025-11-25)
- lifecycle: ensure
handleScreenParametersChangewill 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)
- 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
err113lint (#185) (3d1888e) - tighten golangci lint and refactoring variables (#181) (e570663)
1.10.0 (2025-11-23)
- 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)
- 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)
1.8.0 (2025-11-16)
- add
actioncli 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)
- 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
ResizeToActiveScreenwhen 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)
1.7.0 (2025-11-09)
- implements
triple clickand simpledrag and dropwith mouse down and mouse up on a target (#102) (ee89ce1) - more robust cli and IPC handling + flexibility in hotkey mappings (#103) (e1eefbe)
- 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
shouldIncludeElementchecks (#96) (3141ace) - ensure
statuscommand shows the right message when using default (#91) (4873616) - ensure to init the same style for default scrol hints (#89) (0e0fc86)
- implements
IsMissionControlActiveto 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.goand 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_fullin default config [skip ci] (#94) (c15e203)
1.6.0 (2025-11-07)
- 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)
- 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)
- 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)
- allow configurable additional targets for menubar by bundle IDs (#60) (bca0da2)
- implement bundle to work locally (#62) (7f18d45)
- 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
isclickableandisscrollableproxy and call it directly (#56) (e94de63) - remove configurable maxHints and derive it from
hintChars(#61) (3745e68) - replace complex
visibleChildrenlogic withAXVisibleRowdetection (#57) (ac896fb)
1.4.0 (2025-11-04)
- add notification center hints (configurable) (#49) (5e28692)
- update branding to
neru(#52) (7f9922b)
1.3.0 (2025-11-03)
- allow configuration for restore cursor position (#47) (d5e5d87)
- new action to move mouse to a position (#46) (9efc9eb)
- 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)
- 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)
- 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)
- 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)
1.0.2 (2025-11-01)
- allow to unset global hotkeys (#10) (a0fc0bf)
- ensure correct config exposes to
statuscommand (#8) (f2e3f1e) - remove reload config (#11) (a493743)
- remove root run and requires
launchcommand to start daemon (#12) (efbf00a)
1.0.1 (2025-11-01)
- ensure action to run with
cgoenabled (#6) (0963c66) - ensure checking from ./bin instead of ./build (#4) (8ee6942)
- 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
-vand--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)
- 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-cactually kills the program (a566cf9) - more logs for additional accessibility (407f992)
- refactor scroll magic numbers to be constants (521df2a)
- remove
escapemapping (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)