This monorepo supports independent versioning and releasing of each package. Each package can be released separately with its own version number.
- plugin (
@hypothesi/tauri-plugin-mcp-bridge): Tauri plugin published to both crates.io and npm - server (
@hypothesi/tauri-mcp-server): MCP server published to npm only
- NPM Token: Set up
NPM_TOKENsecret in GitHub repository settings - Cargo Token (for plugin only): Set up
CARGO_REGISTRY_TOKENsecret in GitHub repository settings- Get token from crates.io settings
- Run
cargo login <token>locally to test
# Release with specific version
npm run release:plugin 0.1.1
# Or auto-bump (patch, minor, or major)
npm run release:plugin patch
npm run release:plugin minor
npm run release:plugin major
# Dry run to test
npm run release:plugin 0.1.1 --dry-runThis will:
- Update version in
Cargo.tomlandpackage.json - Build the TypeScript bindings
- Publish to crates.io (if not dry-run)
- Publish to npm (if not dry-run)
- Create git tag:
tauri-plugin-mcp-bridge/v0.1.1 - Commit version changes
After running, push the tag:
git push origin tauri-plugin-mcp-bridge/v0.1.1
git push origin HEADGitHub Actions will automatically:
- Create a GitHub release
- Extract release notes from CHANGELOG.md
# Release with specific version
npm run release:server 0.1.1
# Or auto-bump
npm run release:server patch
# Dry run
npm run release:server 0.1.1 --dry-runThis will:
- Update version in
package.json - Build the package
- Run tests
- Publish to npm (if not dry-run)
- Create git tag:
mcp-server/v0.1.1 - Commit version changes
After running, push the tag:
git push origin mcp-server/v0.1.1
git push origin HEADBefore releasing, update the CHANGELOG.md in the package directory:
## [Unreleased]
## [0.1.1] - 2024-01-15
### Fixed
* Fixed issue with IPC monitoring
### Changed
* Improved error handling
The release script will extract the changelog entry for the version being released.
Versions follow Semantic Versioning:
- MAJOR: Breaking changes
- MINOR: New features (backward compatible)
- PATCH: Bug fixes (backward compatible)
Tags follow the monorepo pattern:
tauri-plugin-mcp-bridge/v0.1.1mcp-server/v0.1.1
This allows multiple packages to have independent version numbers while maintaining clear organization.
GitHub releases are automatically created by GitHub Actions when tags are pushed. Each release includes:
- Release notes extracted from CHANGELOG.md
- Links to published packages (crates.io, npm)
- Automatic changelog formatting
The tauri-plugin-mcp-bridge package follows Tauri's recommended structure:
- Published to crates.io as
tauri-plugin-mcp-bridge - Includes Rust source code and build scripts
- README.md is included automatically
- Published to npm as
@hypothesi/tauri-plugin-mcp-bridge - Includes TypeScript bindings in
dist-js/ - Type definitions in
dist-js/index.d.ts - Source TypeScript in
guest-js/for reference prepublishOnlyscript ensures build runs before publish
tauri-plugin-mcp-bridge/
├── src/ # Rust plugin code
├── guest-js/ # TypeScript source
├── dist-js/ # Compiled JS + .d.ts (published)
├── Cargo.toml # Rust crate config
├── package.json # NPM package config
└── README.md # Documentation
- Ensure you're logged in:
cargo login <token> - Check that the crate name is available on crates.io
- Verify all required metadata in
Cargo.toml
- Ensure you're logged in:
npm login - Check package name availability
- Verify
filesarray inpackage.jsonincludes all necessary files - Ensure
dist-js/is built before publishing
- Verify the tag was pushed:
git push origin <tag> - Check GitHub Actions workflow logs
- Ensure repository secrets are configured