Skip to content

0.10.1 — 2026-06-10 — Cross-Run Determinism + Session Reaper

Choose a tag to compare

@github-actions github-actions released this 10 Jun 11:44
221f100

Release Notes

Cross-run hash equality lands: two independent fresh recordings of the same actions
on a deterministic page now diff field_diffs=0, not just self-replay — making the
manifest hash chain a true "did anything change?" oracle across runs. Plus a session
reaper for long-lived daemons, a batch of determinism-capture fixes, and an
error-code consolidation. All additive; the replay hash chain (NFR-DET-01) is
preserved.

Added

  • Cross-run determinism (#133). New loom session create --clock-anchor <epoch_ms>
    flag pins the injected browser clock (Date.now/performance.now) to a fixed epoch
    via the existing started_at_ms_override seam, so two fresh --seed+--clock-anchor
    recordings reproduce an identical loom session diff (field_diffs=0, incl.
    dom_snapshot_hash). Under determinism, DOM capture now also awaits the CDP
    virtual-time budget (Emulation.virtualTimeBudgetExpired) before snapshotting, so
    setTimeout-driven DOM mutations fire deterministically; the budget is armed
    after Page.loadEventFired (hang-safe) with a timeout fallback to the existing
    settle. Composes with --seed; --no-determinism opts out. Documented recipe +
    bounded-determinism caveat in the README.
  • Session idle-TTL reaper + orphan-Chromium GC (#128). The daemon reaps idle
    sessions past their TTL and garbage-collects orphaned Chromium processes, surfaced
    via reap/doctor.

Fixed

  • Content-stable dom_snapshot_hash + replay-equal manifest chain (#129). Strips
    the ephemeral per-navigation CDP frameId from the DOM CBOR and projects ephemeral
    top-level fields out of the chain hash, so byte-identical content hashes identically.
  • Deterministic virtual-time entrance animations (#127). Client-side entrance
    animations render via deterministic virtual time instead of a frozen clock.
  • Unify DOM.getDocument pierce: true across all captures (#135). Consistent
    pierced DOM capture so snapshots don't diverge by capture site.
  • Manifest append O(n²) → cached last WAL line (#131). The manifest writer caches
    the last WAL line per session instead of re-reading the whole file on every append.

Changed

  • Consolidated the three LoomErrorCode enums into one canonical enum (#125).
    Removes the hand-mirrored kebab/snake/string drift class; decode routes through the
    canonical enum.
  • Extracted a shared network_entries offload-or-inline helper (#126). The
    ≥64 KB offload + graceful-degrade logic now lives in one place.
  • Removed the dead loom-surfaces crate (#137). Relocated safety and
    cookie_types into loom-shared; no functional change.

Install loom-cli 0.10.1

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/mentiora-ai/loom/releases/download/v0.10.1/loom-cli-installer.sh | sh

Install prebuilt binaries via Homebrew

brew install mentiora-ai/loom/loom

Download loom-cli 0.10.1

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