Skip to content

Releases

GWZ releases are distributed through GitHub Releases for the gwz-cli repository:

https://github.com/owebeeone/gwz-cli/releases

The hosted documentation is built from the tag of the most recently published release, so its command model matches the released CLI rather than unreleased work on main.

Unreleased Compatibility Notes

  • First-class merge JSON and JSONL include the complete current merge-response key set, including finalization progress. Structured errors include target_kind and retain member id/path context even for whole-operation preflight failures. Because GWZ is pre-1.0, strict consumers must tolerate additive keys.
  • Merge status rows expose durable pending-action reconciliation as NotStarted, ExpectedConflict, CompletedExactly, or Ambiguous. Ambiguity is also reported as dedicated structured drift and remains mutation-blocking.
  • Merge and pull --sync merge reject source and target commits with unrelated histories, matching Git porcelain. GWZ does not implicitly allow unrelated histories.
  • While a coordinated merge is open, the accepted workspace lock remains the exact pre-merge baseline. Clean, conflicted, failed, and unattempted outcomes are retained in the local durable operation record rather than published as a partial composition.
  • Merge commits use the quoted message Merge '<source>' into '<target-branch>' with GWZ-Merge-ID and GWZ-Operation-ID trailers. A request that creates a commit supplies its author/committer identity when present; otherwise the target repository identity is used.
  • Coordinated merge start, dry-run, status, continue, and safe abort are available together. Successful changed merges publish a checked root composition commit; interrupted finalization resumes idempotently. Recovery must not substitute raw git merge --abort for the coordinated operation.

Install Latest

macOS or Linux:

curl --proto '=https' --tlsv1.2 -LsSf \
  https://github.com/owebeeone/gwz-cli/releases/latest/download/gwz-installer.sh | sh

Windows PowerShell:

powershell -ExecutionPolicy Bypass -c "irm https://github.com/owebeeone/gwz-cli/releases/latest/download/gwz-installer.ps1 | iex"

Install A Pinned Version

Replace latest with a concrete tag:

https://github.com/owebeeone/gwz-cli/releases/download/v0.9.0/gwz-installer.sh
https://github.com/owebeeone/gwz-cli/releases/download/v0.9.0/gwz-installer.ps1

Verify Assets

Release assets are checksummed and have GitHub artifact attestations. For stronger verification:

  1. Download the release archive and checksum file.
  2. Compare the archive SHA-256 with the checksum.
  3. Verify the GitHub artifact attestation.
  4. Run gwz --version.
  5. Run gwz --help.

Smoke Test A Unix Installer

tmp="$(mktemp -d)"

curl --proto '=https' --tlsv1.2 -LsSf \
  https://github.com/owebeeone/gwz-cli/releases/latest/download/gwz-installer.sh \
  -o "${tmp}/gwz-installer.sh"

GWZ_UNMANAGED_INSTALL="${tmp}/bin" \
GWZ_NO_MODIFY_PATH=1 \
sh "${tmp}/gwz-installer.sh"

"${tmp}/bin/gwz" --version
"${tmp}/bin/gwz" --help

Smoke Test A Windows Installer

$ErrorActionPreference = "Stop"

$tmp = Join-Path $env:TEMP "gwz-test-$([guid]::NewGuid())"
New-Item -ItemType Directory -Force -Path $tmp | Out-Null

$installer = Join-Path $tmp "gwz-installer.ps1"
Invoke-WebRequest `
  "https://github.com/owebeeone/gwz-cli/releases/latest/download/gwz-installer.ps1" `
  -OutFile $installer

$env:GWZ_UNMANAGED_INSTALL = Join-Path $tmp "bin"
$env:GWZ_NO_MODIFY_PATH = "1"

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
& $installer

$exe = Join-Path $env:GWZ_UNMANAGED_INSTALL "gwz.exe"
& $exe --version
& $exe --help

Local Release Checks

From the development workspace:

cargo fmt --check
cargo test
cargo run -q -p gwz -- --help
python scripts/generate_cli_reference.py --check

When changing command docs, inspect the generated reference and spot-check command help for the affected commands:

cargo run -q -p gwz -- help status
cargo run -q -p gwz -- help tag

scripts/release.py runs the generated CLI reference check by default before it commits the release worktree. If the release must proceed while docs are being reconciled separately, pass --no-doc-check; otherwise update the reference with:

python scripts/generate_cli_reference.py --write