Repository navigation
Release Process
.github/workflows/ci-release.yml runs on every push and pull request.
Runs on windows-latest with the .NET 6 SDK:
- Checkout — including submodules.
- Setup .NET — 6.0.x.
- Restore dependencies.
-
Build —
Release. -
Feature and WPF safety checks — the same command contributors run locally:
dotnet run --project tests/GokuTrap.FeatureChecks -c Release -- "${{ github.workspace }}" -
Publish — single-file, framework-dependent,
win-x64, stamped with the commit SHA and ref. -
Upload artifact — the resulting
GokuTrap.exe.
Runs on ubuntu-latest, needs build, and is gated:
if: startsWith(github.ref, 'refs/tags/v')A release is produced only from a v-prefixed tag. Pushing to main builds and uploads an artifact but publishes no release. That is why ordinary pushes do not surprise users with a new download.
- Ensure
mainis green. - Create and push a
v-prefixed tag:git tag v3.1.3 git push origin v3.1.3
- The release job runs and publishes.
| Property | Value |
|---|---|
| Platform | win-x64 |
| Deployment | Single file, framework-dependent (--self-contained false) |
| Requires | The .NET desktop runtime on the user's machine |
Framework-dependent is deliberate: it keeps the download small and leaves runtime patching to Windows/.NET servicing.
The updater consumes these releases. For an update to be offered correctly, the release must:
- carry a version the app recognises as newer (omitted trailing zeros compare equal, so
3.1.2and3.1.2.0are the same), - contain a Windows x64 executable asset,
- and, ideally, publish a SHA-256 digest for it.
A release with no supported x64 asset is reported as ineligible rather than being downloaded blindly. See Application-Updates.
The digest is published by GitHub alongside the asset, in the same API response. GokuTrap verifies it for consistency, not publisher identity, and the UI says exactly that. See Downloads-and-Verification.
CI cannot run a real Roblox session. The live-game behaviours listed in Verification-Harness#What the harness does not cover remain manual acceptance items in docs/FEATURE_DELIVERY.md.
For a change to reach users:
- the build must succeed,
- the verification harness must pass,
- the check count must not decrease — see Verification-Harness#Why the count matters.
Semantic-style major.minor.patch, with the tag matching the version users see in About.
Prereleases exist. They are opt-in in the updater — see Application-Updates#Options — so a prerelease never reaches a user who has not asked for it.