Skip to content

v0.6.0

Choose a tag to compare

@dcolliervb23 dcolliervb23 released this 18 Sep 03:20
· 40 commits to main since this release

The pool tends itself.

Auto-refresh. Any take, fill, or status that finds the last refresh older than refresh_every (24 hours by default) spawns a detached background refresh --fetch and returns immediately — the git gc --auto pattern. No daemon, no cron, no waiting: using the pool keeps the pool warm, fetching origin and re-warming slots whose lockfiles changed, while your own checkout is never touched.

Details that make it safe:

  • The overdue check-and-claim runs under the pool lock, so overlapping commands cannot double-spawn; a failed spawn hands the duty back instead of suppressing retries.
  • A no-op pass over an empty pool does not mark it fresh; a fetch always counts, so an all-taken pool does not spawn busywork.
  • Opt out with refresh_every = "off" in .warmtree.toml, or WARMTREE_AUTO_REFRESH=off in the environment (handy in CI).
  • A nightly warmtree refresh --fetch in cron still composes, for slots that should be fresh before the day's first command.

With this, the full loop is automatic: origin moves → the next warmtree command notices → slots land on origin's tip with dependencies current → take branches from there. Local branches are never pulled or moved; that remains yours.