Release Procedure¶
Use this checklist for releases from master. Versions are taken from Git
tags through setuptools_scm. Tags must use the form vX.Y.Z.
1. Confirm the release candidate¶
Check that the intended release commit is clean and tested:
git status --short
git log --oneline --decorate -5
ruff check orgui
pytest orgui/datautils/xrayutils/test/test_HKLcalc.py
pytest orgui/datautils/xrayutils/test/test_DetectorCalibration.py
pytest orgui/datautils/xrayutils/test/test_CTRcalc.py
python -m build
python -m twine check dist/*
Manual GUI/science smoke test:
install from a clean environment or from the built wheel
start the GUI and confirm clean startup
load at least one
examples/configurationcheck source/detector units: energy in keV, wavelength in Angstrom, SDD in m, pixel size in m, and detector center in pixels
load a representative image or scan
run one known UB/orientation calculation
run one representative integration workflow
compare CTR or structure-factor output with a previous release or reference when scientific code changed
start CLI/headless mode when shared loading or logging code changed
2. Update CHANGELOG.md and write release notes¶
2.1 Automatic CHANGELOG using cliff¶
Choose the bump type manually: patch for bug fixes, documentation,
packaging, and compatibility fixes; minor for backwards-compatible
features. Replace patch with minor when appropriate. A major version
change implies substantial API or other user-facing breaking changes and
requires a dedicated release workflow.
Preview the next version:
git cliff --bumped-version --bump patch
Prepend only unreleased changes to CHANGELOG.md:
git cliff --unreleased --bump patch --prepend CHANGELOG.md
Then inspect the changelog. This command prepends the new release section, but manual cleanup is still required:
remove the duplicated
# Changelogtitle and introductory text if they appear below the new release sectionadd the new compare link near the bottom of
CHANGELOG.mdbefore the existing release links, for example:[1.4.2]: https://github.com/tifuchs/orGUI/compare/v1.4.1..v1.4.2
2.2 Add release notes¶
Edit the new release section by hand. Place the user-facing release notes
directly below the new ## [X.Y.Z] heading and commit range, and above the
generated commit groups such as ### Added or ### Fixed.
Include only high-signal notes:
one short sentence classifying the release, such as bugfix, maintenance, or feature release
important user-visible changes
upgrade or dependency warnings
known issues
scientific correctness fixes that affect calculations or previous results
Example:
## [1.4.1] (2026-03-27)
[260ab5d](https://github.com/tifuchs/orGUI/commit/260ab5d)...[3f5ce1a](https://github.com/tifuchs/orGUI/commit/3f5ce1a)
This is a bugfix and maintenance release.
**Attention: pyFAI versions 2025.12.0, 2025.12.1 and 2026.2.0 cause a
software crash when selecting a detector in the machine parameters.**
Two critical bugs were fixed that affect physics calculations:
- Allowed Bragg reflections close to the search bounds were sometimes not
found.
- The complex phase of the Fourier components rho_G of the electron density
along z was incorrectly calculated.
### Added
- Generated commit list starts here.
Regenerate the documentation release-notes page:
python doc\generate_release_notes.py
Test the Sphinx documentation build:
python -m sphinx -b html doc\source doc\build\html
3. Commit, tag, and push the release¶
git diff -- CHANGELOG.md doc\source\release_notes.rst
git add CHANGELOG.md doc\source\release_notes.rst
git commit -m "docs: update changelog for vX.Y.Z"
git tag -a vX.Y.Z -m "Release vX.Y.Z"
git show --stat vX.Y.Z
git push origin master
git push origin vX.Y.Z
Use the version from the new CHANGELOG.md release section for vX.Y.Z.
The tag push starts .github/workflows/release.yml.
4. Verify the workflow¶
Check that GitHub Actions:
builds the wheel and source distribution
runs
twine checkextracts the release notes from
CHANGELOG.mdcreates the GitHub release
publishes to PyPI
If publishing to PyPI has already succeeded, do not reuse the same version number for a fix.
5. Verify the published package¶
python -m venv .venv-release-check
.\.venv-release-check\Scripts\python -m pip install --upgrade pip
.\.venv-release-check\Scripts\python -m pip install "orGUI[full]==X.Y.Z"
.\.venv-release-check\Scripts\python -c "import orgui; print(orgui.__version__)"
Confirm the GitHub release, PyPI page, attached artifacts, and Read the Docs build.