Release Process
This guide explains how to create and manage releases for TTS Wrapper.
Version Numbering
We follow Semantic Versioning (SemVer):
- MAJOR version for incompatible API changes
- MINOR version for new functionality in a backward compatible manner
- PATCH version for backward compatible bug fixes
Creating a Release
-
Update Version
- Update version in
pyproject.toml
- Update version in documentation if necessary
- Update CHANGELOG.md
- Update version in
-
Create Git Tag
git tag -a v0.1.0 -m "Release 0.1.0"
git push origin v0.1.0 -
GitHub Release
- The GitHub Action will automatically:
- Build the package
- Run tests
- Deploy documentation
- Publish to PyPI (if configured)
- The GitHub Action will automatically:
Release Checklist
Before creating a release:
- All tests pass
- Documentation is up to date
- CHANGELOG.md is updated
- All GitHub issues for this version are closed
- All pull requests for this version are merged
- Version numbers are updated
- Release notes are prepared
Documentation Deployment
Documentation is automatically deployed when:
- Changes are pushed to the main branch
- A new release tag is created
- The deploy-docs workflow is manually triggered
The deployment process:
- Builds the Docusaurus site
- Deploys to GitHub Pages
- Updates the documentation version
Hotfix Process
For urgent fixes:
-
Create a hotfix branch from the release tag:
git checkout -b hotfix/v0.1.1 v0.1.0
-
Make necessary fixes
-
Update version and create new tag:
git tag -a v0.1.1 -m "Hotfix 0.1.1"
git push origin v0.1.1
Release Notes
Good release notes should include:
- Summary of changes
- New features
- Bug fixes
- Breaking changes
- Migration instructions (if needed)
- Contributors
- Links to relevant issues/PRs
Example:
## [0.1.0] - 2024-03-20
### Added
- New TTS engine: Sherpa-ONNX
- Streaming support for Play.HT
- Word timing callbacks for AVSynth
### Fixed
- Memory leak in audio playback
- SSML parsing for Microsoft Azure
### Changed
- Improved error handling
- Updated documentation structure
### Breaking Changes
- Renamed `speak_async` to `speak_streamed`
- Changed credential format for Watson TTS