Release Checklist
lazy-cuh is pre-alpha. Releases stay in the 0.x line until the framework API
is intentionally promoted.
Versioning
Section titled “Versioning”The project uses python-semantic-release with conventional commits.
Important settings:
allow_zero_version = truekeeps automated releases in0.x.major_on_zero = falseprevents breaking-change commits from jumping straight to1.0.0while the package is pre-alpha.Development Status :: 2 - Pre-Alphainpyproject.tomlis the package lifecycle signal.
Use conventional commit messages for commits that should affect releases:
feat: add editable optionsfix: keep invalid modal input opendocs: document release checkschore: update workflow metadataLocal Checks
Section titled “Local Checks”Run these before merging release-related changes:
nix develop -c uv run pytestnix develop -c uv run ruff check .nix develop -c uv run pyrightnix run .#docs-buildnix flake showFor local package/release tooling checks, install the release extra and validate the built distributions:
nix developuv sync --extra releaseuv run python -m builduv run twine check dist/*Useful interactive smoke checks:
nix run .#demonix run .#example-optionsnix run .#example-help-modalnix run .#example-help-keybarnix run .#example-text-wrapGitHub Release Flow
Section titled “GitHub Release Flow”The release workflow runs only after the Test workflow succeeds on the current
main SHA, or by manual dispatch.
The workflow:
- checks out full history,
- runs
semantic-release version, - validates
dist/*withtwine check, - runs
semantic-release publish, - publishes to PyPI with trusted publishing.
The default GITHUB_TOKEN can publish repository releases. A GH_PAT secret may
be provided later if release commits need to trigger follow-up workflows.
PyPI Trusted Publisher
Section titled “PyPI Trusted Publisher”The PyPI trusted publisher configuration should match:
PyPI project name: lazy-cuhOwner: janthmuellerRepository name: lazy-cuhWorkflow name: release.ymlEnvironment name: pypiThe release workflow sets permissions.id-token: write and uses the pypi
environment so pypa/gh-action-pypi-publish can publish without a PyPI API
token.