Skip to content

v6.4.0

Choose a tag to compare

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

A build on your machine can now become a link someone else can open, and the
bundled Live Preview carrier finally allows the origin that opens it.

Added

  • extension_preview_web renders an in-progress build in the web emulator.
    It builds the project, points preview.extension.dev at dist/<browser> over
    the dev-only preview://build scheme, and returns a deep link plus a
    loadability check against the preview dev server. surface:"inspect" renders
    in inspect.extension.dev instead, for fixture and forensic work. This tool
    reaches npm for the first time in this release.
  • share:true uploads the build you just made. It POSTs the resolved
    dist/<browser> to the platform's artifact store and returns a public
    preview.extension.dev link that renders those exact bytes, for a recipient
    with no install, no sign-in, and no dev server. That link also serves the
    whole build as a downloadable zip (share.zipUrl), so sharing it hands over
    the built code. share.serves reports uploaded-local-build. Sharing needs a
    token scoped to an existing extension.dev workspace and project
    (extension_login or EXTENSION_DEV_TOKEN, valid up to 7 days), degrades to
    a login hint when there is no token, and never fails the local preview.
    share also returns expiresAt and revokeUrl: shared builds expire, and
    DELETEing revokeUrl with the same token kills the link for good, which is
    the part a TTL alone cannot do when a link reaches the wrong person.
  • A shared link's revoke handle survives losing the tool output. Revocation
    is permanent and re-sharing mints a new artifact id, so share.revokeUrl is
    the only handle that can ever pull a given link, and losing it used to mean
    waiting out the 30-day TTL. Every successful share is now appended to
    .extension.dev/shared-previews.json in the project, next to the carrier's
    own project-local state and gitignored the same way: one entry per share with
    previewUrl, artifactId, revokeUrl, expiresAt, zipUrl and the time it
    was shared. The list is only ever appended to, an unreadable file is kept
    aside instead of overwritten, a write that fails never fails the share, and
    the returned share.record and note say where the handle went. If the entry
    cannot be added to .gitignore, the response says so.
  • extension_theme_verify settles a Chrome theme manifest before it ships.
    It derives every color current Chrome would paint from the manifest with a
    transcribed Chromium resolver and reports the divergence class of any problem:
    D1 fabrication, D3 parity gap, D4 acceptance gap (keys Chrome silently
    discards, such as dead legacy keys, incognito keys, unknown keys and
    out-of-range values). The legs that need a real browser come back as
    needsAttended with a pointer to the attended harnesses, never as passed.

Fixed

  • The bundled Live Preview carrier reaches preview.extension.dev. This
    package ships the carrier prebuilt and extension_dev materializes it into
    the project's ./extensions, so the carrier only changes when the package
    does. Its externally_connectable allowlist had no web preview origin, so a
    page on preview.extension.dev could not talk to the carrier at all. 6.3.0
    shipped without the fix.
  • The carrier popup requested icons/icon.png while the carrier build ships
    images/icon.png, so the popup icon was broken.

Changed

  • extension_preview_web takes no channel argument. It renders the build on
    disk, not a promoted CI build. extension_publish and
    extension_release_promote are unchanged and remain the path for released,
    channel-scoped builds.
  • The server advertises 35 tools, up from 33.