This document describes how VibeRadiant versions are defined, how packages are built, and how GitHub releases are assembled. It is intended for maintainers.
Source of truth:
VERSIONcontains the release version inX.Y.Zform (for example1.6.0).- Release tags must be
vX.Y.Zand matchVERSION(enforced by the release workflow).
Makefile variables:
RADIANT_VERSION_NUMBERis read directly fromVERSION.RADIANT_VERSION_SUFFIXis optional (for example-rc1).RADIANT_VERSIONisRADIANT_VERSION_NUMBERplus the suffix.- If a git checkout is present,
-git-<short-hash>is appended toRADIANT_VERSIONandQ3MAP_VERSION. RADIANT_MAJOR_VERSIONandRADIANT_MINOR_VERSIONare the 2nd and 3rd dot-separated parts ofRADIANT_VERSION_NUMBER(for1.6.0, major is6, minor is0).
Update URLs:
RADIANT_GITHUB_REPOdefaults tothemuffinator/VibeRadiant.- The updater resolves releases through the GitHub Releases API for
RADIANT_GITHUB_REPO, then downloads each release'supdate.json. RADIANT_UPDATE_URLremains the stable fallback URL:https://github.com/themuffinator/VibeRadiant/releases/latest/download/update.json.RADIANT_RELEASES_URLdefaults tohttps://github.com/themuffinator/VibeRadiant/releases/latest.- Both can be overridden in
Makefile.confor the environment to point at another channel.
make writes the distributable layout to INSTALLDIR (default install):
install-datapopulates gamepacks, docs, andsetup/data/tools/*, and writesRADIANT_MAJORandRADIANT_MINORmarker files.install-dll(Windows) copies runtime DLLs viainstall-dlls*.sh.
Windows packages:
- CI builds with
make MAKEFILE_CONF=msys2-Makefile.conf. - The release workflow creates
VibeRadiant-windows-x86_64.zipfrominstall/*after ensuringinstall/settings/exists.
Linux packages:
appimage.shcopiesinstall/into an AppDir, generates a desktop file and icon, and useslinuxdeployplus the Qt plugin to buildVibeRadiant-x86_64.AppImage.
macOS packages:
- CI builds on
macos-14(arm64) and archivesinstall/asVibeRadiant-macos-arm64.tar.gz.
Legacy Makefile release targets:
release-srcproduces a source tarball fromgit archive.release-win32builds and produces a self-extracting 7z exe.release-allrunsgit clean -xdfand then runs both targets.
Trigger:
- Pushing a tag like
v1.6.0runs.github/workflows/release.yml.
Steps:
- Verify
VERSIONmatches the tag. - Build Windows, Linux, and macOS artifacts.
- Rename assets to include the version:
VibeRadiant-${VERSION}-windows-x86_64.zipVibeRadiant-${VERSION}-linux-x86_64.AppImageVibeRadiant-${VERSION}-macos-arm64.tar.gz
- Generate
release/update.jsonandrelease/sha256sums.txt. - Publish a GitHub release with all files in
release/.
Trigger:
- Scheduled daily and manual dispatch via
.github/workflows/nightly.yml.
Steps:
scripts/nightly_version.pycomputesX.Y.Z.BUILD, release tag, and whether there are meaningful commits since the previous nightly.- If changes exist (or
force=true), CI builds Windows, Linux, and macOS artifacts using that computed nightly version. - CI generates
release/update.json, checksums, and nightly notes viascripts/nightly_release_notes.py. - CI tags
vX.Y.Z.BUILDand publishes a prerelease namedNightly vX.Y.Z.BUILD.
update.json is a JSON object with these required fields:
version: string fromVERSIONnotes: release notes URL (tag page)published_at: ISO 8601 UTC timestampassets: map of platform key to asset metadata
Example (trimmed):
{
"version": "1.6.0",
"notes": "https://github.com/themuffinator/VibeRadiant/releases/tag/v1.6.0",
"published_at": "2026-01-01T12:00:00Z",
"assets": {
"windows-x86_64": {
"url": "https://github.com/themuffinator/VibeRadiant/releases/download/v1.6.0/VibeRadiant-1.6.0-windows-x86_64.zip",
"sha256": "....",
"name": "VibeRadiant-1.6.0-windows-x86_64.zip",
"type": "zip",
"size": 12345678
},
"linux-x86_64": {
"url": "https://github.com/themuffinator/VibeRadiant/releases/download/v1.6.0/VibeRadiant-1.6.0-linux-x86_64.AppImage",
"sha256": "....",
"name": "VibeRadiant-1.6.0-linux-x86_64.AppImage",
"type": "appimage",
"size": 12345678
},
"macos-arm64": {
"url": "https://github.com/themuffinator/VibeRadiant/releases/download/v1.6.0/VibeRadiant-1.6.0-macos-arm64.tar.gz",
"sha256": "....",
"name": "VibeRadiant-1.6.0-macos-arm64.tar.gz",
"type": "tar.gz",
"size": 12345678
}
}
}Platform keys are defined in radiant/update.cpp:
windows-x86_64,windows-x86linux-x86_64,linux-arm64,linux-unknownmacos-arm64,macos-x86_64,macos-unknown,unknown
If the manifest does not include the current platform key, the updater does not offer an update.
- Update
VERSION. - Push a tag
vX.Y.Z. - Confirm the release workflow publishes the assets,
update.json, andsha256sums.txt. - Verify
update.jsonis reachable from thereleases/latest/download/URL.
.github/workflows/build.yml produces "Latest Build" artifacts on demand and can
publish a date-based tag release, but it does not generate update.json.