This project uses Semantic Versioning and git tags.
Version must be identical in both files:
pyproject.toml→[project].versionopensmi/__init__.py→__version__
Run python scripts/verify_version.py to check consistency.
MAJOR: breaking changes (CLI flags, config schema, TUI keybindings)MINOR: new features, backwards-compatiblePATCH: bug fixes, performance, docs
Each tagged release produces:
| Artifact | Description |
|---|---|
opensmi-X.Y.Z.tar.gz |
Python sdist |
opensmi-X.Y.Z-py3-none-any.whl |
Python wheel |
opensmi-tui-linux-x64 |
TUI binary (Linux x64) |
opensmi-tui-linux-arm64 |
TUI binary (Linux ARM64) |
opensmi-tui-darwin-arm64 |
TUI binary (macOS Apple Silicon) |
opensmi-tui-darwin-x64 |
TUI binary (macOS Intel) |
Edit CHANGELOG.md:
## [X.Y.Z] - YYYY-MM-DD
### Added / Changed / Fixed
- ...# pyproject.toml
version = "X.Y.Z"
# opensmi/__init__.py
__version__ = "X.Y.Z"./scripts/check.shgit commit -am "chore(release): vX.Y.Z"
./scripts/release.sh X.Y.Z
git push origin main --tagsGitHub Actions will:
- Run CI (Python 3.9-3.12 + TUI typecheck)
- Build sdist + wheel
- Cross-compile TUI binaries on 4 platforms
- Create a GitHub Release with all artifacts
Uncomment the PyPI step in .github/workflows/release.yml and add PYPI_API_TOKEN secret.
Build for your current platform only:
./scripts/build-tui.sh
# → dist/opensmi-tui-<os>-<arch>