Release checklist¶
Work through these sections top-to-bottom before publishing a release. Steps marked CI are verified automatically; all others require a manual check.
1. Documentation¶
- [ ] Screenshots in
docs/gui/host-window.mdanddocs/gui/analysis-window.mdare current (UI hasn't changed since last capture). - [ ] No unresolved HTML TODO comments remain in any
docs/file. - [ ]
docs/installation.mdreflects the current Python version requirement and install steps. - [ ]
docs/troubleshooting.mdcovers any new error messages or failure modes introduced in this release. - [ ]
docs/file-formats.mdis updated if the.swellschema version changed or new export columns were added. - [ ]
docs/citation.mdDOIs and version references are current (update after Zenodo archive is minted).
2. Version and changelog¶
- [ ]
pyproject.toml[project].versionis set to the target release version. - [ ]
CHANGELOG.mdhas a new section## [X.Y.Z] - YYYY-MM-DDwith all four required headings: Model/checkpoint compatibilityPlatform/backend limitations.swell/migration notesKnown segmentation caveats/regressions- [ ] The changelog section accurately describes what changed for end users (not just internal refactors).
Use the bump script to do both version and changelog scaffold in one step:
python scripts/release/bump_version.py patch # or minor / major / explicit version
3. Local build and smoke tests¶
- [ ] Python artifacts build cleanly: (CI)
./scripts/release/build_python_artifacts.sh - [ ] macOS app bundles build for both architectures: (CI)
./scripts/release/build_macos_app_arm64.sh ./scripts/release/build_macos_app_x86_64.sh - [ ] Startup smoke test passes (
SMOKE_TEST:PASS): (CI)python -m swell.main --smoke-test - [ ] Model and segmentation workflow smokes pass: (CI)
python scripts/release/run_model_smoke.py python scripts/release/run_segmentation_workflow_smoke.py - [ ]
dist/compatibility.jsonincludesapp_version,python_requires,supported_platforms,runtime_policy. (CI) - [ ]
dist/SHA256SUMS.txtcovers alldist/artifacts. (CI)
4. Clean-machine validation¶
Run this on a machine with no existing managed model directory before publishing.
- [ ] Launch app, complete model onboarding (download or manual select).
- [ ] Run one segmentation action and confirm masks are produced.
- [ ] Save project, reopen it, and verify the model mismatch warning/choice flow works.
- [ ] On Windows: unzip
swell-windows-x64.zip, launchSwell.exe, run startup + one segmentation workflow.
5. Tag and GitHub release¶
- [ ] All CI phase 2 PR jobs pass (
linux-validation,macos-arm64-validation,macos-x86_64-validation,windows-validation). - [ ] Create and push the release tag:
git tag v0.X.Y git push origin v0.X.Y - [ ] Wait for the
release-phase3-tagworkflow to finish. - [ ] Open GitHub Releases and verify the draft:
- [ ] Assets attached:
swell-macos-arm64.zip,swell-windows-x64.zip,compatibility.json,SHA256SUMS.txt. - [ ] Release body matches the
CHANGELOG.mdsection for this version. - [ ]
compatibility.jsonversion field matchespyproject.toml. - [ ] Publish the draft manually.
6. Post-release¶
- [ ] Mint Zenodo archive for the new tag and update the DOI in
docs/citation.md. - [ ] Verify the GitHub Releases page shows the correct assets and release notes publicly.
- [ ] Start a new
## [Unreleased]section inCHANGELOG.mdfor the next cycle.