Skip to content

Releases: NovusEdge/stoat

v0.4.2

Choose a tag to compare

@github-actions github-actions released this 07 Sep 16:11
fa678e5

What's Changed

Full Changelog: v0.4.1...v0.4.2

v0.4.1

Choose a tag to compare

@github-actions github-actions released this 07 Sep 15:50
a697342

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

Choose a tag to compare

@github-actions github-actions released this 06 Sep 18:41
7ea3c46

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

Choose a tag to compare

@github-actions github-actions released this 06 Sep 12:12
2f83308

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

Choose a tag to compare

@github-actions github-actions released this 05 Sep 23:02
7f985bc

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, and ls --project
    support project setup and inspection; up, down, apply, wait, and rm
    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, and exec.
    New VMs default to manage; an agent cannot raise its own access through
    the MCP update tool.
  • Recipe manifests support typed parameters, secrets, outputs, and health
    checks. Inspect them with stoat recipe show and wait for recipe health
    with stoat 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's index.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 --json waits for its
    automatic apply and wraps recipe output as JSON events.
  • Missing required recipe secrets return invalid_spec. Legacy allow_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 --json returns roots and recipe entry objects; consumers
    must read data.recipes[].name instead of treating entries as strings.
  • Replace Python MCP launch configurations with stoat mcp.
  • Existing allow_exec = true maps to exec; false maps to manage.
  • 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 current qemu-system-x86_64 backend 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 --json wait 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.