Skip to content

Release v0.12.0

Workspace Support - Monorepo Detection and Commit Scope Inference

Automatically detects 6 monorepo types (Cargo, pnpm, npm, Lerna, Nx, Turbo), maps changed files to packages, and injects scope suggestions into LLM prompts for more accurate commit messages. Zero-config by default with full manual override support.

Added

Monorepo Workspace Detection

  • New src/workspace/ module detecting Cargo workspace, pnpm-workspace.yaml, npm/yarn workspaces, lerna.json, nx.json, and turbo.json
  • Parses workspace member glob patterns (e.g., packages/*, crates/**) into matching prefixes
  • Detection priority: Cargo > Pnpm > Npm > Lerna > Nx > Turbo
  • All detection errors are non-fatal: logs warning and returns None

Commit Scope Inference

  • Maps changed files to workspace packages
  • Scope rules: 1 package → short name, 2-3 packages → comma-separated, 4+ → None (let LLM decide)
  • Injects ## Workspace: section into LLM user prompt with monorepo type, affected packages, and suggested scope
  • -v mode shows detection results; default silent

Workspace Configuration

  • New [workspace] config section with enabled, members, and scope_mappings fields
  • members: manually specify workspace patterns, skipping auto-detection
  • scope_mappings: remap auto-inferred package names to custom scope strings
  • Enabled by default; set enabled = false to disable

Tests

  • 14 end-to-end tests in workspace_e2e_test.rs covering all 6 workspace types
  • Unit tests for scope inference, prompt injection, and glob-to-prefix conversion

Changed

Release Workflow Improved

  • Release now creates a draft first, publishes only after all build/publish jobs succeed
  • Asset download uses gh release download instead of curl for reliability

Dependencies

  • Added toml and serde_yml for workspace config file parsing

Upgrade

bash
# Homebrew
brew upgrade gcop-rs

# Cargo
cargo install gcop-rs

# pip
pip install --upgrade gcop-rs