Releases: NovusEdge/stoat
Releases · NovusEdge/stoat
Release list
v0.4.2
What's Changed
- ci(release): publish darwin and windows archives by @NovusEdge in #118
- chore(release): prepare v0.4.2 by @NovusEdge in #119
Full Changelog: v0.4.1...v0.4.2
v0.4.1
What's Changed
- fix(recipes): default the account param from the VM's SSH user by @NovusEdge in #107
- feat(recipes): expose default_from in the JSON contract by @NovusEdge in #108
- feat(recipes): add recipe refresh for a dropped manifest entry by @NovusEdge in #109
- fix(tui): prefill default_from params with the VM's SSH account by @NovusEdge in #110
- fix(guest): move alpine repo setup into stoat_pkg_setup by @NovusEdge in #111
- fix(hostops): make the unsupported-host refusal actionable by @NovusEdge in #112
- fix(cli): treat Windows drive letters as local, not a VM name by @NovusEdge in #113
- docs(tui): document CLI/TUI parity and close cheap gaps by @NovusEdge in #115
- feat(recipes): derive python-dev's venv_dir from the SSH account by @NovusEdge in #116
- chore(release): prepare v0.4.1 by @NovusEdge in #117
Full Changelog: v0.4.0...v0.4.1
v0.4.0
What's Changed
- fix(installer): separate contributor setup from user install by @NovusEdge in #95
- test(installer): cover the compact header by @NovusEdge in #96
- fix(cloudinit): merge cloud-config documents before the seed is written by @NovusEdge in #97
- fix(tui): follow the terminal background by @NovusEdge in #98
- feat(recipes): extend the developer recipes to the new Linux guests by @NovusEdge in #99
- feat(recipes): add the bundled catalog rule and its three common recipes by @NovusEdge in #100
- ci: stop the test run at the first failure by @NovusEdge in #101
- fix(guest): pass --needed to pacman by @NovusEdge in #105
- feat(cloudinit): write the cloud-init seed image in Go by @NovusEdge in #104
- chore(release): prepare v0.4.0 by @NovusEdge in #106
Full Changelog: v0.3.0...v0.4.0
v0.3.0
What's Changed
- docs(readme): refresh guides and add live demo by @NovusEdge in #73
- docs(gitbook): improve onboarding and setup guides by @NovusEdge in #74
- docs(guides): correct runtime and interface claims by @NovusEdge in #75
- feat(mcp): add machine-readable tool errors by @NovusEdge in #76
- feat(capabilities): add read-only discovery by @NovusEdge in #78
- refactor(host): make file locks portable by @NovusEdge in #79
- docs(spec): define VM forks and runtime continuation by @NovusEdge in #90
- fix(sshx): wait for cloud-init readiness before provisioning by @NovusEdge in #86
- feat(recipes): add common development environments by @NovusEdge in #80
- fix(host): guard unqualified native VM operations by @NovusEdge in #88
- feat(guest): add CPU-qualified cloud guests by @NovusEdge in #89
- fix(cloudinit): send a single-document seed as plain cloud-config by @NovusEdge in #91
- fix(recipes): probe the escalation tool before python-dev uses it by @NovusEdge in #92
- chore(release): prepare v0.3.0 by @NovusEdge in #94
Full Changelog: v0.2.0...v0.3.0
Stoat v0.2.0
Changelog
v0.2.0
First published release. Stoat remains pre-1.0, for single-user Linux systems.
Features
- Declare project VMs in
stoat.toml.stoat init,status, andls --project
support project setup and inspection;up,down,apply,wait, andrm
can operate on every declared VM when called without a name. - Serve MCP directly with
stoat mcp. The Go server replaces the Python
wrapper and adds guest file operations, package and service management,
background jobs, project tools, and client configuration helpers. - Control agent access per VM with
none,observe,manage, andexec.
New VMs default tomanage; an agent cannot raise its own access through
the MCP update tool. - Recipe manifests support typed parameters, secrets, outputs, and health
checks. Inspect them withstoat recipe showand wait for recipe health
withstoat wait --healthy. - Install remote recipes from Git, pin commits in
stoat.lock, and share
declarations at project or global scope. The curated index lives in this
repository'sindex.toml. - Define guest OS behavior in TOML, with bundled Alpine, Arch, Debian, Fedora,
and Ubuntu definitions and user overrides under the Stoat data root. - Capture VM screens with
stoat screenshot. JSON callers receive structured
results and stable error codes for QEMU, image, and configuration failures.
Fixes
- Installed Alpine VMs recover from the hidden boot-menu stall, mount their
work share correctly, and show the normal login banner. The XFCE recipe
installs the X server again. - Cloud recipe waits resolve from applied state.
up --jsonwaits for its
automatic apply and wraps recipe output as JSON events. - Missing required recipe secrets return
invalid_spec. Legacyallow_exec
values stay consistent with the effective agent access level. - Project drift reports use catalog image names and normalize disk sizes.
- The Nix package uses the current dependencies and reports
v0.2.0.
Upgrading from development builds
- JSON contract version is 3, independently of the CLI version.
recipe list --jsonreturnsrootsand recipe entry objects; consumers
must readdata.recipes[].nameinstead of treating entries as strings. - Replace Python MCP launch configurations with
stoat mcp. - Existing
allow_exec = truemaps toexec;falsemaps tomanage. - Existing local edits to bundled recipes are preserved during installation.
Review those copies separately when adopting the bundled recipe fixes.
Known limitations
- VM execution requires an x86-64 Linux host with KVM. The arm64 CLI archive
is cross-compiled; the currentqemu-system-x86_64backend does not support
starting VMs on an arm64 host. - Debian cloud kernels lack the 9p module, so project shares are skipped on
Debian cloud VMs. Ubuntu cloud VMs support the project shares. - The intended
up --jsonwait during disk installation still needs a
dedicated live test. Earlier live gates covered Alpine disk boot fixes,
Debian cloud MCP execution, and Debian/Ubuntu project workflows.