spawn/packages/cli/src
Ahmed Abushagur 655a909955
Some checks are pending
CLI Release / Build and release CLI (push) Waiting to run
Lint / macOS Compatibility (push) Waiting to run
Lint / ShellCheck (push) Waiting to run
Lint / Biome Lint (push) Waiting to run
fix(update-check): auto-install patch bumps without SPAWN_AUTO_UPDATE (#3296)
auto-install to same-major.minor bumps. The intent was "give users control
over feature updates" but the effect was "nobody installs security patches"
because the default became notice-only for everything.

This decouples the two ideas and aligns the policy with semver intent:

  - PATCH bumps (1.0.5 -> 1.0.7, same major.minor): auto-install always,
    no opt-in needed. Patches are reserved for bug fixes and security
    hardening. Blast radius is bounded by semver: no behavior changes,
    no new features, no breaking changes.

  - MINOR / MAJOR bumps (1.0.x -> 1.1.0, 1.x.x -> 2.0.0): respect
    SPAWN_AUTO_UPDATE=1 as opt-in. These can contain behavior changes
    and users should decide when to move to them.

  - SPAWN_NO_AUTO_UPDATE=1: new explicit opt-out for CI environments
    or pinned installs that need a fully static CLI.

Caveat — the one-time hurdle: users currently on 1.0.6 won't get 1.0.7
automatically, because they're still running 1.0.6's update-check.ts
which honors the old opt-in gate. Once they reach 1.0.7 via spawn update
(or by setting SPAWN_AUTO_UPDATE=1), every future patch will propagate
automatically and the fleet becomes self-healing on security.

Tests:
- 5 new tests lock in the policy (patch auto without env, minor notice
  without env, minor auto with env, major notice without env, explicit
  opt-out suppresses patch)
- All 21 update-check tests pass (16 existing + 5 new)
- 2109/2109 total suite

Bumps 1.0.6 -> 1.0.7.
2026-04-14 10:38:08 +00:00
..
__tests__ fix(update-check): auto-install patch bumps without SPAWN_AUTO_UPDATE (#3296) 2026-04-14 10:38:08 +00:00
aws fix(security): shell-quote package names in cloud-init scripts (#3220) 2026-04-07 15:35:44 +07:00
commands fix: resolve 4 production TypeScript type errors (#3266) 2026-04-11 17:16:47 +07:00
daytona fix(security): replace eval-style interpolation with env var in allowOpenClawPreviewOrigin (#3217) 2026-04-06 23:09:45 -07:00
digitalocean fix(security): shell-quote package names in cloud-init scripts (#3220) 2026-04-07 15:35:44 +07:00
gcp fix(security): shell-quote package names in cloud-init scripts (#3220) 2026-04-07 15:35:44 +07:00
hetzner fix(security): shell-quote package names in cloud-init scripts (#3220) 2026-04-07 15:35:44 +07:00
local fix: resolve 4 production TypeScript type errors (#3266) 2026-04-11 17:16:47 +07:00
shared feat(cli): hermes web dashboard tunnel support (#3295) 2026-04-14 08:43:27 +07:00
sprite fix(security): expand $HOME before path validation in downloadFile (#3080) 2026-03-30 19:56:05 +00:00
flags.ts fix(cli): add --flat to KNOWN_FLAGS so spawn list --flat works (#3137) 2026-04-01 16:33:45 +07:00
guidance-data.ts refactor: remove dead exports only used within their own files (#2431) 2026-03-10 08:51:15 -04:00
history.ts feat: recursive spawn (--beta recursive) (#2978) 2026-03-25 10:42:09 -07:00
index.ts feat: --beta skills — pre-install MCP servers and skills on VMs (#3258) 2026-04-10 09:02:16 -07:00
manifest.ts fix: always fetch manifest from GitHub, 3s timeout for bad wifi (#3272) 2026-04-12 07:54:40 +07:00
picker.ts refactor: remove dead exported types from picker.ts and spawn-config.ts (#2553) 2026-03-12 21:43:05 -04:00
security.ts fix(test): check sensitive paths before lstat to fix macOS permission error (#3157) 2026-04-03 10:12:20 +07:00
unicode-detect.ts feat: Bun workspace monorepo — packages/cli + packages/shared (#1853) 2026-02-23 22:07:05 -08:00
update-check.ts fix(update-check): auto-install patch bumps without SPAWN_AUTO_UPDATE (#3296) 2026-04-14 10:38:08 +00:00