Skip to content

v6.0.0

Choose a tag to compare

@github-actions github-actions released this 24 Jul 16:15
· 147 commits to main since this release

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_stop removes it, extension_build removes it
    before the build runs (and refuses to call a build clean if it ever
    finds the carrier in dist/), and extension_dev carrier: true adds
    it to .gitignore so the first git add -A cannot vendor it. Every
    path is marker-guarded: a directory the tool did not place is reported,
    never removed.

  • extension_open no 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_open treats a client-side redirect as a landing instead of
    reporting NavigateFailed, and reports where the page went. A failed
    http(s) navigation no longer sends the caller off to debug their own
    bundle.

  • extension_open confirms 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 a chrome.* call that rejects reaches the caller as a failure;
    executeScript refuses func/code forms it cannot honor, offscreen
    close is verified, and downloads.erase is implemented. A refusal now
    rides a refused disposition 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 to 4.0.16-canary.1784889479.74e12044. Two behaviors are worth
    the prerelease: EXTENSION_HEADLESS is finally honored, so an agent
    driving extension_dev cannot 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_wait already
    surfaces both through the ready contract. This pin returns to a stable
    release once 4.0.16 ships. A project with its own extension install
    is unaffected, and EXTENSION_MCP_CLI_VERSION still overrides.
  • extension_deploy and extension_store_status advertise safari
    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_templates and extension_get_template_source resolve
    the template catalog and sources from the pinned, content-addressed
    corpus served at media.extension.land, with a commit-pinned GitHub
    raw fallback. Both tools previously read a floating nightly/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_dev accepts carrier: true (Chromium-family sessions): it
    places the bundled Extension.dev Live Preview carrier in the project's
    ./extensions folder, 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-preview directory is never overwritten,
    and the tool result reports what happened either way. The prebuilt
    payload ships in the package under extensions/live-preview.