Skip to content

v0.5.0

Choose a tag to compare

@dcolliervb23 dcolliervb23 released this 18 Sep 02:27
· 47 commits to main since this release

The trust release: the pool now stays current, honest, and held.

Slots stay current. warmtree refresh --fetch fetches origin and parks slots on the remote tip — no manual pull needed, and your own checkout is never touched. A warm take now branches from the slot's parked position, so a freshly refreshed slot is never dragged back to a stale local base. One cron line (warmtree refresh --fetch) keeps the whole pool tracking origin.

State stays honest. A ready slot that someone checked a branch out in behind warmtree's back is now detected: take refuses to claim it (recording what git says instead), and doctor reports it, with --fix marking it taken to preserve the work. Ownership checks ensure a replaced directory — even one inside the repo — can never be mistaken for a slot.

Slots are held. take and adopt lease the slot to the claiming session; release refuses while a different, still-running session holds it (--force overrides, stale leases self-clear). The race where anything could reset a slot out from under a working shell, editor, or exec is closed for the common case.

Hooks can no longer hang the pool. Pool git operations run with repo hooks disabled — a lingering post-checkout hook (telemetry spawning children) could previously hang take indefinitely. Per-slot setup belongs to [warm] run/copy; [pool] git_hooks = true restores hooks if yours are quick and wanted.

Agents now default to warmtree. warmtree instructions (and init, automatically) maintains a marked prefer-warmtree block in your user-level agent instruction files — Claude Code, Copilot, Codex — so agents reach for the pool instead of git worktree add from habit. Repo-level with --repo. A strong preference by design, not a ban. The skill also gained slot house rules and the default-not-fallback framing.

Also: the README explains when to use warmtree, worktrunk, or both, with a feature comparison.