Release Process
How to create and publish new ck releases.
Version Tagging Convention
IMPORTANT: Tags follow the format X.Y.Z (NO v prefix):
bash
# Correct format
git tag 0.5.4
git tag 1.0.0
# Incorrect format (do not use)
git tag v0.5.4Always check existing tags first:
bash
git tag --sort=-version:refnamePre-Release Checklist
1. Quality Checks
Run all checks in order:
bash
# 1. Lint (fix all warnings)
cargo clippy --workspace --all-features --all-targets -- -D warnings
# 2. Format
cargo fmt --all
# 3. Test
cargo test --workspace
# 4. Feature matrix
cargo hack test --each-feature --workspace
# 5. MSRV check
cargo hack check --each-feature --locked --rust-version --workspace2. Update Documentation
- [ ] Update
--helpoutput if features changed - [ ] Update README.md with new features
- [ ] Update docs-site if needed
- [ ] Check examples still work
Version Bump Process
1. Update Workspace Version
Edit root Cargo.toml:
toml
[workspace.package]
version = "0.5.4" # Update this2. Update All Crate Versions
bash
# Find and replace across all Cargo.toml files
find . -name "Cargo.toml" -exec sed -i '' 's/version = "0.5.3"/version = "0.5.4"/g' {} \;
# Verify changes
git diff3. Update CHANGELOG.md
Add comprehensive release notes following this format:
markdown
## [0.5.4] - 2025-10-13
### Added
- **Feature name**: Clear user-facing description
- **Technical capability**: What it enables
### Fixed
- **Bug description**: What was broken and how it's fixed
- **Performance issue**: Specific improvements made
### Technical
- **Implementation details**: For maintainers and contributors
- **Dependencies**: New dependencies addedGuidelines:
- User-facing language in Added/Fixed
- Technical details in Technical section
- Include issue numbers:
(#123) - Credit contributors:
(@username)
4. Update Version in Other Docs
bash
# Check for version references
grep -r "0.5.3" . --exclude-dir=target --exclude-dir=.git
# Update as needed
# - PRD.txt
# - docs-site/package.json
# - Any hardcoded version stringsCreating the Release
1. Commit Changes
bash
# Stage changes
git add .
# Commit with clear message
git commit -m "chore: bump version to 0.5.4"2. Create Tag
bash
# Create annotated tag (NO 'v' prefix)
git tag -a 0.5.4 -m "Release 0.5.4"
# Verify tag
git tag --list | grep 0.5.43. Push to GitHub
bash
# Push commits
git push origin main
# Push tag
git push origin 0.5.4Publishing to crates.io
1. Publish in Dependency Order
bash
# Publish foundation crates first
cargo publish --package ck-core
cargo publish --package ck-models
# Then dependent crates
cargo publish --package ck-chunk
cargo publish --package ck-ann
cargo publish --package ck-embed
cargo publish --package ck-index
cargo publish --package ck-engine
# Finally, the CLI
cargo publish --package ck-cli2. Verify Publication
bash
# Check crates.io
open https://crates.io/crates/ck-search
# Test installation
cargo install ck-search --force
ck --versionGitHub Release
1. Create Release on GitHub
- Go to https://github.com/BeaconBay/ck/releases
- Click “Draft a new release”
- Select tag:
0.5.4 - Release title:
ck 0.5.4 - Copy CHANGELOG.md section for this version
- Publish release
2. Attach Binaries (Optional)
If building platform-specific binaries:
bash
# Build release binaries
cargo build --release --target x86_64-unknown-linux-gnu
cargo build --release --target x86_64-apple-darwin
cargo build --release --target x86_64-pc-windows-gnu
# Attach to GitHub releasePost-Release Tasks
1. Announce Release
- [ ] GitHub Discussions (if enabled)
- [ ] Discord/Slack (if applicable)
- [ ] Twitter/social media (if applicable)
2. Update Documentation Sites
- [ ] Deploy docs-site if changes made
- [ ] Update any external documentation links
3. Monitor Issues
- [ ] Watch for installation issues
- [ ] Check for regression reports
- [ ] Respond to questions
Hotfix Process
For urgent bug fixes:
1. Create Hotfix Branch
bash
git checkout -b hotfix/0.5.5 0.5.42. Fix Bug
bash
# Make minimal changes to fix bug
# Add test for regression
cargo test
# Commit fix
git commit -m "fix: critical bug description (#issue)"3. Release Hotfix
bash
# Bump patch version
# Update CHANGELOG.md
# Follow normal release process
git tag 0.5.5
git push origin 0.5.5
cargo publish --package ck-cliVersioning Strategy
Follow Semantic Versioning:
MAJOR (X.0.0)
Breaking changes:
- CLI flag changes that break scripts
- Output format changes
- Index format changes requiring rebuild
MINOR (0.X.0)
New features (backward compatible):
- New search modes
- New CLI flags
- New embedding models
- Performance improvements
PATCH (0.0.X)
Bug fixes (backward compatible):
- Bug fixes
- Documentation updates
- Minor performance improvements
Troubleshooting
Publication Fails
bash
# Check if already published
cargo search ck-search
# Verify credentials
cargo login
# Check network
ping crates.ioTag Conflicts
bash
# Delete local tag
git tag -d 0.5.4
# Delete remote tag (careful!)
git push origin :refs/tags/0.5.4
# Recreate correctly
git tag 0.5.4
git push origin 0.5.4Version Mismatch
bash
# Find all Cargo.toml files
find . -name "Cargo.toml" | xargs grep "version ="
# Verify consistency
# Re-run find/replace if neededRelease Checklist
Use this checklist for each release:
- [ ] All quality checks pass (clippy, fmt, test)
- [ ] Version bumped in all Cargo.toml files
- [ ] CHANGELOG.md updated with release notes
- [ ] README.md updated if features changed
- [ ]
--helpoutput reflects changes - [ ] Committed with clear message
- [ ] Tagged with correct format (X.Y.Z, no ‘v’)
- [ ] Pushed commits and tag to GitHub
- [ ] Published to crates.io (all crates in order)
- [ ] Verified installation works
- [ ] Created GitHub release with notes
- [ ] Announced release (if applicable)
Next Steps
- Review development guide
- Check testing guidelines
- See architecture docs
