chore(windows): one-command dev setup and a relay container - #4
Merged
Conversation
`just dev` cannot run on Windows: it prepends the repo's Hermit bin/ to PATH, and those shims are checked out as plain text files rather than symlinks, and its beforeDevCommand is Unix shell that cmd.exe cannot execute. scripts/dev-windows.bat is the equivalent — loads .env, starts the relay, starts Vite, waits on the relay's readiness probe, then launches the desktop app. Two Windows-specific traps are documented in its header because both cost real time to diagnose: - Git for Windows ships /usr/bin/link.exe (GNU coreutils `link`), which shadows the MSVC linker. rustc resolves a bare `link.exe` off PATH and fails with "missing operand after '@...linker-arguments'". Calling vcvars64.bat first puts MSVC ahead of it. Setting VCINSTALLDIR by hand makes it worse: rustc then believes it is already in a developer prompt, skips vswhere detection, and picks the Git linker again. - A path containing "(x86)" echoed inside a parenthesized if-block ends the block early, failing with "\Microsoft was unexpected at this time." Every conditional here branches with goto for that reason. scripts/build-windows-installer.bat produces the NSIS/MSI bundle. docker-compose.relay.yml runs the relay as a container against the existing dev services, so it restarts with Docker rather than needing a terminal. Deliberately not deploy/compose/compose.yml, which brings its own Postgres/Redis/MinIO on the same ports and would shadow the dev database. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
just devcannot run on Windows. It prepends the repo's Hermitbin/to PATH — those shims are checked out as plain text files, not symlinks — and itsbeforeDevCommandis Unix shell thatcmd.execannot execute.scripts/dev-windows.batThe equivalent: loads
.env, starts the relay, starts Vite, waits on the relay's readiness probe, then launches the desktop app.Two Windows traps are documented in the header because both cost real time to diagnose:
/usr/bin/link.exe(GNU coreutilslink), which shadows the MSVC linker. rustc resolves a barelink.exeoff PATH and fails withmissing operand after '@...linker-arguments'. Callingvcvars64.batfirst puts MSVC ahead of it. SettingVCINSTALLDIRby hand makes it worse — rustc then believes it is already in a developer prompt, skips vswhere detection, and picks the Git linker again.(x86)echoed inside a parenthesizedifblock ends the block early, failing with\Microsoft was unexpected at this time.Every conditional branches withgotofor that reason.scripts/build-windows-installer.batBuilds the release sidecars and produces the NSIS/MSI bundle. Requires MSVC v143 — v142 cannot link the prebuilt ONNX Runtime that
sherpa-onnxpulls in, failing with ~41 unresolved__std_*vectorized-STL symbols.docker-compose.relay.ymlRuns the relay as a container against the existing dev services, so it returns with Docker rather than needing a terminal.
Deliberately not
deploy/compose/compose.yml, which brings its own Postgres/Redis/MinIO on the same ports with separate volumes and would shadow the dev database.