@staff0rd/assist 0.430.0 → 0.432.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -310,6 +310,8 @@ From WSL, the selector can also surface and drive Windows-host repos (requires `
310
310
 
311
311
  A `run:` entry in `assist.yml` flagged `server: true` (with an optional display-only `port:`) is treated as a singleton **dev server**: at most one may be live per normalised git remote (`getCurrentOrigin`), i.e. across a clone and all its sibling clones of the same repo. Every session card for a repo that defines a `server: true` run shows a **▶ start** button (surfaced by `GET /api/server-runs?cwd=`); clicking it sends `create-run`. The daemon enforces the singleton on `create-run` (and on relaunch via retry) — if a server run is already live for that remote it rejects with a conflict instead of starting a second one that would collide on the port. The web UI turns that conflict into a "replace running server?" prompt; confirming stops the old server and starts the new one, declining leaves it untouched. The serving session's own card shows a `serving :<port>` chip and a **⏹ stop** button (stop leaves a relaunchable card rather than dismissing it), and the slot frees automatically whenever that session stops, exits, or is killed. Non-`server` runs (`build`, `test`, …) are unconstrained.
312
312
 
313
+ Concurrent sessions in one repo can be isolated with native git worktrees instead of keeping multiple physical clones. Opt in per repo (default off): `assist config set worktree.enabled true --repo`. A lone session runs in the clone's own tree unchanged; a concurrent session spills into an adjacent `<clone>-N` worktree with its own tree, index, and HEAD. New worktrees are seeded so they build and run — a per-worktree dependency install (`worktree.install`: `true` auto-detects the package manager from the lockfile, or give an explicit command; `false` skips it — `node_modules` is never shared) and a copy of the configured gitignored files (`worktree.copy`, default `.env`, `settings.local.json`, `.claude/settings.local.json`). Worktrees hang beside the clone under `worktree.root` (default: the clone's parent). A worktree is reaped only when its session reaches `done`, and a session cannot reach `done` while its tree is dirty or holds local-only commits (`push:false`) — the card shows why (`waiting — unpushed commits`) and the daemon fs-watches the tree's git state, auto-reaping the moment the branch becomes durable (pushed). Worktrees orphaned across a daemon restart are reconciled on startup against a persisted registry (`~/.assist/worktrees.json`); nothing is removed while undurable. With worktree mode off, behaviour is unchanged.
314
+
313
315
  When iterating on assist itself: web server changes only need the `assist sessions` process restarted — sessions survive. Daemon/session-core changes need `assist daemon restart` to load the new code; this kills the PTYs, then claude sessions — including assist sessions that wrap claude, like `assist draft` — are auto-respawned via `claude --resume` with scrollback starting fresh, while run sessions (and assist sessions whose claude sessionId was never discovered) reappear as not-restored tiles that can be retried. A `--once` draft/bug/refine session is respawned through its assist wrapper instead of bare `claude --resume`, so its `assist signal done` watcher is re-established and the card still auto-closes.
314
316
 
315
317
  - `assist next [id] [--once]` - Alias for `backlog next [id]`; `--once` exits after the first completed item run instead of prompting for another