Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,41 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.19.0] - 2026-04-14

### Added
- **gr2 team-workspace model** — declarative spec, plan, and apply lifecycle
- `gr2 init` creates team workspace structure (agents/, repos/, .grip/)
- `gr2 spec show/validate` for workspace spec management
- `gr2 plan` diffs workspace spec into an execution plan
- `gr2 apply` materializes repos via git clone into unit workspaces (#514)
- `gr2 apply --autostash` automatically stashes and restores dirty repos (#534)
- Partial unit convergence: detects and clones missing repos in existing units (#539)
- `gr2 team add/list/remove` for agent workspace management
- `gr2 repo add/list/remove` for repo registry
- `gr2 unit add/list/remove` for unit registry
- Guard checks with dirty state detection via `git status --porcelain`
- Stash state audit trail in `.grip/state/stash.toml`
- **Checkout lifecycle commands** (#489) — `gr checkout --create`, `--orphan`
- **Cache-backed checkout creation** (#485) — checkout creates from local cache when available
- **Machine-level manifest repo caches** (#484) — shared manifest caches across workspaces
- **`gr migrate in-place`** (#458) — upgrade existing workspaces without re-cloning
- **E2E demo script** (#454) — automated release verification

### Changed
- **gr2 binary removed from main crate** — gr2 development continues as a standalone Python CLI; Rust gr2 code retained as library
- CI: Windows tests run in non-blocking lane (#487)
- Stripped premium prompts from migrate flow (#510)

### Fixed
- Spawn model passthrough from agents.toml (#474)
- Root manifest creation during migrate in-place (#467)
- Auto-reclone spaces/main when not a git repo (#470)
- Migrate linked worktrees into griptrees (#466)
- Preserve .env at gripspace root during worktree repair
- Stable pane IDs for dashboard targeting (#453)
- Benchmark CI fixture literals

## [0.17.1] - 2026-03-12

### Added
Expand Down
5 changes: 3 additions & 2 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 1 addition & 6 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "gitgrip"
version = "0.18.0"
version = "0.19.0"
edition = "2021"
rust-version = "1.80"
description = "Multi-repo workflow tool - manage multiple git repositories as one"
Expand All @@ -24,10 +24,6 @@ path = "src/main.rs"
name = "gitgrip"
path = "src/main.rs"

[[bin]]
name = "gr2"
path = "src/bin/gr2.rs"

[lib]
name = "gitgrip"
path = "src/lib.rs"
Expand All @@ -47,7 +43,6 @@ release-logs = ["tracing/release_max_level_info"]
max-perf = ["tracing/max_level_off"]

[dependencies]
gr2_cli = { package = "gr2-cli", path = "gr2" }
# Async runtime
tokio = { version = "1", features = ["rt-multi-thread", "macros", "process", "time", "net", "io-util", "sync"] }
uuid = { version = "1", features = ["v4"] }
Expand Down
6 changes: 6 additions & 0 deletions gr2/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ version = "0.1.0"
edition = "2021"
publish = false

[[bin]]
name = "gr2"
path = "src/main.rs"

[lib]
name = "gr2_cli"
path = "src/lib.rs"
Expand All @@ -13,4 +17,6 @@ anyhow = "1"
chrono = { version = "0.4", features = ["serde"] }
clap = { version = "4", features = ["derive"] }
serde = { version = "1", features = ["derive"] }
tokio = { version = "1", features = ["rt-multi-thread", "macros"] }
toml = "0.8"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
4 changes: 2 additions & 2 deletions src/bin/gr2.rs → gr2/src/main.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//! gr2 CLI entry point
//! gr2 CLI entry point (development binary, not shipped with `cargo install gitgrip`)

use clap::Parser;
use gr2_cli::args::Cli;
Expand All @@ -9,7 +9,7 @@ async fn main() -> anyhow::Result<()> {

if cli.verbose {
tracing_subscriber::fmt()
.with_env_filter("gitgrip=debug")
.with_env_filter("gr2=debug")
.with_target(false)
.init();
} else {
Expand Down
Loading
Loading