Repository navigation
Description
Goal
Windows developers should be able to use winget install, upgrade and uninstall for the released CLI/daemon without manually extracting archives.
Priority: P2 · Classification: New package-manager distribution channel
Reviewed baseline: main 56ad6438653f, 6 October 2026. Published distribution inspected: v0.8.0 (CLI build commit 615e501). Recheck these installation surfaces against the current branch before implementing.
Current behavior and evidence
The existing Windows x64 release ZIP already contains both executable files. No WinGet manifest or supported WinGet command was found in the Semaprax source/docs or the complete GitHub issue inventory.
WinGet supports a ZIP whose nested executable entries are portable commands. That offers a small path to a managed installation using the existing distribution; a separate MSI wizard is not required for this scope.
Marketplace publication of the VS Code extension is a separate held issue and must not be mixed with Windows CLI package registration.
- Existing Windows distribution contents
- Windows x64 release target
- Official WinGet manifest guide
- Official WinGet manifest submission process
- Microsoft repository ZIP/portable manifest example
Implementation scope
- Verify a canonical publisher/package identity, proposed Wavect.Semaprax, against the current community repository before registering it. Add maintainable manifest generation to the Semaprax release tooling.
- Use the current WinGet ZIP/portable manifest schema. Map the real archive-relative semaprax.exe and semapraxd.exe paths to their command aliases, retain the required package files, and pin the exact versioned ZIP URL and InstallerSha256.
- Declare the tested minimum Windows version and x64 architecture. Prefer user scope where supported and do not claim native ARM64 support from x64 compatibility/emulation alone.
- Validate and install the manifest locally, then complete the community repository submission and verify that the normal public command can resolve it. A local YAML file or submitted PR by itself is not public availability.
- Automate generation/update from each successfully published release's canonical metadata. Keep a clear pending/accepted state for externally reviewed channel updates; do not publish README instructions for a version the public index cannot install.
- Document winget install --id Wavect.Semaprax --exact, the corresponding upgrade and uninstall commands, using the actually accepted identity. Let WinGet own lifecycle management and keep a bootstrap/manual install from overwriting its files.
- Preserve the paired CLI/daemon version and make command alias/PATH behavior work in a new terminal. An install test must check that both executable targets refer to the same package version.
Acceptance criteria
- A fresh supported Windows x64 account can install with the public exact-ID command after the manifest is accepted/indexed.
- The package validates under the selected current WinGet schema and installs both portable commands from their actual nested ZIP paths.
- new/check/test/run succeeds with result 42 from an arbitrary user directory, and the daemon is present and usable through its supported invocation.
- Upgrade and uninstall behave correctly; no stale command alias points at the previous version.
- The manifest uses a fixed version URL and matching checksum, with minimum OS/architecture claims backed by testing.
- Until public availability is verified, channel status remains pending and the existing manual/PowerShell route stays the documented working alternative.
Verification
- Run winget validate, local-manifest installation in Windows Sandbox or an equivalent clean account, meaningful starter-project checks, upgrade and uninstall.
- Inspect both command aliases and installed payload paths; test a path with spaces and a prior manual installation.
- After publication, verify the public package source resolves the exact accepted ID/version without relying on a local manifest.
Existing issues and boundaries
- No WinGet issue/PR body was found in the complete reviewed inventory.
- #253 remains held and is unrelated to this CLI package distribution.
- INSTALL-03 is a complementary PowerShell route, not a prerequisite for a portable WinGet manifest; both must preserve the same release payload.
Delivery notes
Implement in the existing owning modules and test harnesses. Follow AGENTS.md and the relevant release/editor contracts. Keep fixes focused, preserve unrelated behavior, and attach the actual verification results. Do not replace existing signing, publication, project generation or harness setup with a second system.
Activity
Install: prebuilt-first guide, checked install claims, Homebrew tap
WinGet manifests: quote ShortDescription, drop Scope for portable ins…
wsdt commentedon Oct 6, 2026
Progress (issue stays open until the public index serves the package): generator fixes in main (quoted ShortDescription; no Scope for portable). Wavect.Semaprax 0.8.0 manifests validated on windows-2025 (https://github.com/wavect/semaprax/actions/runs/37454638162): winget validate clean; install from manifest verified the hash and created both portable aliases resolving into the same v0.8.0 package directory; from a directory with spaces semaprax new/check/test/run printed 42; semapraxd answered JSON-RPC over --stdio; uninstall removed both aliases; --location with spaces works. Submitted: microsoft/winget-pkgs#447495 (awaiting Microsoft validation/review and the CLA). Remaining: once indexed, verify winget install/upgrade/uninstall --id Wavect.Semaprax --exact from the public source, then mark packaging/channels.json winget published and add the guide section.
wsdt commentedon Oct 11, 2026
Updated the existing submission to v0.9.0: microsoft/winget-pkgs#447495 (head 7cce7c45fdb03ad5543458df3bc0808df4994d68). All local-manifest Windows validation, v0.8.0-to-v0.9.0 upgrade, both portable alias identities, installed starter result 42, daemon stdio and receipt-owned removal passed in https://github.com/wavect/semaprax/actions/runs/38156173827. The public Microsoft package path remains unavailable, so this issue and packaging/channels.json stay pending. After acceptance/indexing, the public exact-ID install/upgrade/uninstall must still be verified before closing.