Skip to content

Releases: wanghailei/carson

Carson 5.2.0

Choose a tag to compare

@wanghailei wanghailei released this 14 Oct 07:27

Carson 5.2.0 — a minor release: a repository with no commit yet is no longer a dead end.

  • carson start in a repository with no commit yet starts the first task empty, on a branch of its own, and carson land makes main from it and pushes it to GitHub. Before, Carson refused and left the first commit to be made by hand on main, outside any task, which is the very thing Carson exists to prevent.
  • When GitHub was given a main after the repository was cloned empty, carson start and carson land bring it in first, so the first landing builds on it instead of beside it.
  • carson status, carson abandon, carson adopt and carson remove work before the first landing: with no main yet, all a task holds is work main lacks.
  • A deleted main is not mistaken for one never made. Carson refuses, and names the commit main was last at and how to bring it back, instead of starting a history unrelated to the old one.
  • A repository with no main whose trunk has another name, such as master, is told how to rename it.

Carson 5.1.1

Choose a tag to compare

@wanghailei wanghailei released this 06 Oct 07:45

Carson 5.1.1 — a patch.

  • carson remove on Linux without lsof now names the cure: the refusal says lsof ships with macOS and installs on Omarchy with sudo pacman -S lsof. Before, it named only the lack. lsof is now declared in the README as a dependency of carson remove.

Carson 5.1.0

Choose a tag to compare

@wanghailei wanghailei released this 30 Sep 14:36

What changes

  • Every line Carson writes starts with ⧓, so its words stand out in an agent's conversation, as in Carson 4.
  • Every message says what happened, why, and what to do next. Each failure names the command to run again once its cause is cleared, and a refusal of another session's task says to leave it to that session, or when a person must settle it.
  • Carson says nothing in the agents' private language any more: what only a person can settle is said to be a person's.
  • bin/check runs with plain go as well as through mise, so anyone can run the checks.
  • The README is written for Carson's users.

No command changes.

Install

Download the build for your system below, unpack it, and put carson on your PATH. checksums.txt holds each download's SHA-256.

Carson 5.0.0

Choose a tag to compare

@wanghailei wanghailei released this 30 Sep 13:13

Carson 5 is a rewrite in Go of the git tool for coding agents that work in the same repositories at once. Each task starts from the latest main in a worktree of its own, and reaches main only as a finished task landing by fast-forward, so main only ever moves forward.

Commands

  • carson start <task> starts a task from the latest main, in its own worktree under ~/.worktrees, owned by the agent's session.
  • carson status shows main against GitHub's, the main working tree, every task with its owner and whether that owner is still live, and abandoned work.
  • carson land <task> lands a finished task: brought up to the latest main, checked with the repository's bin/check, fast-forwarded, and pushed.
  • carson remove <task> removes a landed task's worktree and branch, keeping its ignored files.
  • carson abandon <task> keeps an unfinished task's work, uncommitted files committed, on a branch abandoned/<task>, and removes its worktree.
  • carson adopt <task> makes a task yours: an ended agent's task, abandoned work, or a branch left without a worktree.

What it keeps to

  • It runs only when called and keeps no state of its own beyond one owner record per worktree.
  • Every check comes before any change, and nothing is ever destroyed: ignored files and abandoned work are kept.
  • Only a task's owner lands, removes or abandons it; an ended owner's task is adopted openly, never taken by guess.
  • It says what it observed, "unknown" when it cannot tell, and what to do next.

Install

Download the build for your system below, unpack it, and put carson on your PATH. checksums.txt holds each download's SHA-256.

Carson 4, the Ruby gem, is kept at the tag ruby-final.

Carson 4.5.0

Choose a tag to compare

@github-actions github-actions released this 23 Sep 03:54

New

  • Harness-aware worktree directories. carson checkin / carson worktree create place the worktree under the calling harness's agent directory — .pi/worktrees/ from a Pi session (detected via PI_CODING_AGENT), .claude/worktrees/ otherwise, exactly as before. Set CARSON_AGENT_DIR to override. Bare-name resolution, .git/info/exclude bookkeeping, and diagnostics follow the chosen directory, and commands that take a worktree name resolve across all agent directories, so worktrees created by another harness remain reachable.
  • Sweep and reap cover .pi/worktrees/. Both agent-directory lists gained .pi.

Why

The worktree directory was hardcoded to .claude/worktrees/, so Pi sessions produced Claude-flavoured paths. Each harness's worktrees now live under their own directory.

Migration

None. Existing .claude/worktrees/ worktrees resolve by name as before.

Carson 4.4.0

Choose a tag to compare

@github-actions github-actions released this 31 Mar 06:45

New

  • Auto-chdir on checkout from inside worktree. carson checkout no longer blocks when the current working directory is inside the worktree being removed. Carson Dir.chdirs to the main worktree root and completes the removal automatically. Both the warehouse (assess_removal) and legacy (remove_check) paths are fixed.
  • Parent shell excluded from held-by-other-process check. held_by_other_process? now excludes Process.ppid (the user's shell that launched Carson) in addition to Process.pid. Prevents false blocks when the user runs carson checkout from inside the worktree.

Why

Running carson checkout from inside the target worktree is the most natural invocation — agents and users are already there. Blocking and printing a recovery command added friction for no safety benefit, since Carson can move its own process out.

Carson 4.3.5

Choose a tag to compare

@github-actions github-actions released this 31 Mar 00:33

Fixed

  • Story language purged from CLI output. checkin/checkout (#509) shipped after the story-language purge (#458) and used "workbench" in every user-facing string — help text, status messages, error messages. All 9 output strings now use technical language ("worktree"). Source-code names unchanged.

New

  • Story-language guard test. test/story_language_guard_test.rb scans all output-producing lines in lib/ for forbidden story-language terms (workbench, warehouse, parcel, courier, bureau, waybill, vault). Strips #{} interpolation before checking. Catches future leaks mechanically — the purge is now a permanent rule, not a one-time pass.

Removed

  • carson audit dissolved. The audit command and its pre-commit gate have been removed entirely. Three of its seven checks were already enforced by the commands that need them (sealed workbench by pack!, working tree by Courier, main sync by sync!). The remaining four (PR status, CI baseline, hooks health, outsider fingerprints) were either unproven at commit time or already called by individual commands. Bare carson now defaults to status instead of audit. The pre-commit hook is now a no-op reserved for future use.

Why

Story language in output has no mechanical enforcement — conventions fail on new code. The guard test closes that gap. Audit dissolution: audit was a remote-centred pre-commit gate; in local-centred mode it was dead weight.

Carson 4.3.4

Choose a tag to compare

@github-actions github-actions released this 30 Mar 22:09

Fixed

  • carson checkin is 13× faster. Removed two redundant git fetch calls that hit GitHub on every checkin. checkin now branches from local main — zero network, 0.7s instead of 9.4s. Local main is the standard; GitHub is a backup, not a gating dependency.

Why

Local-centred mode means local main is the source of truth. Fetching from GitHub on every checkin was a remote-centred assumption baked into the command. The two sequential network round-trips accounted for 90% of the wall time.

Carson 4.3.3

Choose a tag to compare

@github-actions github-actions released this 30 Mar 21:56

Fixed

  • carson checkin is 13× faster. Removed two redundant git fetch calls that hit GitHub on every checkin. checkin now branches from local main — zero network, 0.7s instead of 9.4s. Local main is the standard; GitHub is a backup, not a gating dependency.

Why

Local-centred mode means local main is the source of truth. Fetching from GitHub on every checkin was a remote-centred assumption baked into the command. The two sequential network round-trips accounted for 90% of the wall time.

Carson 4.3.2

Choose a tag to compare

@github-actions github-actions released this 26 Mar 06:39

Fixed

  • Vault gives correct recovery when main worktree is dirty. vault_blocked now inspects stderr from git merge --ff-only to distinguish dirty-tree conflicts from diverged-history blocks. Previously, both cases got the generic "rebase" advice — misleading when the branch was already a valid fast-forward descendant and the real problem was uncommitted files in the main worktree.

Why

An agent rebased three times on an already-correct branch because Carson misdiagnosed a dirty-tree block as divergence. The fix: read stderr, give the right advice. Scars, not speculation.