# Release process Releases are automated by GitHub Actions (`release-major-minor.yml` -> `reusable-release-stack.yml`). ## Trigger Manual workflow dispatch with: - `bump_type`: `patch` | `minor` | `major` - optional `subtree_repo_owner` ## What the pipeline does 1. Checks out stable branch (`main` by default). 2. Bumps lockstep versions in package `pyproject.toml` files. 3. Aligns inter-package dependency constraints. 4. Updates root `CHANGELOG.md`. 5. Commits and pushes release changes to stable branch. 6. Publishes packages to PyPI in dependency order: - `mini-arcade-core` - `mini-arcade-pygame-backend` - `mini-arcade-native-backend` - `mini-arcade` 7. Tags release artifacts: - `mini-arcade-core-vX.Y.Z` - `mini-arcade-pygame-backend-vX.Y.Z` - `mini-arcade-native-backend-vX.Y.Z` - `mini-arcade-vX.Y.Z` 8. Creates GitHub Releases with zip assets per package subtree. 9. Syncs `develop` from stable branch. 10. Pushes subtree mirrors to package repos. 11. Sends release notifications (Slack/Discord, if secrets are configured). ## Prerequisites - PyPI token (`PYPI_API_TOKEN`) - Subtree push token (`SUBTREE_PUSH_TOKEN`) - Optional notification secrets for Slack/Discord ## Notes - Versioning is lockstep across the four published packages. - Native backend pipeline builds Windows wheels and also publishes sdist. - Stable/develop branch names are configurable in workflow inputs.