Skip to content

v2.21.3

Choose a tag to compare

@haxllo haxllo released this 28 Sep 14:29
· 361 commits to master since this release

Search, icon, and watcher reliability

This release makes everyday searching feel steadier: results stay visible during background index work, icons arrive sooner without changing their appearance, and filesystem recovery is less likely to stall or lose track of changes.

What changed

  • Steadier search results: Temporary index or lock contention no longer clears a valid result list while a newer query is still being processed.
  • Faster cold icons: Visible icons are decoded first, background decoding uses multiple workers, and icon updates send only newly decoded images.
  • Packaged-app icons: Store-app install locations are resolved natively and cached, avoiding repeated slow lookup work.
  • Watcher recovery: Directory-change overflow now triggers a controlled full resync instead of blocking watcher processing.
  • Hover rendering: Row hover no longer briefly disturbs text rendering.
  • Post-update startup: Updating no longer launches Nex twice.

Performance

  • Visible-first icons: The first eight result icons are prioritized before below-the-fold icons.
  • Parallel decoding: Cold icon extraction uses up to four background workers.
  • Smaller icon updates: Icon messages contain newly decoded images rather than re-encoding the complete icon snapshot.
  • Cached package locations: Repeated packaged-app icon lookups reuse validated install locations.

Bug Fixes

  • Empty search flashes: Older empty results can no longer overwrite newer populated results while typing.
  • Watcher overflow: Zero-byte directory-change overflow is now treated as lost journal state and forces recovery.
  • Repeated resync storms: Concurrent full-index resync requests are collapsed into a single background operation.
  • Stale watcher updates: Events from an invalidated filesystem batch are discarded during recovery.
  • Update restart: Only the updater restarts Nex after installation; the installer no longer starts a second runtime during updates.
  • Hover text glitch: Redundant selection updates and animated row-background transitions were removed.
  • CI pnpm setup: CI now uses the repository-pinned pnpm version instead of specifying a conflicting version.

Architecture

  • Strict WebView messages: Overlay and settings messages use typed schemas, reject malformed or oversized payloads, and reject unknown actions.
  • Asynchronous recovery: Filesystem resync work no longer blocks filesystem-event consumption.
  • Deterministic icon ordering: Parallel icon decoding preserves visible-row order before delivery.
  • CI release validation: CI now builds both release binaries and verifies their expected output paths.

Known issue

  • Start-menu focus recovery: After opening Start, pressing the Nex hotkey, closing Start, and pressing the hotkey again, the panel can remain visible while typing still requires a manual click. Restarting Nex clears it. Tracked in docs/issues/start-menu-focus-loss.md.

Commit Log

  • ba81a56 fix(updater): avoid duplicate post-update launch
  • b0ea9e0 fix(ui): prevent hover text glitch
  • 0e3f4eb chore:notes
  • 4af5f89 Harden WebView IPC: typed strict deserialization for overlay and settings
  • 8034d26 fix(search): eliminate empty-flash paths with snapshot reads and generation guards
  • c56280c fix(ipc): bound row index, allow-list actions, require payload values
  • cb2fc18 fix(discovery): last-wins watcher coalescing, overflow resync, Everything id match
  • 011d619 fix(icons): swap cold icons without pop-in blink
  • dc6bda1 fix(icons): decode first-query viewport inline, keep icons warm
  • 4cda3dc fix(icons): dedup decodes, drop stale tail without reprocessing
  • c288e19 fix(icons): peek stale-tail slot so newer batches keep their tail
  • 44200a0 fix(runtime): prevent watcher and icon stalls
  • 659f940 fix(runtime): stabilize focus recovery and accelerate icons
  • 2620183 merge: integrate icon performance and focus recovery
  • 57e0245 ci: harden Windows test workflow
  • 00af25d ci: use repository pnpm version

Binary