Skip to content

Releases: wkoverfield/quilt

Quilt v0.5.2

Choose a tag to compare

@wkoverfield wkoverfield released this 14 Jul 05:26
1c10214

What's new

  • Durable Git provenance is embedded in every commit --mine and MCP commit_mine commit.
  • 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

Choose a tag to compare

@wkoverfield wkoverfield released this 14 Jul 03:41
72d794c

What's new

  • Provenance review in quilt ui. Expand any changed file to inspect its live HEAD to 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_ACTOR still 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

Choose a tag to compare

@wkoverfield wkoverfield released this 13 Jul 17:57
bf9327b

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/fleet in the UI) now includes files: 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 setup asks 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|off changes the decision any time;
    QUILT_TELEMETRY=0 force-disables per process. Documented in the
    README and docs/reference.md.

0.4.6: commit integrity

Choose a tag to compare

@wkoverfield wkoverfield released this 11 Jul 13:19
f3c3673

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, or QUILT_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. Plain resolve is explicitly audit-only.
  • Repository-default author email. quilt config author.email you@example.com keeps actor names distinct while using deployment-recognized commit metadata. Git user.email is 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

Choose a tag to compare

@wkoverfield wkoverfield released this 09 Jul 07:37

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 setup at 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 setup wires apply_patch capture hooks into ~/.codex/hooks.json when Codex CLI is installed (strictly additive; your other Codex hooks are untouched). Codex sessions are captured per file under a codex-<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

Choose a tag to compare

@wkoverfield wkoverfield released this 08 Jul 23:37

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 doctor and quilt setup check the installed version against npm (cached daily, silent when offline, QUILT_NO_UPDATE_CHECK=1 opts 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 update detects 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/doctor one level above the repo now names the child repo to cd into instead of wiring config where no session reads it.
  • README: a "4 terminals, one repo" quickstart. quilt setup, open N sessions, done. No QUILT_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 --mine works 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 fleet no 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

Choose a tag to compare

@wkoverfield wkoverfield released this 06 Jul 00:18
4e5423b

The coordination release: claims you can wait on, queue for, and scope your commits by.

Added

  • Async claims: quilt claim <target> --queue (MCP queue: 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 next status, get_status, or claim retry as "granted while you waited". FIFO, self-healing, no daemon. quilt fleet shows the queue, and holders see who is waiting behind them.
  • quilt claim <target> --wait [seconds] (MCP wait): 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...] and preview --mine [paths...] (MCP paths): 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 of QUILT_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; release cancels 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

Choose a tag to compare

@wkoverfield wkoverfield released this 04 Jul 21:33
6e913a1

Nothing leaves your commit silently.

Fixed

  • Binary and too-large files are never silently dropped from commits. package-lock.json could trip the too-large-to-diff classification and vanish from commit_mine without 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, skippedBinary in 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

Choose a tag to compare

@wkoverfield wkoverfield released this 04 Jul 20:22
699edbe

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: true opts 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-global quilt start pointer no longer owns other agents' edits.
  • --include-unclaimed can 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-level actors union.
  • 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. release reports lapsed claims, and denials carry the holder's expiry for retry pacing.
  • Directory claims (convex/_generated/) cover codegen output in one claim.
  • commit_mine reports its auto-released claims; release explains 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

Choose a tag to compare

@wkoverfield wkoverfield released this 02 Jul 15:46
7efb51a

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 explicit QUILT_ACTOR (or per-call actor) 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_status with no actor) stay identity-less, so the fleet view only shows actors that acted.
  • quilt doctor and quilt setup now describe the unset-QUILT_ACTOR state as auto-naming instead of a missing requirement.

Install: npm install -g @quilt-dev/cli

Full changelog: v0.3.3...v0.4.0