- Write access to the repository
- Ability to trigger GitHub Actions workflows
- Access to publish to crates.io
pctx uses cargo-dist for automated releases. The workflow is triggered manually via GitHub Actions workflow dispatch.
Update the version number in the package manifest:
# Edit crates/pctx/Cargo.toml and update the version field
# Example: version = "0.2.0"Edit CHANGELOG.md following Keep a Changelog format:
## [0.2.0] - 2025-11-10
### Added
- New feature description
### Changed
- Changed feature description
### Fixed
- Bug fix descriptionUpdate the comparison links at the bottom:
[0.2.0]: https://github.com/portofcontext/pctx/compare/v0.1.0...v0.2.0git add crates/pctx/Cargo.toml CHANGELOG.md Cargo.lock
git commit -m "chore: prepare release v0.2.0"
git push origin main- Go to GitHub Actions
- Click "Run workflow"
- Enter the tag name (e.g.,
v0.2.0) - Click "Run workflow"
The workflow will:
- Build binaries for all supported platforms (Linux, macOS, Windows)
- Create installers (shell, Homebrew, npm)
- Generate checksums and attestations for supply chain security
- Create a GitHub Release with all artifacts
- Publish Homebrew formula to the tap repository
Once the workflow completes (~15-20 minutes):
- Check the Releases page
- Verify all platform binaries are present
- Test the installation methods:
# Shell installer (Linux/macOS)
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/portofcontext/pctx/releases/latest/download/pctx-installer.sh | sh
# Homebrew (macOS/Linux)
brew install portofcontext/tap/pctx
# npm (all platforms)
npm install -g @portofcontext/pctxTo publish Rust library crates to crates.io:
make publish-cratesThis runs locally using cargo-smart-release to handle multi-crate dependencies.
Version format: v1.0.0, v1.2.3
- Fully tested and production-ready
- Published to all distribution channels
- Creates a standard GitHub Release
Version format: v1.0.0-alpha.1, v1.0.0-beta.2, v1.0.0-rc.1
- For testing and early access
- Marked as "pre-release" on GitHub
- May not be published to all channels
All releases are published to GitHub Releases with:
- Pre-built binaries for all platforms
- Source archives
- SHA256 checksums
- GitHub Attestations for supply chain security
- Auto-generated release notes from CHANGELOG.md
curl --proto '=https' --tlsv1.2 -LsSf \
https://github.com/portofcontext/pctx/releases/latest/download/pctx-installer.sh | shFeatures:
- Detects platform automatically
- Verifies checksums
- Installs to
~/.local/bin
brew tap portofcontext/tap
brew install pctxAuto-updated when releases are published.
npm install -g @portofcontext/pctxProvides pre-built native binaries for Node.js users.
pctx is built for the following platforms:
- Linux: x86_64 (glibc and musl), aarch64 (glibc and musl)
- macOS: x86_64 (Intel), aarch64 (Apple Silicon)
- Windows: x86_64 (MSVC)
- Always update CHANGELOG.md before releasing
- Test locally with
dist plananddist build - Use semantic versioning (MAJOR.MINOR.PATCH)
- Tag after merging to main to ensure clean builds
- Monitor the release workflow to catch issues early