Skip to content

Release 0.6.1: smoother Windows install and verifiable release binaries - #190

Merged
devmaxxx merged 9 commits into
mainfrom
feat/windows-install-safety
Oct 17, 2026
Merged

devmaxxx merged 9 commits into
mainfrom
feat/windows-install-safety

Conversation

@devmaxxx

Copy link
Copy Markdown
Owner

Summary

Part of #189 (everything except the SignPath application, which is the owner's).

  • Release: build provenance attestations for every archive and binary, and SHA256SUMS on every release.
  • zerograph serve --detach (own process, .zerograph/serve.log, returns once listening) and zerograph stop (leaves through the exit that removes the socket, so Windows no longer strands it).
  • npm launcher on Windows runs a per-version copy from %LOCALAPPDATA%\zerograph\bin, so npm i -g succeeds under a live server.
  • Defender exclusion hint on the first model download on Windows.
  • Docs: npm as the recommended route, "Verifying a download" in install.md, windows.md updated (gemma 1.2 GB, detach/stop, upgrade).

Test plan

  • cargo test --test serve: three new tests (stop, stop with no server, detach then ask then stop) pass with the existing 17.
  • cargo clippy --all-targets -- -D warnings clean.
  • Windows CI: the npm smoke step now detaches a server through the launcher, overwrites the package binary under it, and stops it.
  • Attestations and SHA256SUMS are first exercised by the 0.6.1 tag run.

Each archive and the binary inside it get a Sigstore build provenance
attestation, so `gh attestation verify` can tie any copy, npm-installed
or downloaded, to this workflow and commit. A checksums job writes
SHA256SUMS from the archives as they sit on the release.
`serve --detach` starts the server in its own process, logs to
.zerograph/serve.log and returns once the socket listens. `stop` asks
the server to leave through the exit that removes its socket file,
which a kill does not run on Windows. The first model download on
Windows also prints the Defender exclusion command for the cache.
Windows refuses to replace a running image, so `npm i -g` failed under
a live serve. The launcher now runs a copy kept in
%LOCALAPPDATA%\zerograph\bin\<version> and prunes older copies once
nothing runs them. CI overwrites the package binary under a detached
server and stops it through the launcher.
@devmaxxx devmaxxx added this to the 0.6.1 milestone Oct 16, 2026
`stop` now fails when the socket outlives the wait instead of reporting
success. The launcher keys its Windows copy on the install's size and
creation time rather than size alone, and sweeps temp files a killed
launcher left. The Defender hint doubles single quotes in the path.
@devmaxxx devmaxxx changed the title Smoother Windows install and verifiable release binaries Release 0.6.1: smoother Windows install and verifiable release binaries Oct 16, 2026
…Windows

CreateProcess hands the child every inheritable handle, and this
process's own standard handles are inheritable when its parent made
them so. A detached serve therefore held the caller's output pipe, and
anything reading `serve --detach` output waited until the server exited.
Clear the inherit flag on the originals before the spawn.
…r copy per install

The build job runs every dependency's build script, so granting it
id-token let any of them mint a token npm's trusted publishing would
accept. Attestations and SHA256SUMS now come from a separate job that
only downloads the release archives.

The Windows launcher kept one copy per version and deleted every other
version's on each new copy, so two installs on one machine evicted each
other and could leave the package binary running again. Each install
now gets its own slot, and slots unused for 30 days are swept.

The release notes say an upgrade under a server started by 0.6.0 still
needs that server stopped first.
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