Skip to content

Commit 0995553

Browse files
author
Roy Lin
committed
chore(box): release v2.0.7 — container log pipeline matches Docker json-file
Logs are now complete and correctly attributed in both run modes: processor runs in the shim (detached `run -d` no longer truncates; real --timestamps), tails like `tail -f`, keeps runtime internals out, stdout/stderr stream-tagged via libkrun's split console, non---rm boxes keep their logs after stop. Plus single-file bind mount, retag-dangling, -p 0, and image/volume/inspect parity.
1 parent 66fabe5 commit 0995553

3 files changed

Lines changed: 40 additions & 8 deletions

File tree

CHANGELOG.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,38 @@ All notable changes to A3S Box will be documented in this file.
44

55
## [Unreleased]
66

7+
## [2.0.7] — 2026-06-06
8+
9+
### Added
10+
- **Container log stream tagging**: `logs` now distinguishes a container's
11+
stdout from stderr (Docker json-file `stream` field), via libkrun's 3-fd
12+
split virtio-console (guest stdout → `console.log`, stderr →
13+
`console.err.log`). Foreground `run`/`attach` send the container's stdout to
14+
the terminal's stdout and stderr to its stderr; `logs` routes stderr lines to
15+
its stderr.
16+
17+
### Fixed
18+
- **Container logs are now complete and correct.** The log processor moved from
19+
the ephemeral launching CLI into the shim (the box's lifetime process), so a
20+
detached `run -d` box no longer truncates its logs when the CLI exits — this
21+
also gives `--timestamps` real per-line emission times. The processor tails
22+
`console.log` like `tail -f` (it previously stopped at the first EOF, dropping
23+
lines a container logged after a quiet period). Runtime internals (guest-init
24+
tracing → `/dev/kmsg`; libkrun's `init.krun:` preamble filtered) are kept out
25+
of container logs.
26+
- A box without `--rm` now survives its stop like a Docker stopped container —
27+
it keeps its dir and logs (so `logs`/`start` work afterwards) until `rm`.
28+
- Single-file bind mount (`-v /host/file:/container/file`) no longer clobbers
29+
the target's parent directory.
30+
- A rebuilt or re-tagged image becomes a prunable `<none>` dangling image
31+
instead of silently orphaning its on-disk layout (a disk leak); `images`
32+
renders it as `<none> <none>`.
33+
- `-p 0:<container>` / `-p 0` now resolves to a real free host port.
34+
- Named `--user` / `exec -u` is resolved inside the guest; `inspect` returns a
35+
JSON array with a Docker-shaped `State`; image-management parity (`inspect`
36+
array, `rmi` by short id / `--force`, `commit --change`, `tag` validation);
37+
`volume rm` exit code + `volume inspect` schema; `cp` mode + large-file.
38+
739
### Added
840
- Registry mirrors: `A3S_REGISTRY_MIRRORS=host=mirror,...` pulls image content
941
from a configured mirror while preserving the canonical image identity in the

src/Cargo.lock

Lines changed: 7 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ resolver = "2"
2222
h2 = { path = "third_party/h2" }
2323

2424
[workspace.package]
25-
version = "2.0.6"
25+
version = "2.0.7"
2626
edition = "2021"
2727
authors = ["A3S Lab Team"]
2828
license = "MIT"

0 commit comments

Comments
 (0)