v0.9.120
Changes since v0.9.119, including HEAD and the working tree. Generated-file churn and test-only changes are omitted.
Breaking Changes
- Sandbox persistence now requires AppKit’s Lakebase plugin. Disk ownership storage, assignment seeds, and
defaultRemotePortconfiguration are removed. - Replace
add_ssh_route/remove_ssh_routewith persisted Project operations:add_ssh_project/remove_ssh_project. findFiles()now returns an async generator; usefindFilesSync()for synchronous discovery.watchFiles()now requiresawait.- Replace
SERVER_WATCH_DISABLED/--server-watch-disabledwithDEV_WATCH_DISABLE/--watch-disable(-d).
New Features
- Persist Sandbox Projects with isolated directories, mise configuration, reserved ports, authenticated routes, project terminals, and reset operations. Projects survive machine stops and app restarts.
- Add a built-in KasmVNC desktop with XFCE, plus configurable machine software provisioning.
- Automatically expire managed Sandboxes after 24 hours by default, with configurable lifetime and cleanup interval.
- Add watcher include/exclude globs and same-port Vite HMR for the demo app.
Fixes
- Partition Sandbox ownership by Lakebase role; reuse AppKit’s service-principal pool for Sandbox persistence and Mastra memory.
- Improve desktop provisioning and access, separate machine lifecycle controls from service viewers, and stop remaining project processes during removal or reset.
- Honor Git ignore rules in file discovery and watching; translate synchronous Python filesystem failures into Node error codes.
Validation
- The configured release validation phase completed before this review, as provided. No tests or additional validation commands were run; no files were modified.