Skip to content

v2.9.0 — Elevated helper, packaging overhaul, installer flash elimination

Choose a tag to compare

@haxllo haxllo released this 29 Jul 15:59
· 825 commits to master since this release

Changelog (38 commits since v2.8.1)

Bug Fixes

  • Helper crash loop: ConnectNamedPipe success check was inverted — helper exited immediately on first connect. Fixed.
  • Tray quit deadlock: Pipe reader thread joined in Drop — blocked forever on BufReader::lines(). Changed to detach.
  • Helper binary casing: nex-helper.exe renamed to NexHelper.exe for readable Task Manager display.
  • Scheduled task stale path: ensure_helper_task() now queries actual command path via PowerShell and recreates on mismatch.
  • Installer flash: Eliminated 3 CLI spawns (--ensure-config, --set-launch-at-startup) — replaced with direct registry writes and taskkill. StopNexRuntime() guarded behind IsNexInstalled().
  • Non-Win hotkey hide: Chromium's WH_KEYBOARD_LL hook ran before ours and ate key events. Fixed with dual detection path: hook when hidden, WM_INPUT when visible.
  • Win key stuck-down: Key-up was eaten → GetAsyncKeyState(VK_LWIN) stayed TRUE → pressing "e" opened Explorer. Fixed by passing key-up through.

Performance

  • Just-in-time helper: Helper no longer runs at boot. Spawned on-demand via scheduled task when hotkey starts, exits when nex exits (process handle in MsgWaitForMultipleObjects).
  • UAC elimination: ShellExecuteExW(runas) replaced with scheduled task — zero UAC prompts after first-time task creation.

Architecture

  • Elevated helper: New apps/helper workspace member runs at High IL via scheduled task. Handles SetForegroundWindow from elevated windows (Task Manager, Settings).
  • Win key suppression: RIDEV_NOHOTKEYS at RIT level replaces SendInput(0xE8) race — Start menu reliably suppressed.
  • Packaging: All 6 scripts updated to bundle NexHelper.exe. Inno Setup installer uses registry for startup registration. ForceStopRuntimeByPath uses taskkill instead of PowerShell.

Commit Log

  • 734bd24 chore: bump version to 2.9.0
  • b281912 docs: add installer flash issue to ISSUES.md
  • bd6c0f9 installer: eliminate all process spawn flashes; taskkill instead of PowerShell
  • 1b36023 installer: eliminate CLI flashes — use registry for startup, no nex spawns during install
  • 0ee0ca3 packaging: add NexHelper.exe to release/install/update/uninstall workflows
  • ed77ffe ensure_helper_task: recreate on binary path change; add version info
  • f2598f0 rename helper binary to NexHelper.exe
  • d8e9991 fix: detach pipe reader thread instead of joining to prevent quit deadlock
  • 0e865d8 fix(helper): inverted ConnectNamedPipe success check caused helper to exit immediately
  • e75a3c2 chore: remove unused SetForegroundWindow raw extern (windows-sys used instead)
  • d5e7df6 fix: helper does AttachThreadInput + AllowSetForegroundWindow + SetForegroundWindow from High IL
  • 87c0eab fix: swap event creator from helper (High IL) to nex (Medium IL)
  • 23e2b40 fix: correct windows-sys import paths for WAIT/CloseHandle/WM_QUIT
  • 6908864 fix: named event nex→helper for High IL SetForegroundWindow
  • 97ee9fe fix(helper): fix schtasks quote escaping, use NexHelperV2 task name, manual-only trigger
  • ff6a4df feat(helper): replace ShellExecuteExW(runas) with scheduled task — no UAC on respawn
  • 6e5b7ef fix(helper): remove useless SetForegroundWindow (window hidden), fix OnceLock null cache
  • 6ee6a6d fix: helper SetForegroundWindow directly on overlay via FindWindowW
  • e5ec0b9 fix: helper WM_NEX_WAKE must fall through to process HOTKEY_FIRED
  • 6e0af84 feat: elevated helper for Win key hotkey + Task Manager focus fix
  • a537458 feat: elevated helper for hotkey detection (fixes UIPI Task Manager issue)
  • 9a39e88 fix: multi-layer hotkey detection + RegisterHotKey fallback for Task Manager
  • 88573e7 fix non-Win hotkey not hiding (Chromium WH_KEYBOARD_LL intercept)
  • a919c71 docs: update ISSUES.md with final Win key fix (RIDEV_NOHOTKEYS + key-up passthrough)
  • d4f7897 fix Win key stuck-down after overlay hide (GetAsyncKeyState corruption)
  • 7d460d5 perf: remove focus-sink window — obsolete since RIDEV_NOHOTKEYS handles Start
  • fa67974 fix: detect Win key via raw input WM_INPUT when RIDEV_NOHOTKEYS blocks WH_KEYBOARD_LL
  • 25217bd perf: suppress Win-key Start via RIDEV_NOHOTKEYS + upgrade windows-sys

Binary