Skip to content

Releases: Lullabot/sandbar

v0.8.0

Choose a tag to compare

@release-please-lullabot release-please-lullabot released this 21 Jul 12:30
Immutable release. Only release title and notes can be modified.

0.8.0 (2026-07-20)

The highlight of this release is the first pass of a new "land" command. This helps you manage work in a few ways:

  1. It shows all git checkouts on an instance, including worktrees.
  2. It shows if they have uncommitted changes, committed changes that haven't been pushed, or a pushed branch without a PR.
  3. It can command and push changes to a branch from inside the instance.
  4. It can open a pull request using your host's gh tool and authentication (which for most users has all permissions, unlike the limited scoped tokens exposed to an agent in the VM).
image

The overall workflow and security guidelines - that agent derived code is reviewed and tested first only in secure locations like VMs or GithHub - still apply.

Features

  • land: add checkout registry and host gh adapter (61660ea)
  • land: commit and push an at-risk checkout from the Landing pane (1d7cb7d)
  • land: Landing pane PR cockpit (484dc10)
  • land: re-read a running VM's checkouts before confirming delete (874460e)
  • land: rebind l=land, L=log (d6127c2)
  • land: show scan age, add r to rescan, and stop the pane overstating what it knows (5fd34ab)
  • land: support the 1Password gh shell plugin (1a26be6)
  • land: sweep parser, unlanded-work badge, delete guard (ec91c03)
  • land: sweep runtime + sand land CLI (08e7778)
  • land: wire checkout registry into the TUI model (82f8480)
  • support a single managed fleet of VMs (#81) (8f84dc8)

Bug Fixes

  • land: correct tile footer border, right-align badge, stop false actionable (e11a6df)
  • land: warn on never-pushed branches at delete; test the sweep for real (2d17020)

Base image base-image-2026.07.21

Choose a tag to compare

@github-actions github-actions released this 21 Jul 18:20
Immutable release. Only release title and notes can be modified.

Debian 13 genericcloud with qemu-guest-agent preinstalled, for sand's Proxmox base_image. Built offline by .github/workflows/base-image.yml. Verify with the .sha256 asset.

v0.7.0

Choose a tag to compare

@release-please-lullabot release-please-lullabot released this 18 Jul 01:53
Immutable release. Only release title and notes can be modified.
0dee807

0.7.0 (2026-07-17)

Features

  • codex: add opt-in OpenAI Codex toolset tool (provisioning + CLI) (a578e04)
  • codex: surface the Codex toolset in the TUI and docs (e76aafd)
  • support image pasting (#80) (46ff575)
  • user: enable tmux focus-events in the guest ~/.tmux.conf (#79) (229cce5)

Bug Fixes

  • claude-code: load direnv exports into Claude Code sessions (#71) (c10a84d)
  • provision: seed hasCompletedOnboarding so first claude launch honors bypass permissions (#73) (2cf6884)
  • provision: stop the profile_tasks warning on default base builds (0d8244e)

v0.6.0

Choose a tag to compare

@release-please-lullabot release-please-lullabot released this 16 Jul 20:15
Immutable release. Only release title and notes can be modified.
751883e

0.6.0 (2026-07-16)

The highlight of this release is support for new connection profiles. Access them with p from the main screen. These let you add one or more remote servers over SSH to run virtual machines on. Those systems can be macOS or Linux, and need to have lima installed and available. You can also view local VMs at the same time as remote VMs.

Features

  • cli: sand create --profile and cross-profile sand shell (b16c111)
  • fleet: profile-driven fleet builder + scope-qualified VM identity (3891c74)
  • lima: multiplex remote ssh over a shared ControlMaster connection (9be5d41)
  • profiles: profiles store, secrets connection-scope migration, per-op provision host-access (3d4aeae)
  • ui,registry: tile provenance + per-profile status bands; registry (scope,name) re-key (5950654)
  • ui: amber ⚠ for low hosts in the status bands, warn-styled messages, guest-true disk gauges (f856386)
  • ui: async per-profile fleet model (2c49486)
  • ui: log connection lifecycle to the session Messages list (660866f)
  • ui: profile management screen + create-form profile selector (37db3a8)
  • ui: raise the low-free warning threshold from 5% to 10% (6a3e7d3)
  • ui: warn at <5% free host memory/disk and flag starved VM tiles (005181e)

Bug Fixes

  • deps: update module github.com/charmbracelet/x/exp/teatest/v2 to v2.0.0-20260713092006-0d683c34c74b (#63) (77dd2d2)
  • ui,profiles,cli: address high-effort review findings on the profiles fleet (01b653c)
  • ui: stop repeating the active host's stats above the per-profile bands (37cee99)

v0.5.0

Choose a tag to compare

@release-please-lullabot release-please-lullabot released this 16 Jul 01:25
Immutable release. Only release title and notes can be modified.
d252a45

0.5.0 (2026-07-15)

Features

  • install GitLab and drupal.org CLIs (#50) (32ccf73)
  • provider: add the Provider interface and local Lima provider (plan 15 phase 2) (bb814d4)
  • provider: remote Lima over SSH provider (plan 15 phase 4) (aa5e670)
  • registry,provider: provider-aware registry + provider selection (plan 15 phase 3b) (4a056d3)
  • shell: forward host COLORTERM into the guest tmux session (#57) (1db98e5)

Bug Fixes

  • lima: filter scp's SFTP-mode -v banner from copy output (b4c59ff)
  • provider,ui: board header shows the REMOTE host's cpu/mem/disk (818394c)
  • provider,ui: default a remote VM's user to the remote host + connecting interstitial (f73c29c)
  • provider: address high-effort review findings on the remote provider (9a68421)
  • provider: make remote base creation work (overlay + playbook on the remote host) (59118a0)
  • provider: thread host COLORTERM through provider AttachArgv (rebase onto #57) (8c070f1)
  • ui,provider: board tiles sample the REMOTE host's disk (and stat works on macOS) (69b3a2c)
  • ui: create-form cpu/memory defaults scale to the REMOTE host (d4923db)
  • ui: show what a file transfer is copying (remote gives no scp progress) (62ce169)

v0.4.1

Choose a tag to compare

@release-please-lullabot release-please-lullabot released this 15 Jul 15:50
Immutable release. Only release title and notes can be modified.

0.4.1 (2026-07-15)

Bug Fixes

  • tmux: raise guest escape-time to 10ms for WAN transports (70952fc)
  • tui: lift the dimmest greys to a readable contrast floor (7d1c787)

v0.4.0

Choose a tag to compare

@release-please-lullabot release-please-lullabot released this 14 Jul 18:59
Immutable release. Only release title and notes can be modified.

0.4.0 (2026-07-14)

⚠ BREAKING CHANGES

  • shell: S now lands you in tmux (prefix C-a), not a bare shell. Closing the terminal detaches instead of ending the session. There is no --no-tmux escape hatch, by decision.

Features

  • lima: add the guest tmux attach-command builder (78a8eef)
  • provision: add per-phase timings and enable ansible task profiling (6bd73dd)
  • provision: base tool-set, 30-day self-refresh, and a host apt cache (b447afa)
  • provision: bootstrap ansible-core and stamp the base by playbook content (9e86b4f)
  • provision: one apt transaction, and in-place base re-apply under the lock (0ad221f)
  • shell: attach both entrypoints to the guest's persistent tmux session (e09c365)
  • toolset: default the tool-set to what the base was actually built with (36fda44)
  • toolset: make Claude Code optional, like the other dev tooling (67c7baf)
  • ui,provision,ci: tool-set toggles, conditional bounce, and a CI reuse path (79998f5)
  • ui: enter does the obvious thing for the tile it is on (c6370a8)
  • ui: frame the messages strip in a titled "Messages" box (e2a5d84)
  • ui: move the Messages box below the tiles (8cb6f2c)
  • ui: the Messages box shows up to 10 lines (4897cd2)

Bug Fixes

  • lima: drop ssh debug chatter from copy output (e5edf2e)
  • provision,ui,ci: nine defects from the high-effort review of this branch (926c8d9)
  • provision: a cancelled create cleans up the VM it half-created (184e33e)
  • provision: install python3-passlib, or the user role can't hash a password (75be96f)
  • provision: pass --no-install-recommends, or ansible-core drags the bundle back (00e5e52)
  • shell: sand shell works while another VM is being created (a45e00a)
  • ui: a cancelled build whose VM was cleaned up leaves no tile (4b7483f)
  • ui: line the Messages box up with the tiles (9b1bf0f)
  • ui: stop printing every message twice on the board (e30c5b8)
  • ui: the log box lost its right-hand border to a clip (6efae08)

Performance Improvements

  • base: install with recommends off, and name the toolchain explicitly (c44e192)
  • overlay: switch off Lima's containerd — ~19s per boot, ~575MB per base (70b341a)

v0.3.0

Choose a tag to compare

@release-please-lullabot release-please-lullabot released this 13 Jul 19:47
Immutable release. Only release title and notes can be modified.

0.3.0 (2026-07-13)

Features

  • tui: board chrome — header, messages ring, state-gated footer, refresh tick (819177d)
  • tui: command registry, layout classifier, job registry, guest heartbeat (7f04be5)
  • tui: delete the VM screen; the tile carries the core count (6257d84)
  • tui: live host readout, a selectable empty slot, and steady gauges (5c90d52)
  • tui: replace the table list with the tile board (2afc1c3)
  • tui: show the build, wrap the footer, and add a ? keys screen (11343ef)
  • tui: the header's cpu is a percentage of the whole host (8bdae6e)
  • tui: the tile — derived status, honest gauges, exception-only fields (6d5c289)

Bug Fixes

  • close the races the last review's fixes left open (e8701de)
  • lima: pin the copy backend so files land where the user put them (67708a5)
  • lima: survive limactl list failing while an instance is cloned or deleted (19cc742)
  • provision: serialize base-image preparation with a file lock (d7507fd)
  • test: pin the host probes for every teatest golden, not just some (44bff14)
  • test: stop the unit suite writing the developer's real ~/.lima (53fd1f4)
  • test: wait on the screen a TUI test navigated to, not on text the renderer reused (6cac3c0)
  • tui: a build streams onto its tile instead of seizing the terminal (792b7a6)
  • tui: keep the gauges live when the terminal loses focus (1e6d524)
  • tui: re-gate the verbs the build freeze used to protect (abbe0d9)
  • tui: stop a file copy from flipping a failed build's tile back to green (d1a3001)
  • user: enable systemd linger so detached tmux survives logout (a13b2b0)

v0.2.0

Choose a tag to compare

@release-please-lullabot release-please-lullabot released this 12 Jul 20:03
Immutable release. Only release title and notes can be modified.

0.2.0 (2026-07-12)

Features

  • secrets: git-credential wiring for recognized forge tokens (ad8f47f)
  • secrets: scope-aware delivery and TUI editor (194bf1b)
  • secrets: scope-aware store schema v2 with v1 migration (1517ee6)

Bug Fixes

  • create: wrap long form help and warnings to the terminal width (02f18a8)
  • reset: keep stderr out of the staged tar archive (ccd07d6)
  • reset: signal a saved GitHub token with a masked placeholder (765b2ab)
  • secrets: focus the editor on open so keystrokes register (b10a42c)
  • secrets: reflow editor guidance so the view fits the terminal (b53e97b)
  • tui: show a live spinner during stop-all and detail actions (2062b77)

v0.1.0

Choose a tag to compare

@release-please-lullabot release-please-lullabot released this 12 Jul 19:12
Immutable release. Only release title and notes can be modified.

0.1.0 (2026-07-12)

Features

  • add direnv support and document per-directory GitHub tokens (bf294c4)
  • add new-vm.sh to spin up Lima VMs in one command (30676d3)
  • add optional Claude Code webhook notification hooks (#13) (728366b)
  • add project role to clone an initial repo on provision (62c5789)
  • automatically recreate base images (d57f72f)
  • base: accept COLORTERM over SSH for truecolor in the VM (a8f39a8)
  • base: install ncurses-term for non-xterm terminfo (2d1bb1b)
  • claude-code: default the in-VM Claude Code theme to auto (960b8b1)
  • claude-code: enable remote control at startup by default (1267958)
  • configure direnv to load .env files and update docs (d82bc02)
  • drop SSH authorized_keys URL support (2b0f40b)
  • dynamically resolve user home directory instead of assuming /home/<username> (#5) (fd7d4e2)
  • genericize GitHub org setup with github-org-setup script (#11) (86bdcf8)
  • install gh CLI and configure git HTTPS auth via PAT (#4) (cb0f708)
  • install jq and yq by default (#9) (763ae03)
  • install Node.js from NodeSource instead of Debian repositories (#10) (cc48f89)
  • make Docker registry proxy setup optional (off by default) (#12) (0b7e675)
  • make primary system user configurable via user_name variable (#2) (c59174b)
  • mark onboarding as completed (4968973)
  • new-vm: build a base image once and clone each VM from it (29bc838)
  • new-vm: guard against reusing an existing instance's baked config (610ae4d)
  • new-vm: prompt for disk size, registry proxy, and initial clone (167ac32)
  • new-vm: provision once instead of on every boot (51e6332)
  • new-vm: surface provisioning failures instead of failing silently (a16bed7)
  • playbook: split provisioning into base/finalize phases (0122371)
  • provision CLAUDE_CODE_OAUTH_TOKEN for headless auth (#15) (7824bda)
  • registry: move data dir to sandbar with a migrate-then-cleanup (3658fa5)
  • release: GoReleaser + Homebrew tap, and migrate CI to the sand binary (5ce56e1)
  • remove Claude Code OAuth token support (efe2f69)
  • remove GitHub organization support (3e6f37d)
  • remove webhook notification support (c2f2df4)
  • samba: tune smb.conf for macOS clients via vfs_fruit (#14) (6444a26)
  • sand: drop no-op -y/-yes flags, document required flags (a7e03da)
  • sand: embed the playbook and add a headless sand create (8354431)
  • sand: make --git-name/--git-email optional, fall back to host git config (86019cb)
  • secrets: apply on set + source env from profile and bashrc (9344649)
  • secrets: edit/delete in TUI, rm auto-applies, role purges on removal (8d20a0a)
  • secrets: host secrets store + VM rendering role (plan-11 phase 1) (8b11d10)
  • secrets: sand secret CLI + provisioning integration (plan-11 phase 2) (a01a627)
  • secrets: sand secret sync for live re-render (plan-11 phase 3) (4f9293b)
  • secrets: TUI secrets panel + gated e2e tests (plan-11 phase 4) (06ce9d0)
  • skip the Samba role in the Lima flow (df22523)
  • strikethroo: right-size per-task model and effort tiers (6c7b060)
  • tui: add Bubble Tea CRUD UI and claude-vm entry point (a993f13)
  • tui: add file-transfer foundations (Copy, DirLister, dest prompt) (5defe95)
  • tui: add limactl client and Runner abstraction (cc813c2)
  • tui: add name search and disk-usage helper (plan 05 phase 1) (1055db5)
  • tui: add Reset orchestration with optional preserve (phase 2) (d868651)
  • tui: add reusable file browser + gated copy e2e test (b471f45)
  • tui: cap default memory at half host RAM and warn on disk overflow (6c1c910)
  • tui: create-form UX — field nav, info, GitHub labels; mark base image (90a453c)
  • tui: directory autocomplete for the transfer destination (9862e2c)
  • tui: guard destructive ops against non-managed VMs (2d1e327)
  • tui: per-VM sizing + staging helpers for VM reset (phase 1) (003bc09)
  • tui: port base/clone/finalize orchestration to Go (23f85b8)
  • tui: relabel Disk as Max Disk and add real Disk Used column (plan 05 phase 2) (ccebec5)
  • tui: reset flow — pre-filled form, preserve toggles (phase 3) (b7c71b4)
  • tui: scaffold Go module and VM domain model (e142765)
  • tui: shell into a VM (S) and drop the unused IP field (d940f01)
  • tui: show a spinner while VM lifecycle actions run ([1b10668](1b1...
Read more