Version Synchronization Summary

This document summarizes the version management setup completed for the Scarab workspace.

Overview

All workspace crates have been synchronized to version 0.1.0-alpha.1 with shared metadata inheritance and automated release tooling configured.

Changes Made

1. Root Cargo.toml Updates

Added [workspace.package] section with shared metadata:

[workspace.package]
version = "0.1.0-alpha.1"
authors = ["Scarab Team <team@raibid-labs.com>"]
license = "MIT OR Apache-2.0"
repository = "https://github.com/raibid-labs/scarab"
homepage = "https://github.com/raibid-labs/scarab"
edition = "2021"
rust-version = "1.75"

Location: /home/beengud/raibid-labs/scarab/Cargo.toml

2. Individual Crate Updates

Updated all 10 workspace crates to inherit from workspace metadata:

CrateVersionDescription
scarab-client0.1.0-alpha.1Bevy-based GUI client
scarab-daemon0.1.0-alpha.1Headless daemon server
scarab-protocol0.1.0-alpha.1IPC protocol definitions
scarab-plugin-api0.1.0-alpha.1Plugin API
scarab-plugin-compiler0.1.0-alpha.1Fusabi plugin compiler
scarab-config0.1.0-alpha.1Configuration system
scarab-platform0.1.0-alpha.1Platform abstraction layer
scarab-nav0.1.0-alpha.1Navigation and window management
scarab-session0.1.0-alpha.1Session management
scarab-palette0.1.0-alpha.1Color palette management

Each crate now uses workspace inheritance:

[package]
name = "scarab-client"
version.workspace = true
edition.workspace = true
authors.workspace = true
license.workspace = true
repository.workspace = true
homepage.workspace = true
description = "Bevy-based GUI client for Scarab terminal emulator"

3. VERSION File

Created root-level version file for CI/CD and automation:

Location: /home/beengud/raibid-labs/scarab/VERSION

Content: 0.1.0-alpha.1

4. Documentation

Created comprehensive versioning documentation:

docs/VERSIONING.md

Complete versioning strategy including:

  • Semantic versioning guidelines
  • Pre-1.0 development conventions
  • Alpha/Beta/RC release workflows
  • Version bumping procedures
  • Release checklist
  • Workspace synchronization details

Location: /home/beengud/raibid-labs/scarab/docs/VERSIONING.md

docs/VERSION_MANAGEMENT_QUICKSTART.md

Quick reference guide with:

  • Common version commands
  • cargo-release usage
  • Manual version updates
  • Version consistency checks
  • Troubleshooting tips

Location: /home/beengud/raibid-labs/scarab/docs/VERSION_MANAGEMENT_QUICKSTART.md

5. cargo-release Configuration

Created automated release configuration:

Location: /home/beengud/raibid-labs/scarab/.cargo/release.toml

Features:

  • Workspace-aware releasing
  • Pre-release hooks (runs tests before release)
  • Automatic VERSION file updates
  • CHANGELOG.md integration
  • Git tag creation with proper naming (v{version})
  • Consolidated commits for workspace releases
  • Package ordering for proper dependency releases

6. Version Verification Script

Created automated verification script:

Location: /home/beengud/raibid-labs/scarab/scripts/verify-versions.sh

Checks:

  • VERSION file consistency
  • Workspace version in Cargo.toml
  • All crate versions match
  • No hardcoded versions
  • All crates use workspace inheritance

Verification Results

All verification checks passed:

=== Scarab Version Verification ===

1. VERSION file: 0.1.0-alpha.1
2. Workspace version: 0.1.0-alpha.1
3. All 10 crates at: 0.1.0-alpha.1
4. ✓ All crates use workspace version inheritance
5. ✓ All 10 crates inherit workspace version

=== All version checks passed! ===

Build Verification

Workspace builds successfully with new versions:

cargo check --workspace
# ✓ All checks passed

Usage Examples

Check current version

cat VERSION
# Output: 0.1.0-alpha.1

Verify version consistency

./scripts/verify-versions.sh

Bump to next alpha

cargo release --version 0.1.0-alpha.2 --workspace --dry-run
cargo release --version 0.1.0-alpha.2 --workspace --execute

Release beta

cargo release --version 0.1.0-beta.1 --workspace --execute

Release stable patch

cargo release patch --workspace --execute

Internal Dependencies

All internal workspace dependencies use path-based references without version constraints:

[dependencies]
scarab-protocol = { path = "../scarab-protocol" }
scarab-plugin-api = { path = "../scarab-plugin-api" }
scarab-config = { path = "../scarab-config" }

This ensures automatic version synchronization across the workspace.

Benefits

  1. Consistent Versioning: All crates share the same version number
  2. Single Source of Truth: Version defined once in workspace root
  3. Automated Releases: cargo-release handles version bumping, tagging, and changelog
  4. Reduced Errors: No manual version updates across multiple files
  5. Clear Compatibility: Same version = guaranteed compatibility
  6. Easy Maintenance: Update version in one place

Next Steps

For Alpha Release Preparation

  1. Update CHANGELOG.md with changes for 0.1.0-alpha.1
  2. Run full test suite: cargo test --workspace --all-features
  3. Run benchmarks: cargo bench --workspace
  4. Build release binaries: cargo build --workspace --release
  5. Test binaries on target platforms
  6. Create release with: cargo release --workspace --execute

For Future Releases

  1. Follow guidelines in docs/VERSIONING.md
  2. Use cargo release for automated version management
  3. Run ./scripts/verify-versions.sh before each release
  4. Maintain CHANGELOG.md with each release
  5. Tag releases with v{version} format

File Locations

FileLocation
Workspace Cargo.toml/home/beengud/raibid-labs/scarab/Cargo.toml
VERSION file/home/beengud/raibid-labs/scarab/VERSION
cargo-release config/home/beengud/raibid-labs/scarab/.cargo/release.toml
Versioning docs/home/beengud/raibid-labs/scarab/docs/VERSIONING.md
Quick start guide/home/beengud/raibid-labs/scarab/docs/VERSION_MANAGEMENT_QUICKSTART.md
Verification script/home/beengud/raibid-labs/scarab/scripts/verify-versions.sh

References


Status: ✓ Complete Version: 0.1.0-alpha.1 Date: 2025-11-24 Verified: All workspace crates synchronized