0.12.0 — 2026-06-19 — Video Capture + Per-Action Deadlines
Release Notes
A feature-and-hardening minor. The headline is browser video/screen capture — record
a target or a whole session to WebM through the shim, with a byte/duration cap enforced
shim-side. Alongside it: per-action deadlines honored end-to-end over MCP/RPC (the
daemon kills the in-flight action and returns a typed request_timeout), an opt-in
content-bearing dom_after_hash fingerprint tier for interactions, and a sweep of
capture/network/scroll fixes. Internally, the test suite is now parallel-safe under
cargo-nextest (the --test-threads=1 mandate is retired). All changes preserve the
replay-equal hash chain (NFR-DET-01). (#178–#204)
Added
- Browser video / screen capture (#196). New
web.start_recording/web.stop_recording
surface verbs (plus a whole-session recording mode) streamPage.screencastFrameJPEGs
through the shim and encode WebM, with a configurable byte/duration cap enforced before
encode. A kill-switch (LOOM_DISABLE_RECORDING) refuses recording cleanly. - Per-action deadlines over MCP/RPC (#202).
deadline_msis now honored end-to-end:
the daemon enforces it server-side, kills the in-flight action when it expires, and
returns a typedrequest_timeoutinstead of hanging the client. - Content-bearing
dom_after_hashfor interactions (#197), behind an opt-in
fingerprint tier, so interaction receipts can carry a content hash of the post-action DOM. recreated_countinloom.session.info(#190) — surfaces how many times an
evicted session was implicitly recreated.- Configurable per-CDP-command navigate budget via
LOOM_SHIM_CDP_TIMEOUT_MS(#187). budgetarg onloom.session.reset(#185), mirroringsession.create.
Fixed
web.scrollscrolls the document/viewport and recordsscroll_result(#195).- Reliable framer-motion reveal capture (#194) — un-wedge the page, honor a screenshot
deadline, and capturewhileInViewreveals. network_events+ HAR populate method/status/sizes (#192); byte sizes stay out of the
hashed chain under determinism.- Per-session in-order serialization guard for concurrent dispatch (#193).
- Engine-aware
.cwasmstaleness (#191) — composite stamp, auto-refresh, doctor flag. - Graceful SIGTERM shutdown unlinks the daemon socket (#188).
SocketServerholds an
RAII guard thatremove_filesloom.sockon shutdown (and panic); the startup
stale-socket reclaim now logs aWARN. - Structured error context surfaced in
TypedReceipt.dataover MCP (#184).
Changed
- Parallel-safe test suite via cargo-nextest (#204). The
--test-threads=1mandate is
retired; the suite runs process-per-test (env/umask/OnceLock/tracing-callsite races fixed).
cargo nextest runis the canonical runner; plaincargo testalso passes at default
parallelism. No production behavior change. - Internal refactors with no behavior change: split four oversized files + collapse
too_many_arguments(#203, #201, #200),CreateSessionParamsforcreate_session_raw,
hermetic per-testTempDirfor loom-core (#198), de-flake the pipelined-hello test (#189),
delete the deadllm_cachesubsystem (#186).
Install loom-cli 0.12.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/mentiora-ai/loom/releases/download/v0.12.0/loom-cli-installer.sh | shInstall prebuilt binaries via Homebrew
brew install mentiora-ai/loom/loomDownload loom-cli 0.12.0
| File | Platform | Checksum |
|---|---|---|
| loom-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| loom-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| loom-cli-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| loom-cli-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |