Skip to content

0.12.0

Latest

Choose a tag to compare

@benvinegar benvinegar released this 09 Nov 03:05
· 2 commits to master since this release

Sync a local checkout into a VM with one command, without giving the VM GitHub access. This release also groups the CLI into command families, adds terminal status reporting, and fixes VM lifecycle and connection errors.

New

  • vm_sync / boxery sync. Push your local commit plus staged, unstaged and untracked changes into a VM, then verify that the working trees match. Repeated syncs send only missing git objects; ignored files such as node_modules stay in place. Sync refuses credential files (including in the history being sent) and VM-side changes it would overwrite. Your local index, refs and stash are untouched. This is a one-way, explicit push—not a watcher or a way to fetch VM edits. Sync documentation. (#207)

    boxery sync demo  # current checkout → demo:~/project
  • CLI command families. Related commands now live under snapshot, agent, job, access, lease, pool and host, with help for each family and action. For example, boxery snapshot create demo before-refactor and boxery access ls demo. Older spellings keep working without warnings, so existing scripts need no changes. boxery help --all lists everything. (#243)

  • Terminal status for long commands. Supporting terminals can show running, successful and failed commands through OSC 7501 status reporting. (#244)

  • VM@HOST shorthand for SSH. Use boxery ssh demo@myhost to select a registered host. (#239)

  • Version and usage conventions. boxery --version and boxery -V work; CLI usage errors consistently exit 2. (#235)

Fixes

  • VM lifecycle: starting an already-running VM and stopping an already-stopped one succeed; stopping waits until the VM is off. Both operations reject nonexistent VMs. VM records reflect the size the backend actually allocated. (#226, #227, #230)
  • Guest updates: new --headless reboots once if first-boot updates request it. Creating or forking from outdated guest software warns with guidance. Node upgrades remove the old npm before unpacking the new version. (#208, #236)
  • Connection errors: failed SSH readiness checks explain what went wrong instead of silently exiting 255. Desktop, copy and grant operations report missing VMs clearly. (#231, #232)
  • Host setup and listing: host registration and setup find the documented SSH key and keys used by existing hosts. ls no longer lists the same host twice when it has a profile alias. (#240, #241)
  • Agent workflows: prompt checks pi's LLM grant before starting, and its log hint works from ~/project. attach validates the agent (pi, opencode or shell) and requires a terminal. (#224, #225, #229)
  • Actionable hints: errors name the command spelling and --host selection you used. Elapsed times use a monotonic clock. (#237, #247)

Under the hood

  • CLI command rules are centralized, with tests for argument handling, host selection and side effects. (#246)
  • CI groups shell tests by platform and focuses macOS coverage on platform-sensitive behavior. Lifecycle and SSH fixture tests use explicit readiness checks instead of timing assumptions. (#245, #248, #252)

Upgrading

  • Update your controller installation, then run boxery upgrade-host for each host.
  • Image layers changed. Run boxery patch NAME (or boxery patch --all) to update existing VMs; rebuild outdated desktop bases for future VMs.
  • Existing command spellings remain supported. Scripts parsing CLI errors should account for usage errors now exiting 2.

Full changelog: v0.11.0...v0.12.0