Skip to content

feat(tray): tray icon and menu in a non-UIAccess WindTray.exe (#291) - #292

Merged
Maxaubert merged 7 commits into
mainfrom
feat/291-tray-process
Sep 29, 2026
Merged

Maxaubert merged 7 commits into
mainfrom
feat/291-tray-process

Conversation

@Maxaubert

@Maxaubert Maxaubert commented Sep 29, 2026 •

Copy link
Copy Markdown
Owner

Closes #291. Closes #290 (its band-switch branch is dropped unmerged).

What

The tray icon and menu move out of Wind.exe into a new helper, WindTray.exe, which runs WITHOUT UIAccess. A UIAccess process's popup menu stacks above the magnified cursor and above the Snipping Tool overlay; an ordinary process's menu does not. The menu itself looks and acts exactly as before.

  • src/tray_ipc.h (pure, doctested): the shared block Local\Wind_TrayState_v1 with the status (level, engine, panning), the frame-pacing ring and the menuOpen flag.
  • src/tray_host.cpp: Wind creates the block and starts WindTray with ShellExecuteExW + --wind-pid, restarting it if it dies (at most 3 launches a minute). A tray that dies with the menu open cannot leave the cursor re-park suspended.
  • src/tray_app/: the helper. Single instance (Local\Wind_Tray, waits out the old tray on a model relaunch), re-adds the icon on TaskbarCreated, exits and removes the icon when its Wind exits. Settings/Quit (quit event)/Profiles, with an engine-changing profile relaunching Wind.exe from its own folder.
  • The dead diagnostics-balloon plumbing is removed (nothing posted it).
  • Packaging: build.bat (tray target, built by app/uiaccess, plain manifest), installer install/uninstall/upgrade stop, local signing, release signing, uiaccess_setup.ps1, installer_check.ps1.
  • Docs: CLAUDE.md (three binaries), architecture 01/02/08/11, README.
  • Version 0.11.2.

Verified

  • Unit tests pass (348 on this branch, 358 on the combined test build). build.bat check, the app build and the installer compile are green. The installer check's only failure is the missing WindUA.exe, which only exists after a full release.ps1 run.
  • Deployed signed build: Wind.exe TokenUIAccess=1, WindTray.exe TokenUIAccess=0. Killing WindTray gets it restarted by Wind within about 10 ms.
  • Owner field test on the combined build (colour filters + Tracking follows the caret while scrolling (no key pressed) #289 + this branch): "works fine".
  • Review workflow found 4 issues: local signing skipped WindTray, an unsafe supervisor stop, a misleading log, and the check target missing the tray sources. All 4 are fixed in the last commit.

Unsigned release: setup signs the binaries on each PC as before (local-sign.ps1 now covers WindTray.exe too).

🤖 Generated with Claude Code

https://claude.ai/code/session_01KPUNAWcwghXdHCApcKKjSG

Maxaubert and others added 7 commits September 29, 2026 20:47
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KPUNAWcwghXdHCApcKKjSG
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KPUNAWcwghXdHCApcKKjSG
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KPUNAWcwghXdHCApcKKjSG
… honest log, check target (#291)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KPUNAWcwghXdHCApcKKjSG
@Maxaubert
Maxaubert merged commit dcf503c into main Sep 29, 2026
1 check passed
@Maxaubert
Maxaubert deleted the feat/291-tray-process branch September 29, 2026 19:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Move the tray icon and menu into a normal (non-UIAccess) helper process Cursor goes under Wind's own tray menu

1 participant