Skip to content

Improve Windows desktop integration - #914

Draft
Lododizzle wants to merge 4 commits into
jamiepine:mainfrom
Lododizzle:agent/windows-desktop-integration
Draft

Improve Windows desktop integration#914
Lododizzle wants to merge 4 commits into
jamiepine:mainfrom
Lododizzle:agent/windows-desktop-integration

Conversation

@Lododizzle

@Lododizzle Lododizzle commented Jul 18, 2026

Copy link
Copy Markdown

What changed

  • adds a native Tauri system tray with left-click restore and Open/Quit actions
  • hides the main window to the tray instead of terminating on close
  • adds Start, Restart, and Stop controls for the bundled local backend in Settings > General
  • detects sidecar readiness through the Voicebox /health endpoint in addition to console output
  • prevents third-party Windows toolchains from shadowing the current system VC++ runtime during PyInstaller builds
  • builds and bundles the voicebox-mcp shim in the local Windows build recipe
  • falls back to hoisted workspace dependencies when Windows cannot follow Bun's isolated-install symlinks

Why

The Windows package could be built and run natively, but it lacked normal background-app behavior and visible lifecycle controls for its bundled server.

Two packaging failures also affected local Windows builds:

  1. The Windows sidecar uses PyInstaller --noconsole, which redirects stdout/stderr to NUL, while the Tauri launcher previously waited for a Uvicorn log line as its only readiness signal. Production startup could therefore time out even when the server started.
  2. PyInstaller resolves transitive DLLs through PATH. A third-party LLVM installation could shadow the current Windows VC++ runtime and bundle an old MSVCP140.dll, causing voicebox-server.exe to crash with 0xc0000005 immediately after extraction.

The local build recipe also omitted a required external binary, while Bun workspace symlinks can be unavailable on Windows systems without symlink support.

Impact

Windows users get a self-contained desktop workflow: install the app, leave it running in the notification area, and control the local Voicebox backend from the UI. Server startup no longer depends on unavailable console output, and local builds prefer the current Windows VC++ runtime over unrelated toolchain copies.

Existing isolated Bun installs remain the preferred dependency path; the hoisted path is only a fallback.

Validation

  • bun run typecheck
  • bunx biome check on the changed TypeScript/JSON files (one pre-existing exhaustive-deps warning)
  • cargo check --manifest-path tauri/src-tauri/Cargo.toml --locked
  • ruff check backend/build_binary.py
  • ruff format --check backend/build_binary.py
  • native Windows Tauri release build produced MSI and NSIS installers
  • rebuilt CPU sidecar reached a healthy /health response on an isolated port in 8 seconds and was stopped immediately afterward
  • PyInstaller manifest resolves MSVCP140.dll, MSVCP140_1.dll, and MSVCP140_ATOMIC_WAIT.dll from C:\Windows\System32

No model inference or GPU tests were run. Local updater artifact signing was not attempted because the maintainer private signing key is not available in a contributor checkout.

@coderabbitai

coderabbitai Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: c3fe1354-bf3b-40a6-9445-a3b2cbb89119

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

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.

1 participant