Release Process
This guide is for maintainers preparing a Synaptipy release. It documents the current local-first process; the version-bump script never pushes to GitHub or starts a workflow on its own.
Before the version bump
Use the existing synaptipy conda environment. Do not change the project’s
PySide6 pin while preparing a release.
Start from the branch you intend to release and make sure it has no uncommitted work:
git status --short
The normal bump refuses to run when this command has output. This protects the
script’s git add -A commit from including unrelated work. It also refuses a
version that is not valid PEP 440, is not greater than the current version, or
would reuse an existing local vX.Y.Z tag.
Create the local release commit and tag
Preview the exact edit set first. A dry run makes no file or Git changes and is safe while reviewing unrelated local work:
conda run -n synaptipy python scripts/bump_version.py 0.1.6.2 --dry-run
After reviewing the preview, run the same command without --dry-run:
conda run -n synaptipy python scripts/bump_version.py 0.1.6.2
The script updates these required release locations:
pyproject.tomlandsrc/synaptipy/__init__.py;CITATION.cff, including its release date;the Windows installer version and Linux desktop-entry version;
CHANGELOG.md, including its release comparison links.
It also updates matching release text in docs/references.md and versioned
paper-environment files when present. Legacy version text in README.md is
updated only when it exists; it is not a required release target. Missing
optional text produces a warning rather than a partial release.
On a normal run, the script stages the resulting clean release update with
git add -A, creates the commit chore: bump version to X.Y.Z, and creates an
annotated local tag vX.Y.Z. It never changes dependency constraints, pushes
a branch or tag, or dispatches a GitHub Actions workflow.
Verify before publishing
Inspect the generated release commit and tag, then run the local CI verifier in the same conda environment:
git show --stat HEAD
git show --no-patch v0.1.6.2
conda run -n synaptipy python scripts/verify_ci.py
verify_ci.py checks formatting, import order, linting, the primary
90-percent coverage test gate, and the repository’s source-text policy. Add
--with-screenshots when documentation screenshots are part of the release.
The GitHub workflow remains the cross-platform authority: it runs on Ubuntu,
Windows, and macOS with Python 3.10, 3.11, and 3.12, plus its specialised jobs.
Publish deliberately
Only after the checks and review are satisfactory, push the release commit and its tag yourself:
git push origin <branch>
git push origin v0.1.6.2
The branch push starts the normal CI workflow. Pushing the vX.Y.Z tag is the
normal release trigger; it starts the release workflow, which rebuilds and
validates the distribution and documentation before its publication jobs.
Manual workflow dispatch defaults to a dry run that produces build artifacts
without publishing. The workflow also exposes a non-dry-run option, so use it
only when an intentional manual publication is required.