mac-messages-mcp
# Versioning System
This project uses automatic semantic versioning that follows the [SemVer](https://semver.org/) specification (MAJOR.MINOR.PATCH).
## How Versioning Works
The versioning system combines manual and automatic processes:
1. **Local Development**: Developers use the `scripts/bump_version.py` script to manually increment version numbers.
2. **CI/CD Pipeline**: When a version tag is pushed, the GitHub Actions workflow automatically builds and publishes the package with the correct version number.
## Version Bumping
### Using the Bump Script
We provide a convenient script to bump version numbers across all relevant files:
```bash
# To increment the patch version (0.1.0 -> 0.1.1)
python scripts/bump_version.py patch
# To increment the minor version (0.1.0 -> 0.2.0)
python scripts/bump_version.py minor
# To increment the major version (0.1.0 -> 1.0.0)
python scripts/bump_version.py major
```
The script will:
1. Update the version in `pyproject.toml`
2. Update the version in `mac_messages_mcp/__init__.py`
3. Optionally commit the changes
4. Optionally create a Git tag
### Publishing a New Version
To publish a new version:
1. Bump the version using the script above
2. Push the tag to GitHub:
```bash
git push origin vX.Y.Z
```
This will trigger the GitHub Actions workflow which will:
1. Build the package with the new version
2. Publish it to PyPI
## Version Files
Versions are stored in the following files:
- `pyproject.toml`: The primary source of version information for the package
- `mac_messages_mcp/__init__.py`: Contains the `__version__` variable used by the package
- Git tags: Used to trigger releases and provide version history
## Versioning Guidelines
Follow these guidelines when deciding which version to bump:
- **PATCH** (0.0.X): Bug fixes and other minor changes
- **MINOR** (0.X.0): New features or improvements that don't break existing functionality
- **MAJOR** (X.0.0): Changes that break backward compatibility
Always test the package before releasing a new version, especially for MAJOR and MINOR releases.