diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 8a3152484..dc1d89aa4 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,4 +1,4 @@ { - ".": "0.5.4", + ".": "0.5.5", "fleet": "0.1.3" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 94ac06484..f4c42a5d4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,37 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.5.5](https://github.com/arcboxlabs/arcbox/compare/v0.5.4...v0.5.5) (2026-07-31) + + +### Features + +* **cli:** abctl claude — coding-agent TUI in a sandbox ([bd558cd](https://github.com/arcboxlabs/arcbox/commit/bd558cdf7bbf9d6a5771d058d3203cb1c90bb616)) +* **cli:** embedded sandbox image templates ([aa00154](https://github.com/arcboxlabs/arcbox/commit/aa001540284855e106c70ce4fb6bd08515fa4c36)) + + +### Bug Fixes + +* **cli:** do not wait for the parked stdin read when the runtime shuts down ([94c1ad5](https://github.com/arcboxlabs/arcbox/commit/94c1ad522ae983837c0bc8f6c01003b77ac35819)) +* **cli:** end an exec session when the workload exits ([050ff66](https://github.com/arcboxlabs/arcbox/commit/050ff66f996734646f9bef2f454196e31c6804cb)) +* **cli:** key the image layout cache on filesystem content, not image id ([75aaa6f](https://github.com/arcboxlabs/arcbox/commit/75aaa6f417e09ebea578e4d68ad4b17a6b7dcb86)) +* **sandbox:** invalidate converted rootfs images when vm-agent changes ([df66e8c](https://github.com/arcboxlabs/arcbox/commit/df66e8c92a6ddad686f69cc5371b53be05d03ccc)) +* **sandbox:** keep converted rootfs images that snapshots restore from ([3837c08](https://github.com/arcboxlabs/arcbox/commit/3837c08c6e96671b2b82a1eea2cc03162889b91b)) +* **sandbox:** report an interactive workload's exit status when it exits ([9bcf94c](https://github.com/arcboxlabs/arcbox/commit/9bcf94c7907dc1a44022e0d0a7fc78def9e04358)) +* **sandbox:** resolve docker images through an OCI layout export ([96740ca](https://github.com/arcboxlabs/arcbox/commit/96740ca3497c7516170ffb57ba6210b7ca86c55f)) +* **vz:** build the Swift shim with SwiftPM's native build system ([19e46b7](https://github.com/arcboxlabs/arcbox/commit/19e46b748626cdc8432db3ec530c9df204013812)) + + +### Code Refactoring + +* **vm:** publish snapshots atomically instead of piecewise ([419b270](https://github.com/arcboxlabs/arcbox/commit/419b2705450fd0617ba0a5ab5d95bdf0dd776607)) + + +### Miscellaneous Chores + +* **assets:** bump boot assets to 0.6.13 (fuse spin-wait, CORE-48) ([#513](https://github.com/arcboxlabs/arcbox/issues/513)) ([098771c](https://github.com/arcboxlabs/arcbox/commit/098771c0bb65fea9ce6f59aa679187770ec65e2f)) +* **tools:** bump Docker toolchain to latest stable versions ([#502](https://github.com/arcboxlabs/arcbox/issues/502)) ([a44178b](https://github.com/arcboxlabs/arcbox/commit/a44178b0729ec61a7100c4546144a8dbd73d72e9)) + ## [0.5.4](https://github.com/arcboxlabs/arcbox/compare/v0.5.3...v0.5.4) (2026-07-30) diff --git a/Cargo.lock b/Cargo.lock index bf624b15d..fce4885d6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -176,7 +176,7 @@ dependencies = [ [[package]] name = "arcbox" -version = "0.5.4" +version = "0.5.5" dependencies = [ "arcbox-container", "arcbox-core", @@ -190,7 +190,7 @@ dependencies = [ [[package]] name = "arcbox-agent" -version = "0.5.4" +version = "0.5.5" dependencies = [ "anyhow", "arcbox-constants", @@ -236,7 +236,7 @@ dependencies = [ [[package]] name = "arcbox-api" -version = "0.5.4" +version = "0.5.5" dependencies = [ "arcbox-constants", "arcbox-core", @@ -259,7 +259,7 @@ dependencies = [ [[package]] name = "arcbox-asset" -version = "0.5.4" +version = "0.5.5" dependencies = [ "futures-util", "reqwest 0.12.28", @@ -291,7 +291,7 @@ dependencies = [ [[package]] name = "arcbox-cli" -version = "0.5.4" +version = "0.5.5" dependencies = [ "anyhow", "arcbox-asset", @@ -327,7 +327,7 @@ dependencies = [ [[package]] name = "arcbox-conntrack" -version = "0.5.4" +version = "0.5.5" dependencies = [ "arcbox-datapath", "arcbox-packet", @@ -336,14 +336,14 @@ dependencies = [ [[package]] name = "arcbox-constants" -version = "0.5.4" +version = "0.5.5" dependencies = [ "dirs", ] [[package]] name = "arcbox-container" -version = "0.5.4" +version = "0.5.5" dependencies = [ "arcbox-error", "async-trait", @@ -357,7 +357,7 @@ dependencies = [ [[package]] name = "arcbox-core" -version = "0.5.4" +version = "0.5.5" dependencies = [ "arcbox-boot", "arcbox-constants", @@ -402,7 +402,7 @@ dependencies = [ [[package]] name = "arcbox-daemon" -version = "0.5.4" +version = "0.5.5" dependencies = [ "anyhow", "arcbox-api", @@ -440,14 +440,14 @@ dependencies = [ [[package]] name = "arcbox-datapath" -version = "0.5.4" +version = "0.5.5" dependencies = [ "thiserror", ] [[package]] name = "arcbox-dhcp" -version = "0.5.4" +version = "0.5.5" dependencies = [ "thiserror", "tracing", @@ -455,14 +455,14 @@ dependencies = [ [[package]] name = "arcbox-dns" -version = "0.5.4" +version = "0.5.5" dependencies = [ "thiserror", ] [[package]] name = "arcbox-docker" -version = "0.5.4" +version = "0.5.5" dependencies = [ "arcbox-core", "arcbox-error", @@ -496,7 +496,7 @@ dependencies = [ [[package]] name = "arcbox-docker-tools" -version = "0.5.4" +version = "0.5.5" dependencies = [ "arcbox-asset", "flate2", @@ -512,7 +512,7 @@ dependencies = [ [[package]] name = "arcbox-e2e" -version = "0.5.4" +version = "0.5.5" dependencies = [ "anyhow", "arcbox-constants", @@ -538,7 +538,7 @@ dependencies = [ [[package]] name = "arcbox-error" -version = "0.5.4" +version = "0.5.5" dependencies = [ "thiserror", ] @@ -556,7 +556,7 @@ dependencies = [ [[package]] name = "arcbox-fakeip" -version = "0.5.4" +version = "0.5.5" dependencies = [ "tracing", ] @@ -602,7 +602,7 @@ dependencies = [ [[package]] name = "arcbox-fleet-control-proto" -version = "0.5.4" +version = "0.5.5" dependencies = [ "prost", "tonic", @@ -612,7 +612,7 @@ dependencies = [ [[package]] name = "arcbox-fleet-proto" -version = "0.5.4" +version = "0.5.5" dependencies = [ "prost", "tonic", @@ -622,7 +622,7 @@ dependencies = [ [[package]] name = "arcbox-fs" -version = "0.5.4" +version = "0.5.5" dependencies = [ "arcbox-error", "arcbox-virtio", @@ -638,7 +638,7 @@ dependencies = [ [[package]] name = "arcbox-grpc" -version = "0.5.4" +version = "0.5.5" dependencies = [ "arcbox-protocol", "prost", @@ -683,7 +683,7 @@ dependencies = [ [[package]] name = "arcbox-hypervisor" -version = "0.5.4" +version = "0.5.5" dependencies = [ "arcbox-error", "arcbox-vz", @@ -703,7 +703,7 @@ dependencies = [ [[package]] name = "arcbox-logging" -version = "0.5.4" +version = "0.5.5" dependencies = [ "parking_lot", "sentry", @@ -715,7 +715,7 @@ dependencies = [ [[package]] name = "arcbox-migration" -version = "0.5.4" +version = "0.5.5" dependencies = [ "dirs", "serde", @@ -728,7 +728,7 @@ dependencies = [ [[package]] name = "arcbox-net" -version = "0.5.4" +version = "0.5.5" dependencies = [ "anyhow", "arcbox-conntrack", @@ -764,7 +764,7 @@ dependencies = [ [[package]] name = "arcbox-net-inject" -version = "0.5.4" +version = "0.5.5" dependencies = [ "arcbox-virtio", "crossbeam-channel", @@ -774,7 +774,7 @@ dependencies = [ [[package]] name = "arcbox-net-virtio" -version = "0.5.4" +version = "0.5.5" dependencies = [ "arcbox-conntrack", "arcbox-virtio", @@ -784,7 +784,7 @@ dependencies = [ [[package]] name = "arcbox-oci" -version = "0.5.4" +version = "0.5.5" dependencies = [ "arcbox-error", "chrono", @@ -799,11 +799,11 @@ dependencies = [ [[package]] name = "arcbox-packet" -version = "0.5.4" +version = "0.5.5" [[package]] name = "arcbox-protocol" -version = "0.5.4" +version = "0.5.5" dependencies = [ "prost", "prost-build", @@ -815,7 +815,7 @@ dependencies = [ [[package]] name = "arcbox-proxy" -version = "0.5.4" +version = "0.5.5" dependencies = [ "arcbox-fakeip", "arcbox-packet", @@ -828,7 +828,7 @@ dependencies = [ [[package]] name = "arcbox-pty" -version = "0.5.4" +version = "0.5.5" dependencies = [ "libc", "nix 0.29.0", @@ -836,7 +836,7 @@ dependencies = [ [[package]] name = "arcbox-route" -version = "0.5.4" +version = "0.5.5" dependencies = [ "libc", "tracing", @@ -844,7 +844,7 @@ dependencies = [ [[package]] name = "arcbox-transport" -version = "0.5.4" +version = "0.5.5" dependencies = [ "arcbox-constants", "arcbox-error", @@ -860,7 +860,7 @@ dependencies = [ [[package]] name = "arcbox-virtio" -version = "0.5.4" +version = "0.5.5" dependencies = [ "arcbox-error", "arcbox-hypervisor", @@ -886,7 +886,7 @@ dependencies = [ [[package]] name = "arcbox-virtio-balloon" -version = "0.5.4" +version = "0.5.5" dependencies = [ "arcbox-virtio-core", "libc", @@ -895,7 +895,7 @@ dependencies = [ [[package]] name = "arcbox-virtio-blk" -version = "0.5.4" +version = "0.5.5" dependencies = [ "arcbox-virtio-core", "async-trait", @@ -907,7 +907,7 @@ dependencies = [ [[package]] name = "arcbox-virtio-console" -version = "0.5.4" +version = "0.5.5" dependencies = [ "arcbox-virtio-core", "async-trait", @@ -918,7 +918,7 @@ dependencies = [ [[package]] name = "arcbox-virtio-core" -version = "0.5.4" +version = "0.5.5" dependencies = [ "arcbox-error", "thiserror", @@ -928,7 +928,7 @@ dependencies = [ [[package]] name = "arcbox-virtio-fs" -version = "0.5.4" +version = "0.5.5" dependencies = [ "arcbox-virtio-core", "bytes", @@ -939,7 +939,7 @@ dependencies = [ [[package]] name = "arcbox-virtio-net" -version = "0.5.4" +version = "0.5.5" dependencies = [ "arcbox-virtio-core", "async-trait", @@ -951,7 +951,7 @@ dependencies = [ [[package]] name = "arcbox-virtio-rng" -version = "0.5.4" +version = "0.5.5" dependencies = [ "arcbox-virtio-core", "getrandom 0.2.17", @@ -960,7 +960,7 @@ dependencies = [ [[package]] name = "arcbox-virtio-vsock" -version = "0.5.4" +version = "0.5.5" dependencies = [ "arcbox-virtio-core", "libc", @@ -970,7 +970,7 @@ dependencies = [ [[package]] name = "arcbox-vm" -version = "0.5.4" +version = "0.5.5" dependencies = [ "anyhow", "chrono", @@ -990,7 +990,7 @@ dependencies = [ [[package]] name = "arcbox-vmm" -version = "0.5.4" +version = "0.5.5" dependencies = [ "arcbox-constants", "arcbox-dns", @@ -1025,7 +1025,7 @@ dependencies = [ [[package]] name = "arcbox-vmnet" -version = "0.5.4" +version = "0.5.5" dependencies = [ "libc", "thiserror", @@ -1037,7 +1037,7 @@ dependencies = [ [[package]] name = "arcbox-vz" -version = "0.5.4" +version = "0.5.5" dependencies = [ "libc", "thiserror", @@ -1048,7 +1048,7 @@ dependencies = [ [[package]] name = "arcbox-xnu-net" -version = "0.5.4" +version = "0.5.5" dependencies = [ "criterion", "libc", @@ -6023,7 +6023,7 @@ dependencies = [ [[package]] name = "splicetcp" -version = "0.5.4" +version = "0.5.5" dependencies = [ "arcbox-datapath", "arcbox-fakeip", @@ -7847,7 +7847,7 @@ checksum = "32ac00cd3f8ec9c1d33fb3e7958a82df6989c42d747bd326c822b1d625283547" [[package]] name = "xtask" -version = "0.5.4" +version = "0.5.5" dependencies = [ "anyhow", "arcbox-constants", diff --git a/Cargo.toml b/Cargo.toml index e87aa75e4..e43af3769 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -85,7 +85,7 @@ members = [ ] [workspace.package] -version = "0.5.4" # x-release-please-version +version = "0.5.5" # x-release-please-version edition = "2024" rust-version = "1.96" license = "MIT OR Apache-2.0" @@ -207,8 +207,8 @@ ifbridge = "0.1" # Process identity (pidpath, bsdinfo) libproc = "0.14" -arcbox-asset = { version = "0.5.4", path = "common/arcbox-asset", features = ["download"] } # x-release-please-version -arcbox-docker-tools = { version = "0.5.4", path = "app/arcbox-docker-tools" } # x-release-please-version +arcbox-asset = { version = "0.5.5", path = "common/arcbox-asset", features = ["download"] } # x-release-please-version +arcbox-docker-tools = { version = "0.5.5", path = "app/arcbox-docker-tools" } # x-release-please-version # External crates arcbox-boot = { version = "0.7.0", features = ["download"] } @@ -217,53 +217,53 @@ macos-resolver = "0.2.0" fc-sdk = "0.2.3" # Internal crates -arcbox-constants = { version = "0.5.4", path = "common/arcbox-constants", features = ["std"] } # x-release-please-version -arcbox-pty = { version = "0.5.4", path = "common/arcbox-pty" } # x-release-please-version -arcbox-dns = { version = "0.5.4", path = "common/arcbox-dns" } # x-release-please-version -arcbox-error = { version = "0.5.4", path = "common/arcbox-error" } # x-release-please-version -arcbox-route = { version = "0.5.4", path = "common/arcbox-route" } # x-release-please-version -arcbox-packet = { version = "0.5.4", path = "common/arcbox-packet" } # x-release-please-version -arcbox-datapath = { version = "0.5.4", path = "common/arcbox-datapath" } # x-release-please-version -arcbox-conntrack = { version = "0.5.4", path = "common/arcbox-conntrack" } # x-release-please-version -arcbox-fakeip = { version = "0.5.4", path = "common/arcbox-fakeip" } # x-release-please-version -arcbox-proxy = { version = "0.5.4", path = "common/arcbox-proxy" } # x-release-please-version -splicetcp = { version = "0.5.4", path = "common/splicetcp" } # x-release-please-version +arcbox-constants = { version = "0.5.5", path = "common/arcbox-constants", features = ["std"] } # x-release-please-version +arcbox-pty = { version = "0.5.5", path = "common/arcbox-pty" } # x-release-please-version +arcbox-dns = { version = "0.5.5", path = "common/arcbox-dns" } # x-release-please-version +arcbox-error = { version = "0.5.5", path = "common/arcbox-error" } # x-release-please-version +arcbox-route = { version = "0.5.5", path = "common/arcbox-route" } # x-release-please-version +arcbox-packet = { version = "0.5.5", path = "common/arcbox-packet" } # x-release-please-version +arcbox-datapath = { version = "0.5.5", path = "common/arcbox-datapath" } # x-release-please-version +arcbox-conntrack = { version = "0.5.5", path = "common/arcbox-conntrack" } # x-release-please-version +arcbox-fakeip = { version = "0.5.5", path = "common/arcbox-fakeip" } # x-release-please-version +arcbox-proxy = { version = "0.5.5", path = "common/arcbox-proxy" } # x-release-please-version +splicetcp = { version = "0.5.5", path = "common/splicetcp" } # x-release-please-version # arcbox-hv has its own release cadence (Apple Hypervisor.framework # bindings), so the workspace dep pin is bumped manually when arcbox-hv # itself is bumped — not by release-please. arcbox-hv = { version = "0.3.20", path = "virt/arcbox-hv" } -arcbox-vz = { version = "0.5.4", path = "virt/arcbox-vz" } # x-release-please-version -arcbox-hypervisor = { version = "0.5.4", path = "virt/arcbox-hypervisor" } # x-release-please-version -arcbox-vmm = { version = "0.5.4", path = "virt/arcbox-vmm" } # x-release-please-version -arcbox-virtio = { version = "0.5.4", path = "virt/arcbox-virtio" } # x-release-please-version -arcbox-virtio-core = { version = "0.5.4", path = "virt/arcbox-virtio-core" } # x-release-please-version -arcbox-virtio-blk = { version = "0.5.4", path = "virt/arcbox-virtio-blk" } # x-release-please-version -arcbox-virtio-console = { version = "0.5.4", path = "virt/arcbox-virtio-console" } # x-release-please-version -arcbox-virtio-fs = { version = "0.5.4", path = "virt/arcbox-virtio-fs" } # x-release-please-version -arcbox-virtio-net = { version = "0.5.4", path = "virt/arcbox-virtio-net" } # x-release-please-version -arcbox-virtio-rng = { version = "0.5.4", path = "virt/arcbox-virtio-rng" } # x-release-please-version -arcbox-virtio-vsock = { version = "0.5.4", path = "virt/arcbox-virtio-vsock" } # x-release-please-version -arcbox-virtio-balloon = { version = "0.5.4", path = "virt/arcbox-virtio-balloon" } # x-release-please-version -arcbox-vm = { version = "0.5.4", path = "virt/arcbox-vm" } # x-release-please-version -arcbox-fs = { version = "0.5.4", path = "virt/arcbox-fs" } # x-release-please-version -arcbox-net = { version = "0.5.4", path = "virt/arcbox-net" } # x-release-please-version -arcbox-vmnet = { version = "0.5.4", path = "virt/arcbox-vmnet" } # x-release-please-version -arcbox-net-inject = { version = "0.5.4", path = "virt/arcbox-net-inject" } # x-release-please-version -arcbox-dhcp = { version = "0.5.4", path = "virt/arcbox-dhcp" } # x-release-please-version -arcbox-container = { version = "0.5.4", path = "runtime/arcbox-container" } # x-release-please-version -arcbox-protocol = { version = "0.5.4", path = "rpc/arcbox-protocol" } # x-release-please-version -arcbox-grpc = { version = "0.5.4", path = "rpc/arcbox-grpc" } # x-release-please-version -arcbox-transport = { version = "0.5.4", path = "rpc/arcbox-transport" } # x-release-please-version -arcbox-fleet-proto = { version = "0.5.4", path = "fleet/arcbox-fleet-proto" } # x-release-please-version -arcbox-fleet-control-proto = { version = "0.5.4", path = "fleet/arcbox-fleet-control-proto" } # x-release-please-version -arcbox-docker = { version = "0.5.4", path = "app/arcbox-docker" } # x-release-please-version +arcbox-vz = { version = "0.5.5", path = "virt/arcbox-vz" } # x-release-please-version +arcbox-hypervisor = { version = "0.5.5", path = "virt/arcbox-hypervisor" } # x-release-please-version +arcbox-vmm = { version = "0.5.5", path = "virt/arcbox-vmm" } # x-release-please-version +arcbox-virtio = { version = "0.5.5", path = "virt/arcbox-virtio" } # x-release-please-version +arcbox-virtio-core = { version = "0.5.5", path = "virt/arcbox-virtio-core" } # x-release-please-version +arcbox-virtio-blk = { version = "0.5.5", path = "virt/arcbox-virtio-blk" } # x-release-please-version +arcbox-virtio-console = { version = "0.5.5", path = "virt/arcbox-virtio-console" } # x-release-please-version +arcbox-virtio-fs = { version = "0.5.5", path = "virt/arcbox-virtio-fs" } # x-release-please-version +arcbox-virtio-net = { version = "0.5.5", path = "virt/arcbox-virtio-net" } # x-release-please-version +arcbox-virtio-rng = { version = "0.5.5", path = "virt/arcbox-virtio-rng" } # x-release-please-version +arcbox-virtio-vsock = { version = "0.5.5", path = "virt/arcbox-virtio-vsock" } # x-release-please-version +arcbox-virtio-balloon = { version = "0.5.5", path = "virt/arcbox-virtio-balloon" } # x-release-please-version +arcbox-vm = { version = "0.5.5", path = "virt/arcbox-vm" } # x-release-please-version +arcbox-fs = { version = "0.5.5", path = "virt/arcbox-fs" } # x-release-please-version +arcbox-net = { version = "0.5.5", path = "virt/arcbox-net" } # x-release-please-version +arcbox-vmnet = { version = "0.5.5", path = "virt/arcbox-vmnet" } # x-release-please-version +arcbox-net-inject = { version = "0.5.5", path = "virt/arcbox-net-inject" } # x-release-please-version +arcbox-dhcp = { version = "0.5.5", path = "virt/arcbox-dhcp" } # x-release-please-version +arcbox-container = { version = "0.5.5", path = "runtime/arcbox-container" } # x-release-please-version +arcbox-protocol = { version = "0.5.5", path = "rpc/arcbox-protocol" } # x-release-please-version +arcbox-grpc = { version = "0.5.5", path = "rpc/arcbox-grpc" } # x-release-please-version +arcbox-transport = { version = "0.5.5", path = "rpc/arcbox-transport" } # x-release-please-version +arcbox-fleet-proto = { version = "0.5.5", path = "fleet/arcbox-fleet-proto" } # x-release-please-version +arcbox-fleet-control-proto = { version = "0.5.5", path = "fleet/arcbox-fleet-control-proto" } # x-release-please-version +arcbox-docker = { version = "0.5.5", path = "app/arcbox-docker" } # x-release-please-version # Pinned to app/arcbox-helper's own version (not workspace.package). Do not # attach x-release-please-version — helper releases are manual. arcbox-helper = { version = "1.0.2", path = "app/arcbox-helper" } -arcbox-core = { version = "0.5.4", path = "app/arcbox-core" } # x-release-please-version -arcbox-api = { version = "0.5.4", path = "app/arcbox-api" } # x-release-please-version -arcbox-migration = { version = "0.5.4", path = "app/arcbox-migration" } # x-release-please-version -arcbox-logging = { version = "0.5.4", path = "common/arcbox-logging", default-features = false } # x-release-please-version +arcbox-core = { version = "0.5.5", path = "app/arcbox-core" } # x-release-please-version +arcbox-api = { version = "0.5.5", path = "app/arcbox-api" } # x-release-please-version +arcbox-migration = { version = "0.5.5", path = "app/arcbox-migration" } # x-release-please-version +arcbox-logging = { version = "0.5.5", path = "common/arcbox-logging", default-features = false } # x-release-please-version # Temporary files and directories (tests, staging paths) tempfile = "3"