SHIP / Release Checklist
Release Checklist
Pre-release source, docs, WebAssembly, archive, CI, and Pages verification gates.
Release Checklist
Use this checklist before publishing a tagged or manually dispatched release. Run commands from the repository root unless noted.
1. Source and Content Gates
make docs-drift
make test CC=clang
make validate-levels
SDL_VIDEODRIVER=dummy SDL_AUDIODRIVER=dummy make smoke CC=clang SMOKE_FRAMES=5 SMOKE_SEED=1
SDL_VIDEODRIVER=dummy SDL_AUDIODRIVER=dummy make scripted-smoke CC=clang SMOKE_FRAMES=5 SMOKE_SEEDS="1 7 23"
Optional local hardening when the platform has sanitizer support:
make sanitize CC=clang
SDL_VIDEODRIVER=dummy SDL_AUDIODRIVER=dummy make sanitize-smoke CC=clang SMOKE_FRAMES=5 SMOKE_SEED=1
2. Documentation Gates
cd docs
bun run lint
bun run build
Confirm the release copy still points players to the current GitHub release page:
README.mdrelease section- docs build/deploy notes
https://github.com/jonathanperis/super-mango-editor/releases/latest
3. WebAssembly Gates
The authoritative WebAssembly gate is GitHub CI: the build.yml WebAssembly job runs make web, verifies artifacts with tools/check_wasm_artifacts.py, packages super-mango-wasm.zip, and deploy.yml smokes the unpacked Pages payload before publishing. Use local Emscripten only as an optional preflight when that host toolchain is healthy.
Optional local preflight:
make web
python3 tools/check_wasm_artifacts.py
RELEASE_PLATFORM=super-mango-wasm make dist-wasm
python3 tools/check_wasm_artifacts.py --zip dist/super-mango-wasm.zip
The verifier checks that out/super-mango.html, .js, .wasm, and .data exist, that the generated JavaScript references the expected asset basenames, that Node accepts the generated JavaScript syntax, and that WebAssembly.compile can compile the generated .wasm binary. When a zip exists, it also verifies the WebAssembly release archive includes HTML, JS, WASM, data, README.txt, and LICENSE.
If a local/container Emscripten install fails inside SDL_ttf/HarfBuzz before compiling Super Mango code (for example Emscripten 3.1.58 plus newer Clang -Wnontrivial-memcall), do not block the release on that host-specific cache/toolchain failure. Confirm the latest GitHub Actions WebAssembly build and Pages WASM smoke are green instead.
4. Native Release Archive Gates
For each native platform produced by CI or a matching local runner:
RELEASE_PLATFORM=super-mango-native make dist-native
Inspect the zip and confirm it contains:
super-mangoexecutable, orsuper-mango.exeon Windowsassets/levels/README.txtLICENSE- Windows only: SDL2 runtime DLLs
5. CI and Publishing Gates
Before creating a release, confirm the latest main branch checks are green:
- Build & Release
- CodeQL
- Docs
- Deploy to GitHub Pages
Publishing rules:
- push a
v*tag to create a tagged GitHub Release, or - use
workflow_dispatchfor a manually versioned release.
Normal main pushes are build/deploy checks only; they do not publish a GitHub Release.
After publish, verify:
- the release asset table has Linux, macOS, Windows, and WebAssembly zip files;
- archive downloads match the expected platform names;
- Pages serves
/super-mango.js,/super-mango.wasm, and/super-mango.data; - the public docs site and badges do not report stale status.