// OPENBOX DOCS
Releasing
Cut and publish an OpenBoxGL AppImage release.
This page is for maintainers publishing an AppImage release from master. The release is built in CI when a v* tag is pushed; the steps below prepare the version, changelog, and metadata before that tag.
Before you tag
- Work from a clean
masterthat tracksorigin/master; confirm the target tag does not already exist. - Bump
updates.pyVERSIONto the new semver. - Add a dated section to
CHANGELOG.md(Keep a Changelog format) and the comparison links. - Prepend release metadata to
openbox.metainfo.xml. - Update the README release badge,
PARITY.mdlatest-release text, the bug-report template's version field, and any branch/version references that should track the current release. Leave historical version references in old changelog/metainfo entries and completed specs unchanged. - Run the local gates:
./run_all_tests.sh python3 -B test_packaging.py appstreamcli validate --no-net openbox.metainfo.xml # when available desktop-file-validate openbox.desktop # when available git diff --check
Build and verify the artifact locally
bash build_appimage.sh
The build produces OpenBox-x86_64.AppImage and OpenBox-x86_64.AppImage.zsync, but does not regenerate the .sha256 sidecar. Regenerate it explicitly:
sha256sum OpenBox-x86_64.AppImage > OpenBox-x86_64.AppImage.sha256
sha256sum -c OpenBox-x86_64.AppImage.sha256
Confirm the embedded version matches the release by extracting the AppImage and checking usr/share/openbox/updates.py VERSION.
Push and tag
- Commit the version/changelog/metadata changes, push directly to
master, and wait for the Python 3.10 and 3.12 CI jobs to pass for that exact commit. - Create and push an annotated tag:
git tag -a vX.Y.Z -m "vX.Y.Z" git push origin vX.Y.Z
What CI does
Pushing a v* tag triggers .github/workflows/release-appimage.yml, which:
- Runs
./run_all_tests.sh. - Builds the AppImage with
build_appimage.sh. - Regenerates
OpenBox-x86_64.AppImage.sha256and verifiesOpenBox-x86_64.AppImage.zsyncexists. - Creates the release with
softprops/action-gh-release@v2and uploads the AppImage,.sha256, and.zsyncassets. A tag containing-is marked prerelease.
The release notes are generated by GitHub; edit them to match the changelog section before publishing if needed.
Verify after publishing
- Confirm GitHub's latest-release API returns the new version and all three assets.
- Download the AppImage and
.sha256remotely and runsha256sum -c. - Start the AppImage and confirm the updater reports the new version as current with no update available.
Pitfalls
build_appimage.shdoes not regenerate the.sha256sidecar; a stale checksum must be replaced manually.- Release artifacts are Git-ignored and must be uploaded explicitly via the release workflow.
- Do not tag or publish before CI succeeds for the exact release commit.
- OpenBoxGL uses only
master; there is no release branch or worktree.