Releases: wkoverfield/quilt
Release list
Quilt v0.5.2
What's new
- Durable Git provenance is embedded in every
commit --mineand MCPcommit_minecommit. quilt provenance [commit]inspects and verifies the recorded tree and parent in any clone.- Concurrent actor registration is now locked and atomic.
- Codex and Claude setup guidance now states each enforcement boundary accurately.
- Telemetry identity and release metadata safeguards are hardened.
Prompt correlation remains local to quilt ui; it is not published into Git history.
Quilt v0.5.1
What's new
- Provenance review in
quilt ui. Expand any changed file to inspect its liveHEADto worktree diff with per-line actor attribution, multi-actor conflict labels, and plainly marked unattributed lines. - Local prompt context for Claude Code and Codex. Quilt can show the latest local user prompt before a captured edit. Transcripts are read only when review opens, stay on the loopback-only server, and are rendered as untrusted text.
- Claimed-actor continuity for Codex native capture. An auto-derived Codex hook identity now adopts the sole live whole-file or directory claim holder, keeping the named actor's email, authorship, preview, and commit identity aligned. Explicit
QUILT_ACTORstill wins.
Prompt matching is a best-effort time inference, not a hard link. Other actor types retain per-agent line attribution without prompt context. Raw shell writes, generated files, and pre-existing dirty changes can legitimately remain unattributed.
Full changelog: https://github.com/wkoverfield/quilt/blob/main/CHANGELOG.md
v0.5.0
Added
quilt ui: the fleet dashboard in a browser. One command opens a live
local web view of the same read-only fleet snapshot the terminal shows: who
wrote what (per-actor line counts per file), active claims, blocked and
queued actors, clashes, and the "Needs you" escalation queue. Local-only by
design: binds 127.0.0.1, rejects non-loopback Host headers (DNS-rebinding
guard), writes nothing, and falls back to a free port when 4747 is taken.- Per-file authorship rows in the fleet view.
quilt fleet --json(and
/api/fleetin the UI) now includesfiles: every changed file with
per-actor changed-line counts, unattributed line counts, and the file's
worst overlap (none/adjacent/contended). - Opt-in anonymous telemetry. Off by default;
quilt setupasks once,
on an interactive TTY only, and no answer means no. When enabled, Quilt
sends anonymous usage counts (setup completions, sessions started,
claim granted/denied/queued counts, commits, escalations) under a
locally generated random id. Never code, file paths, repo names, actor
ids, or commit messages; the hot hook path is never instrumented, and
events post from a detached process so no command waits on the network.
quilt telemetry on|offchanges the decision any time;
QUILT_TELEMETRY=0force-disables per process. Documented in the
README and docs/reference.md.
0.4.6: commit integrity
Commit integrity for real multi-agent fleets. The failures found in Forge and The Move now have first-class fixes.
Fixed
- Identical lines stay independently owned. Ownership now addresses changed-operation occurrences, so repeated boilerplate inside one function can belong to different actors and commit independently. When one actor commits, Quilt settles those exact operations before re-indexing what remains. This closes #100 and the phantom-owner portion of #101.
- Concurrent hook calls cannot cross-talk. Pre/Post snapshots are scoped to the individual tool invocation, not just actor + path, so simultaneous calls by the same actor on one file cannot overwrite or consume each other.
- Shared-shell identity fails closed. If the CLI would mutate through the checkout-global current pointer while another actor owns dirty work, Quilt refuses before reconcile and requires
--as,QUILT_ACTOR, orQUILT_SESSION. - Successful commits report completeness. CLI and MCP responses expose whether unsafe/shared files were withheld instead of letting a partial commit look complete.
Added
- Real ownership recovery.
quilt resolve <target> --take --from <actor>transfers dirty operations with an immutable audit record. Plainresolveis explicitly audit-only. - Repository-default author email.
quilt config author.email you@example.comkeeps actor names distinct while using deployment-recognized commit metadata. Gituser.emailis also used before falling back to@quilt.local.
Proof: 290 tests green across local and GitHub CI (Node 20 + 22). Full details in the CHANGELOG.
0.4.5: workspaces, claim liveness, native Codex capture
Workspaces, liveness, and native Codex capture. Three things real fleets hit, fixed.
Added
- Workspace mode. Start your sessions in a directory that holds several repos and it just works: the capture hooks resolve the repo from the FILE being edited, not from where the session started, so each edit is captured into the repo it belongs to. Run
quilt setupat that workspace root once and it wires the root (where sessions load hooks from) plus every repo inside. Previously a session started above the repo silently captured nothing. - Native capture for OpenAI Codex.
quilt setupwiresapply_patchcapture hooks into~/.codex/hooks.jsonwhen Codex CLI is installed (strictly additive; your other Codex hooks are untouched). Codex sessions are captured per file under acodex-<session>id, multi-file patches included, and renames never re-attribute unchanged lines. One Codex reality, stated plainly by setup and doctor: Codex skips newly added hooks until you approve them once in an interactive session. Capture only for now; claim prevention on Codex comes later. - Dead actors can no longer strand live work. A claim whose holder shows no sign of life (no quilt activity for 5 minutes, or an ended session) and provably has nothing to protect (no attributed lines, a clean working tree under the target) is reclaimed automatically the moment someone else needs it: at claim time (the grant reports
reclaimedFrom), at edit time, and whenever a queue is wedged behind it. Uncontended claims keep their full TTL, and a quiet holder with real uncommitted work is never auto-reclaimed. - No more silent misattribution via claim adoption. An anonymous edit inside a claim adopts the holder's identity only when that holder is demonstrably alive. A dead holder's reservation is reclaimed and the edit lands under its real author; a quiet holder with uncommitted work triggers a loud denial instead. Previously the misattribution surfaced only at commit time as "you don't own any committable changes".
Full details in the CHANGELOG.
0.4.4: first-run hardening
First-run hardening. This release makes Quilt's promise hold from the first minute: you are protected the moment quilt setup runs, and every way that can silently not be true now tells you.
Added
quilt update, and staleness you can see.quilt doctorandquilt setupcheck the installed version against npm (cached daily, silent when offline,QUILT_NO_UPDATE_CHECK=1opts out). Being behind is a warning with the exact command; below 0.4.0 makes doctor not-ready, since those builds predate auto-identity.quilt updatedetects how Quilt was installed (npm, pnpm, bun, volta) and runs the right update, or prints it rather than guess.- doctor catches a stale system git. Quilt needs git 2.18+ (
git status --no-renames); an older git on PATH used to fail with a cryptic error deep inside every command. Doctor now names the version, the flag, and the usual fix. - doctor live-tests the MCP server. It spawns the exact command wired in
.mcp.json, runs a real initialize + tools/list handshake, and reports the result. It also states what it cannot see: the claim tools appear in a session only after the client restarts and approves the server, and the capture hooks protect edits either way. - Wrong-directory guidance. Running
setup/init/doctorone level above the repo now names the child repo tocdinto instead of wiring config where no session reads it. - README: a "4 terminals, one repo" quickstart.
quilt setup, open N sessions, done. NoQUILT_ACTOR, no ceremony.
Changed
- Every onboarding surface now leads with the zero-approval path. The hooks capture and protect edits with nothing to approve and nothing to call;
quilt commit --mineworks with or without the MCP server; the MCP claim tools are the optional prevention layer. Setup states the Claude Code restart/approval step in plain words, with the CLI fallback named.
Fixed
- The coordination snippet refreshes in place. The marker is versioned now; a repo onboarded under an older Quilt gets the current snippet on its next
quilt setup(surrounding content preserved) instead of staying frozen on the old one. Doctor warns when the snippet is stale. quilt fleetno longer shows freshly captured edits as "Unattributed / 0 actors". The read-only fleet view overlays the authorship ledger, so an edit whose author is already known displays it immediately.
Full details in the CHANGELOG.
v0.4.3: async claims, and the queue plays fair
The coordination release: claims you can wait on, queue for, and scope your commits by.
Added
- Async claims:
quilt claim <target> --queue(MCPqueue: true). Denied by a holder? Register interest, return immediately, keep working. You are auto-granted the target when it frees, and the grant surfaces at your nextstatus,get_status, orclaimretry as "granted while you waited". FIFO, self-healing, no daemon.quilt fleetshows the queue, and holders see who is waiting behind them. quilt claim <target> --wait [seconds](MCPwait): block until denied targets free up (holder releases, commits, or their lease lapses). Validated eagerly: a swallowed path argument is a loud error, never a silent partial claim.quilt commit --mine [paths...]andpreview --mine [paths...](MCPpaths): a hard allow-list. Name files or directory prefixes and nothing else rides into the commit.- The contested-tree orphan gate: when another actor holds a live claim, a new untracked file you never claimed or edited is left out loudly (
skippedUnowned) instead of swept in by inference. Solo trees are exempt. Forward symbol claims (--creating) and captured edits count as ownership. - Global
--as <id>: per-command actor identity, the ergonomic form ofQUILT_ACTOR=<id>.
Fixed
- The queue outranks a walk-up claim on a just-lapsed lease: "you're next" means next.
- No queue-jumping across mixed granularity: an earlier blocked whole-file waiter reserves its target.
- Holding a narrower claim (a symbol) no longer silently voids your queued interest in the wider one (the whole file).
- Queued grants live at least the full interest window;
releasecancels your own queued interest; grant announcements can no longer be lost to a timing race.
Install: npm install -g @quilt-dev/cli
Full changelog: https://github.com/wkoverfield/quilt/blob/main/CHANGELOG.md
v0.4.2: no silent skips
Nothing leaves your commit silently.
Fixed
- Binary and too-large files are never silently dropped from commits.
package-lock.jsoncould trip the too-large-to-diff classification and vanish fromcommit_minewithout a word. Now a file covered by your whole-file or directory claim commits whole (byte-exact), and an unclaimed one skips loudly: a CLI warning,skippedBinaryin MCP responses, and a claim-it hint.
Docs
- The attribution-rebinding asymmetry, and the deadlock-break play for mutual contention.
Install: npm install -g @quilt-dev/cli
Full changelog: https://github.com/wkoverfield/quilt/blob/main/CHANGELOG.md
v0.4.1: attribution you can trust
A large fix wave from running real multi-agent fleets against one checkout. Two themes: attribution you can trust, and signals worth trusting.
Attribution you can trust
- Symbol claims that bind nothing are denied (with a did-you-mean suggestion) instead of granted-but-non-binding, which could silently protect nothing.
--creating/creating: trueopts into forward claims for symbols you are about to add. - Absolute file paths (what Claude Code hooks and MCP clients actually send) no longer disable prevention and capture.
- Parallel subagents of one session get distinct identities (
agent_id-derived ids), claim adoption binds MCP role claims to native-edit capture, and the checkout-globalquilt startpointer no longer owns other agents' edits. --include-unclaimedcan never touch another actor's claimed paths, and the read layer shows a peer's in-flight hunks as theirs (attribution pending), never "unclaimed". Status carries a file-levelactorsunion.- No more swept, torn, or dropped commits: contested-tree inference gating, torn-symbol withholding, and run-opening trivial-line resolution (
}),, blank lines).
Signals worth trusting
- Clobber false positives eliminated (worktree matching HEAD, rewrites of landed code), and stale clobbers auto-resolve when the victim's work demonstrably landed.
- Claims live as long as you do: a 30-minute TTL renewed by any quilt activity.
releasereports lapsed claims, and denials carry the holder's expiry for retry pacing. - Directory claims (
convex/_generated/) cover codegen output in one claim. commit_minereports its auto-released claims;releaseexplains a zero.
Plus a fresh-user UX pass: version honesty, Cursor and AGENTS.md wiring, setup self-attribution, one identity story, and docs that teach the binding rules (docs/orchestrators.md).
Install: npm install -g @quilt-dev/cli
Full changelog: https://github.com/wkoverfield/quilt/blob/main/CHANGELOG.md
v0.4.0: zero-config identity
Zero-config identity: agents no longer need to be named for capture to flow.
Added
- Automatic actor ids. When no identity is set, Quilt derives one instead of capturing nothing: the Claude Code hooks name each session from its session id (
claude-1a2b3c4d), and the MCP server names each connection from the client's handshake name (cursor-3fa2). Parallel agents get distinct ids with no setup. An explicitQUILT_ACTOR(or per-callactor) always wins, and remains the way to keep one id across sessions or to tell apart several subagents sharing one process or connection. - Identity-optional reads (
get_statuswith no actor) stay identity-less, so the fleet view only shows actors that acted. quilt doctorandquilt setupnow describe the unset-QUILT_ACTORstate as auto-naming instead of a missing requirement.
Install: npm install -g @quilt-dev/cli
Full changelog: v0.3.3...v0.4.0