This file aggregates release notes across the workspace. Per-package detail lives in packages/<name>/CHANGELOG.md (auto-generated by Changesets).
The mochi monorepo uses independent versioning. The "release" of mochi is the set of @mochi.js/* packages published together to npm.
@mochi.js/core 0.7.0 drops the Rust wreq HTTP layer. Session.fetch now routes through Chromium itself via CDP — Network.loadNetworkResource for simple GETs (CORS-bypassed at the network layer), page.evaluate("fetch") against an about:blank scratch frame for non-GET. JA4/JA3/H2 are real Chrome by definition because Chromium is the client; cookies inherit from the page's origin; CORS applies for non-GET cross-origin calls.
Breaking changes
- Cookie inheritance.
Session.fetchshares the session's cookie jar with the browser. Pre-0.7 the wreq path was cookieless. Setinit.credentials = "omit"for the page-evaluate path or clear the relevant cookies before the call to recover the previous behavior. - CORS for non-GET. Mechanism B obeys CORS; cross-origin POSTs without
Access-Control-Allow-Originwill fail in 0.7 where they may have succeeded in 0.6. - Body shapes.
Blob/FormData/ReadableStreamrequest bodies throw with a clear diagnostic.string/ArrayBuffer/ typed arrays /URLSearchParamscontinue to work.
Deprecations
@mochi.js/netand@mochi.js/net-rsare deprecated and no longer published. The cdylib install friction (thebunx mochi pm trust @mochi.js/net-rsstep, the cross-platform prebuild matrix, thecargo buildfallback) is gone.ProfileV1.wreqPresetandMatrixV1.wreqPresetare deprecated. The runtime no longer reads either field; the schema retains them for one release for migration. Drops in 0.8.
ALL_BROWSER_PERMISSIONS retuned for Chromium 148
The constant matches Browser.PermissionType on Chromium 148. Removed: accessibilityEvents, captureHandle, flash, videoCapturePanTiltZoom. Added: ar, vr, handTracking, automaticFullscreen, cameraPanTiltZoom, capturedSurfaceControl, keyboardLock, pointerLock, localNetwork, localNetworkAccess, loopbackNetwork, smartCard, webPrinting. Calls to page.grantAllPermissions() against an older Chromium fall through with no behavior change; calls against 148 stop tripping the Unknown permission type: accessibilityEvents runtime error.
Migration: see docs/reference/migration#upgrade-from-v06--v07-sessionfetch-routes-through-chromium.
Severity: install-blocking for v0.1.0.
v0.1.0 was published with unresolved workspace:* references in the published package.json files. changeset publish (which wraps npm publish) does not rewrite workspace:* to concrete semver — that is a pnpm/yarn courtesy npm doesn't replicate. As a result, bun add @mochi.js/core@0.1.0 fails with Workspace dependency not found for every internal dep.
Fix: scripts/rewrite-workspace-deps.ts runs as a publish-time pre-hook, rewriting workspace:* → ^<sibling-version> from the local workspace map. Verified by bun pack-ing the affected packages locally and inspecting the resulting tarball before pushing.
Affected packages bumped to 0.1.1: @mochi.js/core, @mochi.js/cli, @mochi.js/inject, @mochi.js/net, @mochi.js/behavioral, @mochi.js/harness, @mochi.js/profiles. @mochi.js/consistency and @mochi.js/net-rs are leaf packages with no internal deps and remain at 0.1.0.
If you installed v0.1.0: bun add @mochi.js/core@latest @mochi.js/cli@latest.
First public npm release. Foundations: pipe-mode CDP transport, relational fingerprint Matrix (40-rule DAG), JIT-friendly inject payload, behavioral synthesis (humanClick / humanType / humanScroll), JA4-coherent session.fetch via Bun:FFI → Rust wreq, proxy auth (HTTP/HTTPS/SOCKS5) via Fetch.authRequired, prebuilt cdylibs for darwin-{arm64,x64} / linux-{x64,arm64} / win32-x64, mochi browsers install for stock Chromium-for-Testing.
Known limit (install-blocking): see v0.1.1 above.
For per-package breakdowns: