v5.7.0
The live-preview carrier stops living in your project, reports what it
refused, and rides an engine that tells you when the browser turned your
extension away.
Fixed
-
The live-preview carrier is no longer a permanent resident of the
project.extension_stopremoves it,extension_buildremoves it
before the build runs (and refuses to call a build clean if it ever
finds the carrier indist/), andextension_dev carrier: trueadds
it to.gitignoreso the firstgit add -Acannot vendor it. Every
path is marker-guarded: a directory the tool did not place is reported,
never removed. -
extension_openno longer navigates away whatever page the caller was
watching. It reuses only a disposable tab (blank, new-tab page, or a
tab already on the same extension origin) and otherwise opens a new
background tab, so a trace page keeps its carrier registration. -
extension_opentreats a client-side redirect as a landing instead of
reportingNavigateFailed, and reports where the page went. A failed
http(s)navigation no longer sends the caller off to debug their own
bundle. -
extension_openconfirms with the browser that a UI surface actually
opened. When the engine reports the surface opened and no document
target appears, the result says so (SurfaceDidNotOpen) and points at
asTab: true, instead of handing back a green answer for a surface
that is not there. -
The bundled carrier payload answers with its real results. Every
backend method returns the promise it was given instead of a shape,
so achrome.*call that rejects reaches the caller as a failure;
executeScriptrefusesfunc/codeforms it cannot honor, offscreen
close is verified, anddownloads.eraseis implemented. A refusal now
rides arefuseddisposition from the refusal site through the carrier
into the trace, so refused calls stop being badged as real work and
stop earning coverage. Storage rows correlate on a canonical key (one
call, one row), tab facts survive both directions, and the event port
replays its backlog to a page that connects late.
Changed
- The engine this server spawns when a project has no local install is
pinned to4.0.16-canary.1784889479.74e12044. Two behaviors are worth
the prerelease:EXTENSION_HEADLESSis finally honored, so an agent
drivingextension_devcannot open a window on the operator's screen,
and a browser refusing to load the extension is reported as an error
instead of a session that claims to be ready.extension_waitalready
surfaces both through the ready contract. This pin returns to a stable
release once 4.0.16 ships. A project with its ownextensioninstall
is unaffected, andEXTENSION_MCP_CLI_VERSIONstill overrides. extension_deployandextension_store_statusadvertisesafari
again: the platform's Safari/App Store submission lane is now enabled
for every project, so the store enum and the per-store status report
treat it like chrome, firefox, and edge.
Added
extension_devacceptscarrier: true(Chromium-family sessions): it
places the bundled Extension.dev Live Preview carrier in the project's
./extensionsfolder, which Extension.js auto-loads as a companion
beside the extension under development. Pages the carrier allowlists
(inspect.extension.dev, localhost) can then pair with the live session
and stream its real-lane chrome.* session trace over the carrier's
event port. The copy is marker-guarded: an existing unmanaged
extensions/extension-dev-live-previewdirectory is never overwritten,
and the tool result reports what happened either way. The prebuilt
payload ships in the package underextensions/live-preview.