feat: publish to WinGet - #19
Merged
Merged
Conversation
Add WinGet as a distribution channel, publishing WebCodr.jwtd to microsoft/winget-pkgs as a portable-zip package. WinGet cannot consume the tar.gz archives, so the windows targets now ship an additional zip built from a dedicated windows-only build (jwtd-windows) with identical settings, so its jwtd.exe is byte-for-byte the same binary as the windows tar.gz. The zip carries its own archive id (jwtd-zip) so Scoop stays pinned to the tar.gz archive; SBOMs stay scoped to the tar.gz set since the zip wraps an already-cataloged binary. The manifest set is hand-templated in winget/ (source of truth for the manual first submission) with hashes filled from the signed checksums.txt. The update-winget job verifies the installers against checksums.txt, installs a version-pinned and sha256-verified komac, and opens the moderated winget-pkgs PR from the webcodr fork via the GitHub API. Like the other channels it runs only for stable releases after the release job. Co-Authored-By: Claude Opus 4.8 <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.
Add WinGet as a distribution channel, publishing
WebCodr.jwtdto microsoft/winget-pkgs as a portable-zip package.What changed
tar.gz, so the windows targets now ship an additional.zipbuilt from a dedicated windows-only build (jwtd-windows) with identical settings — itsjwtd.exeis byte-for-byte the same binary as the windowstar.gz. The zip carries its own archive id (jwtd-zip) so Scoop stays pinned to the tar.gz (scoops.ids: [jwtd]), and SBOMs stay scoped to the tar.gz set since the zip wraps an already-cataloged binary.tar.gz+ two windows.zip), onechecksums.txt, six SBOMs. Both zips are byte-reproducible, so they join the strict byte-for-byte verification tier.winget/(WebCodr.jwtd.yaml,.installer.yaml,.locale.en-US.yaml) withVERSION/SHA256_WINDOWS_{AMD64,ARM64}placeholders — the source of truth for the manual first submission.InstallerType: zip+NestedInstallerType: portable→jwtd.exe.update-wingetCI job. Gated to stable releases, after the release job. Verifies installers against the signedchecksums.txt, installs a version-pinned + sha256-verifiedkomac, and opens the moderated winget-pkgs PR from thewebcodrfork via the GitHub API (no giant-repo clone).TestWinGetInvariantsenforcing the portable-zip contract and the gated, checksum-verified, pinned-komac job.Manual setup required before this channel works end-to-end
The
update-wingetjob will fail on the first stable release until all three of these exist. None can be done from this PR — they involve accounts, secrets, and a moderated external repo.1. Fork winget-pkgs
Fork microsoft/winget-pkgs into the
webcodraccount (→webcodr/winget-pkgs, default settings). The job hardcodesKOMAC_FORK_OWNER=webcodrand opens its PR from that fork. One-time.2. Create the
WINGET_TOKENsecretpublic_reposcope — it pushes branches towebcodr/winget-pkgsand opens PRs againstmicrosoft/winget-pkgs.WINGET_TOKEN.3. Seed the first submission manually
komac's
updatecan only update an existingWebCodr.jwtdpackage — it can't create one, so the first version is submitted by hand from thewinget/templates:jwtd-windows-{amd64,arm64}.zipassets and theirchecksums.txthashes exist).winget/manifests: replaceVERSIONand bothSHA256_WINDOWS_*placeholders with the values from that release's signedchecksums.txt.microsoft/winget-pkgsundermanifests/w/WebCodr/jwtd/<version>/— viakomac submit/wingetcreate submitpointing at the two zip URLs, or a manual PR. New packages are moderated, so expect a review round.Validation heads-up: winget-pkgs runs the binary in a sandbox during validation.
jwtdwith no args drops into the interactive readline prompt; if the sandbox hangs on that, expect a manual-review nudge from the moderators.Once the package exists upstream and the fork + secret are in place, every future stable release auto-submits via
update-winget. Prereleases are skipped (if: needs.validate.outputs.prerelease == 'false').🤖 Generated with Claude Code