github y3owk1n/neru v1.57.0

5 hours ago

1.57.0 (2026-10-04)

This release makes Neru lighter on macOS. Overlays no longer keep a screen-sized bitmap, posted mouse and key events no longer leak, and the grid opens faster. Logs are quieter, read as one line per entry on the console, and no longer carry hint labels, keys or window titles. Hints gain --exit-on-unmatched, and per-mode hotkeys match however you order the modifiers.

Migration Guide

Warning

Every valid config still loads, but two behaviours change.

The console log is one line per entry instead of tab-separated JSON fields.
A script that parses the daemon's console output needs updating. The log file written when file logging is on is still JSON.

# Before
2026-10-03T14:02:11.482+0800	INFO	eventtap/tap.go:88	mode activated	{"mode": "hints", "elapsed": "3.1ms"}

# After
2026-10-03 14:02:11.482+08:00  INFO app.eventtap: mode activated mode=hints elapsed=3.1ms

info logs less, and some messages are renamed.
info now covers daemon start and stop, config loads and reloads, and mode activation and exit. Per-event lines moved to debug. ERROR now means a failure Neru could not recover from, and WARN one it worked around. Failed to get clickable elements is now Failed to show hints, and Secure input is enabled, blocking mode activation is now Mode activation refused, with the reason in its error field. On macOS, native messages go to Neru's log at your configured level instead of the system log, so Console.app no longer shows them.


Hints

  • --exit-on-unmatched closes hints on a key that matches no label. Before, a stray key reset the typed input and left the overlay up. It exits like Escape, so --on-exit steps do not run
[hotkeys]
"Primary+Shift+Space" = "hints --exit-on-unmatched"

Hotkeys

  • Per-mode hotkeys match any modifier order. "Primary+Shift+C" and "Shift+Primary+C" now bind the same key in every mode table. On Linux, a binding under [recursive_grid.hotkeys] written in the other order did nothing and the chord leaked to the focused app. Global hotkeys already worked this way

Logs

  • Logs no longer carry private content. Typed hint labels, keys pressed in a mode, element and window titles, and full action strings, which can hold shell commands, are gone from every level
  • The console log shows a fixed-width level, the subsystem, the message and key=value fields. On a terminal, the level is colored and the subsystem bold
  • Overlay draw failures that repeat on every frame warn once per streak, as does a full input queue on Linux and Windows

macOS

  • Overlays use far less memory. Each badge, label and indicator draws in a small layer of its own instead of one screen-sized bitmap, which macOS kept after the overlay hid. Memory stays low while overlays are up and drops back once they hide
  • The grid opens faster. Opening the grid and the first keystroke in it both stall the main thread for much less time. The first open after launch builds the grid's layers and is a little slower, and every later open reuses them
  • Memory no longer grows with use. Every mouse move, click, drag, typed key and posted modifier left an object behind for as long as the daemon ran, which added up fastest with smooth cursor on. Memory now stays flat
  • Overlays come back on every Space after a fullscreen video. With an overlay open while a video was fullscreen, exiting fullscreen left overlays showing on one Space only until Neru restarted. The repair now takes effect on the first try
  • Request Permission no longer deletes a working Accessibility grant. At login, Neru can briefly read "not trusted" and show the startup alert. Clicking the button used to reset a grant that was still intact. Neru now checks again first and skips the reset
  • Grid label characters sit where the font places them. Characters in kerned pairs used to sit slightly off. The first grid render is also faster

Windows

Note

Windows implementations are mainly contributor driven, feel free to help improving it!

  • A hidden overlay gives back its memory. A full-screen overlay used to keep its screen-sized drawing surface after it hid. Small indicator badges, which show and hide constantly, keep theirs

Features

  • hints: add exit-on-unmatched flag to dismiss overlay on unmatched key (#1718) (1c47ad5)

Bug Fixes

  • accessibility: skip tccutil reset when access is already granted (#1721) (547ece3)
  • darwin,overlay: place grid label characters where the font puts them (#1727) (519a693)
  • darwin: ensure autorelease on posted mouse and key event (#1730) (a845c1a)
  • darwin: restore overlays on every Space after a fullscreen video (#1729) (99df1e0)
  • modes: sort per-mode hotkey lookup with consistent modifier orders (#1734) (fac8776)

Performance Improvements

  • darwin,overlay: improve overlay memory and faster activation (#1726) (cca76da)
  • windows,overlay: release hidden overlay surfaces (#1728) (0388561)

Improvements

Don't miss a new neru release

NewReleases is sending notifications on new releases.