Releases are macOS-only today (README rationale): the editor itself builds and runs on Windows, but the @claude integration doesn't, so we don't ship installers that can't deliver the full experience. This issue tracks what it would take to lift that.
What's Unix-specific
All in src-tauri/src/lib.rs:
-
Binary discovery — resolve_claude_binary()
- Step 1 shells out to
which claude; Windows needs where.exe (or Command::new("claude.cmd") probing).
- Step 2's candidate list is built from
$HOME (%USERPROFILE% on Windows) with Unix paths (~/.claude/local/claude, ~/.local/bin/claude, /opt/homebrew/bin, ~/.nvm/versions/node/*/bin). Windows equivalents: %USERPROFILE%\.local\bin\claude.exe, npm global prefix (%APPDATA%\npm\claude.cmd), nvm-windows dirs.
- Step 3 falls back to
$SHELL -lic 'command -v claude' — no Windows analog; would be skipped or replaced with a where.exe pass.
- On Windows the npm-installed CLI is a
claude.cmd shim, which Command::new won't execute directly — it needs cmd /C or resolution to the underlying node script.
-
Session discovery — claude_projects_dir() and the list_claude_sessions / find_session_for_markdown / check_session_compacted family — these use dirs::home_dir().join(".claude/projects"), which should resolve on Windows, but the session-path encoding (project dirs derived from absolute paths) needs verification against how Claude Code encodes C:\... paths on Windows.
-
Process spawning — spawn_claude_resume — spawned children should set CREATE_NO_WINDOW (creation_flags(0x08000000)) so a console window doesn't flash; cancellation in ChildRegistry uses kill(), which is fine cross-platform via std.
-
The Claude Code plugin (plugin/quill-integration) uses open "quill://…" — Windows would use start "" "quill://…" (and Quill's deep-link registration via tauri-plugin-deep-link should already handle the registry side).
Acceptance
@claude replies and AI tracked-changes work on a Windows machine with Claude Code installed via the native installer and via npm.
- Release workflow re-adds the
windows-latest target.
- README/USER_GUIDE install matrix updated.
Releases are macOS-only today (README rationale): the editor itself builds and runs on Windows, but the
@claudeintegration doesn't, so we don't ship installers that can't deliver the full experience. This issue tracks what it would take to lift that.What's Unix-specific
All in
src-tauri/src/lib.rs:Binary discovery —
resolve_claude_binary()which claude; Windows needswhere.exe(orCommand::new("claude.cmd")probing).$HOME(%USERPROFILE%on Windows) with Unix paths (~/.claude/local/claude,~/.local/bin/claude,/opt/homebrew/bin,~/.nvm/versions/node/*/bin). Windows equivalents:%USERPROFILE%\.local\bin\claude.exe, npm global prefix (%APPDATA%\npm\claude.cmd), nvm-windows dirs.$SHELL -lic 'command -v claude'— no Windows analog; would be skipped or replaced with awhere.exepass.claude.cmdshim, whichCommand::newwon't execute directly — it needscmd /Cor resolution to the underlying node script.Session discovery —
claude_projects_dir()and thelist_claude_sessions/find_session_for_markdown/check_session_compactedfamily — these usedirs::home_dir().join(".claude/projects"), which should resolve on Windows, but the session-path encoding (project dirs derived from absolute paths) needs verification against how Claude Code encodesC:\...paths on Windows.Process spawning —
spawn_claude_resume— spawned children should setCREATE_NO_WINDOW(creation_flags(0x08000000)) so a console window doesn't flash; cancellation inChildRegistryuseskill(), which is fine cross-platform via std.The Claude Code plugin (
plugin/quill-integration) usesopen "quill://…"— Windows would usestart "" "quill://…"(and Quill's deep-link registration via tauri-plugin-deep-link should already handle the registry side).Acceptance
@claudereplies and AI tracked-changes work on a Windows machine with Claude Code installed via the native installer and via npm.windows-latesttarget.