What's Changed
- Add QEMU dirty-bitmap incremental snapshot support by @aniketmaurya in #453
- Add QEMU dirty bitmap lifecycle API by @aniketmaurya in #455
- Refactor SQLite state into the CLI by @aniketmaurya in #454
- release v0.0.30.a0 by @aniketmaurya in #456
- Use canonical prerelease version format by @aniketmaurya in #457
- Raise minimum Python to 3.11 by @aniketmaurya in #458
- Test Python 3.14 in CI by @aniketmaurya in #459
- fix: 16 latent bugs across image, ssh, env, runtime, network and transfer paths by @gaby in #460
- Stream macOS install progress instead of buffering it by @aniketmaurya in #461
- Enable copy and paste for macOS sandbox desktops by @aniketmaurya in #462
- Stop reporting a real image pull as "Already cached" by @wernerkasselman-au in #463
- Never probe a non-positive PID when reconciling in-memory state by @wernerkasselman-au in #467
- Resume a paused VM off the event loop in async_start by @wernerkasselman-au in #468
- Expose sandbox.desktop in the TypeScript SDK by @wernerkasselman-au in #470
- Pin Rich colour handling for the test session by @wernerkasselman-au in #464
- Use one address selector for sync and async user-mode networking by @wernerkasselman-au in #466
- Make the dashboard command bar actually run commands by @wernerkasselman-au in #469
- Make unreadable-cache test permission independent by @wernerkasselman-au in #472
- Run required checks for merge queue groups by @wernerkasselman-au in #473
- Stop losing per-VM disks when a sandbox goes away by @craigpfeifer in #476
- Add stable OpenCode agent preset by @yanurag-dev in #475
- Release v0.0.30 by @aniketmaurya in #477
New Contributors
- @wernerkasselman-au made their first contribution in #463
Full Changelog: v0.0.29...v0.0.30