Release process
For maintainers. The repo also has a release skill and a release-manager agent under .claude/ that walk through this.
Cutting a release
Section titled “Cutting a release”- Bump the version in
Directory.Build.props(one version forUmbra.exe,umbractl.exeand the installer). - Write the notes from the merged pull requests.
- Tag
vX.Y.Zand push the tag. .github/workflows/release.ymlbuilds and attachesUmbraSetup-<version>.exe(and the portable zip) to the GitHub release.- Verify the release assets: the installer’s name must be
UmbraSetup-<release version>.exe, because that’s what the self-updater requires.
There’s also a release-checklist skill that builds a filled checklist (build, install tests, human checks gathered from merged PRs, ship steps).
Signing
Section titled “Signing”release.yml signs the installer with signtool only if the repo secrets SIGN_CERT_BASE64 (a code-signing .pfx, base64) and SIGN_CERT_PASSWORD exist. Otherwise it publishes it unsigned. One-time setup:
- Get a code-signing certificate (an OV/EV certificate from a CA, or Azure Trusted Signing / SignPath if you qualify) and export it as a
.pfx. - Encode it with
[Convert]::ToBase64String([IO.File]::ReadAllBytes("cert.pfx"))and add the two repo secrets. - The next tagged release is signed. SmartScreen reputation still builds up over time.
winget
Section titled “winget”The release workflow also fills the manifests in winget/ with the version and SHA256 (scripts/winget.ps1) and attaches them to the workflow run as winget-manifests-<version>.
First submission (needs a person, not CI):
- After a release, download the
winget-manifests-<version>artifact, or runpowershell -File scripts/winget.ps1 -Installer dist/UmbraSetup-<version>.exe. - Run
wingetcreate submit <folder>, or fork microsoft/winget-pkgs and copy the three files tomanifests/a/AmineChr54/Umbra/<version>/. - Validate with
winget validate <folder>andwinget install --manifest <folder>in a clean VM, then open the pull request. Moderators must approve the first one.
Later releases repeat step 2 for each version (or use wingetcreate update AmineChr54.Umbra / winget-releaser once the package exists).
Catalog and site
Section titled “Catalog and site”Widgets and themes are published by merging their pull requests; there’s no release step. The website (this site) is built from main by .github/workflows/pages.yml.
