Skip to content

Releasing a Studio build

Releases are built by GitHub Actions in the noxsware-clothing repository (Release Studio, .github/workflows/release.yml). It tests, publishes the single-file exe as NoxswareStudio.exe, and uploads it to the noxsware-releases R2 bucket, where the client portal’s download and the app’s update check look for it.

  1. Bump <Version> in app/Noxsware.App.csproj (e.g. 1.1.0) and commit it to master.

  2. Tag that commit with the same version. The tag message becomes the notes in the app’s update bar:

    Terminal window
    git tag -a v1.1.0 -m "Faster texture optimizer and the new Map conflicts page."
    git push origin v1.1.0
  3. Watch the Release Studio run. It fails on purpose if the tag doesn’t match <Version>, if the tests fail, or if build/ngkeys.dat is missing from the bucket.

When it’s green, NoxswareStudio.exe and latest.json are in studio/prod/, and a GitHub release with the exe and its SHA-256 exists.

Actions → Release Studio → Run workflow, pick the commit, the channel (staging, dev or prod) and optional notes. The same build is uploaded to studio/<channel>/ only, with no GitHub release. staging.noxsware.com and dev.noxsware.com serve those.

Object What
studio/<channel>/NoxswareStudio.exe What the portal’s Download serves
studio/<channel>/latest.json {"version","published","notes"}, read by /api/studio/latest and the app’s update check
studio/<channel>/v<version>/NoxswareStudio.exe A copy kept per version

The exe is uploaded before latest.json, so the app is never told about a version that can’t be downloaded yet.

  • The portal’s download card shows the new version within 5 minutes (the version is cached that long).
  • https://noxsware.com/api/studio/latest returns the new version.
  • An older studio shows Noxsware Studio 1.1.0 is available. at its next start.

Copy the previous version’s exe from studio/prod/v<old>/ over studio/prod/NoxswareStudio.exe, and put back a latest.json naming that version. The bucket is in the EU jurisdiction, so wrangler needs --jurisdiction eu:

Terminal window
npx wrangler r2 object get noxsware-releases/studio/prod/v1.0.0/NoxswareStudio.exe --file NoxswareStudio.exe --jurisdiction eu --remote
npx wrangler r2 object put noxsware-releases/studio/prod/NoxswareStudio.exe --file NoxswareStudio.exe --jurisdiction eu --remote
npx wrangler r2 object put noxsware-releases/studio/prod/latest.json --file latest.json --jurisdiction eu --remote

Apps that already updated keep the newer version; the update bar only appears for versions newer than the running one.