v6.0.0
The server moves to Apache-2.0, and 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.
Changed
- License: MIT is now Apache-2.0. Everything published up to and
including 5.6.1 was released under MIT and stays MIT forever; you keep
those rights on those versions. From 6.0.0 forward the license is
Apache-2.0, which adds an express patent grant and requires anyone
shipping a modified copy to state that they changed the files. For almost
every user this changes nothing about what you are allowed to do.
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.extension_list_templatesandextension_get_template_sourceresolve
the template catalog and sources from the pinned, content-addressed
corpus served atmedia.extension.land, with a commit-pinned GitHub
raw fallback. Both tools previously read a floatingnightly/main
ref, so two runs could disagree; they now resolve one immutable
release whose files are sha256-verified at the origin.- Console and dashboard links come from a shared URL contract and are
environment aware, so a local or development run no longer hands back
hardcoded production console URLs.
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.