Skip to content

Releases

4.1.39 (November 6, 2026)

Choose a tag to compare

@github-actions github-actions released this 06 Nov 11:37
  • Safari builds take your own app icon, extension build --browser=safari --app-icon=icon.png uses the PNG as is instead of plating the manifest icon on a white tile. Docs
  • A production build warns when a public env variable is named like a secret, so an EXTENSION_PUBLIC_API_KEY never ships in a bundle unnoticed. Docs
  • SQLite in DevTools, npx extension@latest create my-extension --template=devtools-typescript-sqlite starts a DevTools panel backed by SQLite in the browser.
  • Firefox content scripts run once after a reload, the dev session no longer injects a second copy, and a missing scripting permission is named instead of failing quietly.
  • The Edge store zip leaves the manifest key out, dist/edge keeps it, so an unpacked Edge install keeps the pinned id your OAuth redirects depend on.

Features

  • Add an exclude config key to leave files out of one browser build (#991) (151892d3d)

Fixes

  • Resolve symlinked project paths before naming a reloaded file (#970) (c68fe6349)
Other changes (29)
  • Stamp the Safari app version and sharpen the build's warnings (#992) (0f5b204fd)
  • Keep the controlled preview copy outside the folder it copies (#990) (4fb2e2fb6)
  • Compile a module script on a runtime-opened page as ESM (#989) (20428c462)
  • Drop extension.dev pointers from the CLI, READMEs and templates (#988) (ad5863177)
  • Write the 4.1.39 highlights (#986) (67ae97524)
  • Name an unpruned dist file and clear what the code audit found (#985) (1bd95a428)
  • Give the dev watch specs a 30s rebuild window and a 90s budget (#983) (ec0be495f)
  • Drop the manifest key from the Edge store zip only, not from dist (#982) (c7afecebf)
  • Bound the Playwright install steps and keep lint off worktrees (#984) (44b4959bf)
  • Publish again once when Sigstore's log answers 409 after a 502 (#981) (51583f892)
  • Repin the template catalog to add the SQLite devtools template (#980) (b99353b0b)
  • Warn when a public env variable is named like a secret (#979) (2fa49b40e)
  • Show a public env example that is not a secret in the AI help (#978) (1bec7126c)
  • Let the dependency canary name a known upstream break instead of red (#977) (a4fe2db27)
  • Raise follow-redirects and minimatch to clear two alerts (#976) (282267534)
  • Declare the Safari config keys in the public config types (#975) (0c194e2dd)
  • Hold a Firefox dev session at starting until its RDP port is known (#972) (ebfda7f0f)
  • Name changed files and indexed modules by one project-relative path (#971) (4e405e9fc)
  • Keep emulated Chromium reloads partial and write each content script anew (#969) (6e336f0c4)
  • Build the Safari app icon from a supplied PNG, not a plated tile (#967) (08b683456)
  • Wait for Safari, name what blocks Settings, renew WebDriver (#964) (d584469a3)
  • Give every CI job a timeout and bound the xvfb apt step (#968) (9a240c8ef)
  • Wait for the recompile in the second dev session spec (#966) (7f97862dd)
  • Skip the reinject after a Firefox reload, which injects on its own (#965) (7cf52a56b)
  • Open the starting URL in the Safari automation window, or say why not (#960) (5408ad895)
  • Read the Xcode 26 team key so the Safari remedy lists a known team (#962) (e9fe63a9f)
  • Park every console level before the bridge connects and replay it in order (#961) (f062d1810)
  • Name the missing scripting permission when Firefox cannot inject (#959) (acf885a93)
  • Note a folded sidebar key and hint at a missing default export (#958) (d2160f5be)

4.1.38 (October 31, 2026)

Choose a tag to compare

@github-actions github-actions released this 31 Oct 22:29
  • Emulated Chromium needs no flag, extension dev --browser=chromium-emulator opens the emulated browser on its own now that the engine is public, and names the engine origin when it cannot be reached instead of opening a dead page
  • The wasm budget reads the surface that fetches the file, a .wasm reached only by pages and workers gets the 32 MiB budget while one a content script or the service worker reaches keeps 1 MiB and still warns, and perfBudgets.ignore excuses any asset by its output path or a glob
Other changes (2)
  • Open emulated Chromium from --browser chromium-emulator with no flag (#957) (5aac87619)
  • Budget a wasm runtime by its surfaces and add perfBudgets.ignore (#956) (790cf92bf)

4.1.37 (October 31, 2026)

Choose a tag to compare

@github-actions github-actions released this 31 Oct 02:35
  • Development-only pages and scripts, a player.dev.html in pages/ or a bench.dev.ts in scripts/ runs in extension dev and never reaches a production build, no HTML, no chunk, no manifest entry
  • Extra files in the build with include, map output paths to files or folders in extension.config.js, model weights or an exported tree outside the project included, layered per browser and per command
  • A MAIN-world content script leaves nothing on the page, production builds stop publishing the extension's base URL and the cleanup global to the host page, and the dev browser now passes bot checks and keeps sign-in pop-ups responsive
  • WebAssembly runtimes get their own 32 MiB budget, an on-device ML build with onnxruntime or ffmpeg ends "compiled" instead of a budget warning it could never act on, and perfBudgets.wasm caps it when you want to

Features

  • Add dev-only pages and scripts and an include config key (#951) (cfe62f1f3)
Other changes (13)
  • Give WebAssembly runtimes a 32 MiB budget of their own (#955) (1bd9a73e3)
  • Write the 4.1.37 release highlights (#954) (b612631b0)
  • Refuse a folder of projects and name versions on the build line (#953) (232b1c981)
  • Keep the cleanup registry off the page in a shipped MAIN bundle (#952) (ae7dce445)
  • Keep dev content-script names stable and index worker chunks (#950) (4f7af0f6c)
  • Let a Chromium MAIN-world bundle find its base without the bridge (#949) (44a41ab5a)
  • Drop the MAIN-world bridge in production when nothing reads it (#948) (8a872848b)
  • Transliterate accented letters in the zip file name (#947) (12f42d6d7)
  • Keep a use_dynamic_url resource out of a second static WAR group (#946) (24556bf13)
  • Group CodeQL bumps, patch flagged deps, fix a scanning alert (#945) (092314322)
  • Bump github/codeql-action init and analyze to 4.39.1 (#941) (0f1b34125)
  • Keep a require() aliased to false out of the bundle (#939) (4d6fab5bd)
  • Attach the extension's own CDP targets explicitly, no auto-attach (#938) (ed2d765ec)

4.1.36 (October 27, 2026)

Choose a tag to compare

@github-actions github-actions released this 27 Oct 20:13
  • "Ready" means the extension is running, Chrome dev sessions print ready only once the extension connects, and name the stuck profile when it never does
  • A build never overwrites a live dev session, extension build into the folder a running extension dev serves now stops before writing anything and points to --out-dir, so the browser you are working in keeps its files
  • Store warnings before you upload, a production build flags localhost and other loopback origins left in the manifest, and an Edge build says when its embedded settings page will be clipped to 368px, with the one-line edge:options_ui fix

Fixes

  • Stop the tabs permission warning on tabs.create({url}) (#920) (eeed54671)
Other changes (22)
  • Stabilize the create cleanup spec and write 4.1.36 highlights (#937) (838500366)
  • Repin the template corpus and resync the bundled STORE.md (#936) (4778c796e)
  • Warn on production loopback origins and Edge embedded options (#935) (ddca7eaa0)
  • Refuse a build into the dist a live dev session owns (#934) (bedbe9c48)
  • Say an ad-hoc Safari build needs the toggle after each relaunch (#933) (7b6bf7fca)
  • Print ready only once the extension attaches and explain the wait (#932) (d520f0dfb)
  • Stamp the build mode on every dist and prune dev files from production (76ee34e47)
  • File a copied dependency script under its package in the AMO note (#930) (1731540f2)
  • Give the launch-failed contract spec a grace period to reap (#929) (9d66dd15a)
  • Keep a module service worker alive in development builds (#928) (fc43bf189)
  • Record why a Safari session has no WebDriver connection yet (396a813de)
  • Stamp a UTF-8 byte order mark on every WebKit script asset (b61c8705d)
  • List every CLI browser target in the published browser type (#927) (92d7ee73b)
  • Read the Safari signature off the built app and name a team Xcode lacks (3f1776ae9)
  • Open the Firefox welcome page behind a configured starting URL (#922) (9c13f68fb)
  • Keep a property read ahead of its delete in production builds (#921) (56356f60a)
  • Ask git once per cell in the gitignore spec so Windows stays green (#923) (2a3ac21a6)
  • Let a headed Chrome dev window play sound and drop webdriver (#919) (553de755c)
  • Drop persistent on every Safari build and stop claiming a storage reset (b806eef2b)
  • Keep module ids stable and write the AMO reviewer note for Firefox (e89cd091b)
  • Resume a release publish from its tag before anything is built (#916) (e4c317d71)
  • Wait once more after npm's 409 before calling a publish held (#915) (8849da813)

4.1.35 (October 22, 2026)

Choose a tag to compare

@github-actions github-actions released this 22 Oct 18:48
  • Build beside a running dev session, extension build --out-dir <path> writes <path>/<browser> and leaves dist/<browser> to the dev server, so a test suite or store packaging never stops the window you are working in
  • Embedded options pages open every time, a Chromium options_ui page that paints empty until its data arrives used to leave Chrome's options dialog closed; builds now give it a first layout, so the dialog opens and grows with the content
  • Your web_accessible_resources scope wins, a resource you already list for a few sites stays on those sites even when a scripts/ file references it, instead of being widened to every origin

Features

  • Add --out-dir to build and leave a live dev session alone (#907) (d9982b4bb)
  • Add a dispatchable loop of the content-reload spec (#882) (48dfbd3c1)

Fixes

  • Fix commit hooks in worktrees and gitignore rule provenance (#902) (9e0037287)
  • Fix browser launch reports, dev server port holds and reconnects (#901) (e1d736bed)
  • Fix dev session state, workspace installs and Windows renames (#900) (05b6299ff)
  • Fix asset rules, host matching, polyfill and web resources (#899) (785bde177)
  • Fix runtime file tracing, page scripts and dev root lookup (#898) (2ece71246)
  • Fix CSS, resolve and manifest field handling in builds (#897) (1aa9a47eb)
Other changes (23)
  • Write the release highlights for the next stable (#914) (6eb672810)
  • Move the template pin to the examples head and resync STORE.md (#913) (e2a34a818)
  • Keep the author's scope for resources a scripts/ file names (#911) (83f79bcb0)
  • Bound the exec runner probes so a slow registry skips a runner (#912) (b44318712)
  • Take the port-manager spec's base ports from the OS (#910) (c056e0113)
  • Bump vitest to 5.0.5 for the patched @vitest/mocker (#909) (9e2998caa)
  • Point git hooks at a dispatcher every worktree can reach (#908) (4a4bf7f15)
  • Floor the options page height so Chrome's embedded dialog opens (#905) (00a95f9c0)
  • Bump github/codeql-action to 4.39.0 in every workflow (#906) (0d9a9e1c3)
  • Name activeTab grants and resolve jsconfig path aliases (#904) (182a83d11)
  • Isolate spec ports and Safari stand-ins between parallel suites (#903) (7561fd17b)
  • Retry the browser launch on the next compile after it fails (#896) (402fd0537)
  • Load the fallback config copy beside its source (#895) (3f3ca7860)
  • Ignore declarations a compile drops beside program sources (#894) (04ebb41bc)
  • Raise vite, launch-editor and follow-redirects past advisories (#893) (452047191)
  • Honor a leading --output and report failed act and old Node runs (#892) (f75cf5e80)
  • Ask for a project name on create and report the dependency install (#891) (1384bc857)
  • Name the command and code on every failed run in telemetry (#890) (c8a4282b2)
  • Record a corrected npm weekly figure in the traffic snapshot (#889) (30cc29674)
  • Re-read the dev content-script registry when a stub finds none (#884) (e75e65232)
  • Age fixture sources so the startup rescan has nothing to compile (#881) (6a0479720)
  • Rebuild only for files the build knows and refresh pages it owns (#879) (8450c202a)
  • Cache previewed archives and name a refused share link (#878) (e6044ff29)

4.1.34 (October 19, 2026)

Choose a tag to compare

@github-actions github-actions released this 19 Oct 17:22
  • Sidebar scaffolds name their page, the greeting a fresh extension create sidebar logs now says it is the sidebar page, so a busy console reads at a glance

Features

  • Enable a Safari extension and read its UI through Accessibility (#874) (48030be45)

Fixes

  • Stop asking for tabs when host permissions already grant every site (#857) (482293d0c)
  • Stop managed Firefox self-updates and name the template source (#841) (895b2efa5)
  • Restore url override tabs after a dev extension reload (#839) (9597c94e1)
Other changes (25)
  • Keep the Safari API warning quiet behind a feature check (#875) (54f554a57)
  • Find the system Edge on Windows and name the overrides when it is missed (#873) (5f01e93dd)
  • Resync the bundled javascript template to the examples corpus head (#872) (72a28406f)
  • Accept publish share links up to a year and let the server set the default (#871) (e01a1666d)
  • Reach production Firefox pages through relays and the debugger (#866) (e536a6cc7)
  • Name the compile error in doctor instead of calling the session launching (#870) (8381a382f)
  • Write a failed compiler's error as plain text into ready.json errors (#869) (12cd33298)
  • Let a Firefox start session connect and wake its control producer (#865) (eff75668c)
  • Replay MV2 browser_action and page_action clicks in open action (#868) (2f07dce20)
  • Stamp each reload dev applies after a compile into ready.json (#867) (1bd92fa7b)
  • Reuse an unchanged Safari build and say when Safari resets storage (#864) (857fc090e)
  • Open the starting URL only after the extension is installed (#863) (b8c277d7d)
  • Drop the Firefox add-on manifest cache before every launch (#862) (9b3d9da18)
  • Let start and preview open the control channel on a production run (#858) (b95230444)
  • Await a page eval in the tab and stop calling every failure a lost tab (#861) (47a828eae)
  • Reload the extension when a compile renames a bundle its manifest names (#859) (7941aed1b)
  • Wake a suspended Firefox event page before refusing a control verb (#860) (0f9ed7686)
  • Use the Extension.js logo as the Discord release avatar (#856) (12154d1bf)
  • Replace the expired Discord invite with a permanent one (#855) (df378e2af)
  • Keep the template line spec quiet under an exported author mode (#846) (29df24031)
  • Name an npm staged publish instead of timing out the release job (#844) (1c1f0a043)
  • Accept an exact canary pin and drop the session folder notice (#843) (418cd395c)
  • Bound the Windows pid probe that stalls doctor and its spec (#842) (3762abe05)
  • Confirm the browser loaded the extension in start and preview (#840) (2a99be90f)
  • Refuse a missing options page and keep dev noise out of tools (#838) (7cebaaf33)

4.1.33 (October 8, 2026)

Choose a tag to compare

@github-actions github-actions released this 08 Oct 18:44
  • Safari dev runs leave your Safari alone, the app a run opens stays in the background and is the only one quit on stop. Safari guide: https://extension.js.org/docs/browsers/safari
  • Sidebar starters read the page, every extension create sidebar template now asks the open tab for its title through a ready-made message channel, so a panel that follows the page starts from working code
Other changes (7)
  • Resync the bundled javascript template and write the highlights (#837) (fd5364b49)
  • Point the Safari remote automation hint at Settings > Developer (#836) (62e993305)
  • Swallow a vanished pid in the Safari spec cleanup (#835) (f14ae22d9)
  • Ship the eval ok golden with the bare value the CLI answers (#834) (2dd884e34)
  • Quit the Safari app a dev run raised and open it in the background (#833) (bf2872128)
  • Make the install stdout spec hermetic and print its run on failure (#832) (f32bc0211)
  • Pin the create source tag and state the full telemetry contract (#831) (8bab149d1)

4.1.32 (October 7, 2026)

Choose a tag to compare

@github-actions github-actions released this 07 Oct 12:27

Fixes

  • Fix the close code spec port race and wait for state in specs (#799) (fe5ddbae1)
Other changes (45)
  • Poll the probe stand-in's exit instead of reading it once (#829) (5ee92fb2d)
  • Escape each bundled file request in the stylesheet module (#828) (8f6f55bd3)
  • Code CDP launch failures with the four debug protocol codes (#825) (ff24e8648)
  • Carry each compile diagnostic with its code on the failure frame (#826) (0387fe978)
  • Report manifest file errors beside a module error (#827) (c1afd8b80)
  • Keep machine stdout clean and one dev session per browser (#824) (2e8386c50)
  • Drop a content_scripts entry left without js or css by a prefix (#822) (7eca6c463)
  • One shutdown row, one first compile and human lines off JSON stdout (#820) (c64bfc823)
  • Stamp a safaridriver session into ready.json for Safari dev (#823) (749a79b05)
  • Ship a sibling web resource once and code the carried-on warnings (#819) (da259cfa0)
  • Move three transitive dependencies past their advisories (#821) (e3999e1ba)
  • Drop the store submission pitch from the scaffolded STORE.md (#791) (0819894c7)
  • Tag CLI docs links with a source and fix a stale docs path (#796) (7f7832e4c)
  • Raise the engine's Vue pins to 3.5.43 past the server-renderer advisory (#818) (99cabbe9f)
  • Send debug lines to stderr when stdout carries JSON (#817) (372433116)
  • Hold start on starting until the probe passes, watch every locale (#816) (4f0775d60)
  • Scope web accessible assets and refuse a second dev session (#815) (58f1694ba)
  • Pin Corepack on install and keep a JSON build stdout to one frame (#809) (7e122d3fd)
  • Keep a dev session honest about its end, files and siblings (#814) (39d446a26)
  • Run four specs CI always skipped and bind fake servers to loopback (#813) (66c4db1bf)
  • Carry launcher and interrupt codes to the stream, retire dead ones (#812) (ac89ed211)
  • Ship one copy of every asset and lift every sheet of a script (#811) (17ad2d472)
  • Keep a document_start isolated content script static in dev (#810) (db9deaf03)
  • Keep unreferenced scripts/ files and drop the per-build warning (#808) (f5908e066)
  • Fail on any missing icon path and skip a locale with no messages (#807) (03c389274)
  • Prove the pinned offline install stayed offline on Windows too (#806) (122daac0d)
  • Give the config hooks the target browser, mode and command (#805) (979e7ce9b)
  • Ask PostHog for no location on every CLI telemetry event (#804) (9e04de574)
  • Compile workspace siblings and warn on a constant nothing defines (#803) (433cbe709)
  • Fail asset namespace reads and compile pages the manifest lists (#802) (42bf571af)
  • Name each stylesheet file once and point emitted sheets at root (#801) (135ca6300)
  • Wire seven error codes and mark the ones no source emits (#798) (b67f3f7cb)
  • Keep a dev session's dist to what its project and compile produce (#797) (cac3d9c57)
  • Name the install default and send Corepack to a pinned registry (#795) (f5f89ae42)
  • Keep build warning lines apart and shorten the _locales paths (#794) (e710445b9)
  • Ship no file for a key Safari drops and name store check keys (#793) (b2198e33c)
  • Fail CI on a dropped job and accept Windows paths in a size spec (#800) (4e3d17edd)
  • Trim what a production build exposes and report its true size (#792) (ef07204f4)
  • Read the pinned Gecko binary's version for the preview card (#790) (84f8d4d5e)
  • Format the 23 drifted files and check formatting in lint (#789) (2303530c1)
  • Make Firefox eval answer large results, statements and CSP pages (#788) (af9e5d6d3)
  • Refuse to launch a Gecko browser on its own profile (#787) (52e602c75)
  • Let only the page entry accept a hot update so child edits render (#786) (158c097fb)
  • Clear the shellcheck notes actionlint prints for three workflows (#785) (4473d85a4)
  • Run nightly dev smokes under Xvfb and require a loaded extension (#784) (6995f4d49)

4.1.31 (October 4, 2026)

Choose a tag to compare

@github-actions github-actions released this 04 Oct 13:13
  • One sidebar or toolbar key builds for every browser. Declare the Chrome side panel and Firefox gets a working sidebar, declare the Firefox sidebar and Chrome and Edge get the side panel, and the Firefox Manifest V2 recipe gets its toolbar button back. The build translates side_panel, sidebar_action and action to the key each browser reads and says so in one line.
  • Zip archives moved, so check your CI paths. extension build --zip writes beside the browser folder as dist/<name>-<version>-<browser>.zip instead of inside dist/<browser>/. --zip-filename=release writes dist/release-chrome.zip, and adding --zip-source writes one dist/release-source.zip, so two browsers built with the same name never write over each other.
  • The dev server answers only the hosts it knows. A request under another name, like a Docker service, a tunnel or a .local address, gets a 403 that names the fix: extension dev --allowed-hosts web,.ngrok.app, or commands.dev.allowedHosts in the config.
  • Dev says what it really loaded. A changed .env restarts the session with the new value and an edited extension.config.js asks for a restart instead of printing success. A browser that never started or quit early marks ready.json as an error and --wait exits non-zero. extension dev <github url> builds only a folder it downloaded itself and leaves a same-named folder of yours untouched.

Features

  • Add the examples catalog nightly lane and typecheck every spec (#766) (73e50b93e)
  • Add configResolved, a folders key, define typings and ?raw (#671) (9e9b43b9f)
  • Add a define option, a manifest entry and whole locale trees (#665) (f8966b2e2)

Fixes

  • Resolve the Sass and Less loaders to absolute paths (#770) (9451400b5)
  • Restore the CLI contracts scripts relied on at 4.1.30 (#764) (715cc6455)
  • Resolve a remote source to a tree this tool actually fetched (#759) (11a99f545)
  • Restore the browser launch and project layouts 4.1.30 accepted (#762) (e4dc4d06b)
  • Stop a dev session reporting success for a change it ignored (#758) (d1a0f04d6)
  • Stop shipping dev reload scaffolding and duplicate bundles (#755) (fd29e7077)
  • Resolve locales per browser and accept _locales inside public (#729) (eb7540873)
  • Stop telemetry from swallowing crashes and reprinting the notice (#723) (e45a8b734)
  • Harden the dev server HTTP surface, port probe and emulator route (#722) (7e30f06ca)
  • Stop the dev log relay from posing as the extension's devtools port (#720) (4363bc925)
  • Guard cache groups and runtimeChunk, background.page is a page (#704) (d4fe9f6a2)
  • Sweep only staging dirs whose owning build is gone (#681) (2454a9afa)
  • Resolve root-owned web accessible resources at their root path (#666) (f556fd007)
  • Fix the companion scan, unpacked preview and permission warnings (#664) (dab685f9d)
  • Fix CSS module, JSON, extra entry and Vue loader defaults (#663) (33064f0fb)
Other changes (94)
  • Stamp a silent pin on the contract and bound create fetches (#778) (3a204a144)
  • Keep thrown values out of the emulator file index error body (#777) (2d7f7d67e)
  • Bound version probes and align remote and override failures (#776) (97f6cfca7)
  • Let configResolved set minimize, fix folders off and command types (#774) (4bbb683a0)
  • Give launch, remote archive and startup failures one coded frame (#775) (03b1680ff)
  • Refuse a non-ZIP template URL, frame a preview launch failure (#773) (7c038f977)
  • Write the 4.1.31 release highlights (#772) (872fccefe)
  • Stamp a browser that never spawned on the ready contract (#771) (9cb3da42a)
  • Replace the dead cli gate with a guard, type manifest_version (#769) (89e18a657)
  • Verify managed installs, withhold ready once the browser is gone (#767) (7b648717a)
  • Keep raw imports, typeless configs, PostCSS order and asset types (#768) (0055752e8)
  • Pin the template corpus to the pruned examples tree (#765) (d4a591852)
  • Keep dev hosts, env ignores, force kill and preview as before (#763) (0c1d95631)
  • Build Solid, Vue 2 and custom config projects that 4.1.30 built (#761) (5d1a3b09e)
  • Keep projects that built on 4.1.30 building with the same output (#760) (73076a546)
  • Scaffold what the user asked for and name why a create refused (#756) (51e5fc8ce)
  • Translate sidebar and toolbar keys to the name each browser reads (#757) (7ac518023)
  • Handle a dead CDP pipe instead of reporting a dev server fault (#754) (bc9b4b15a)
  • Refuse a managed binary an interrupted download left behind (#753) (40e31d7f1)
  • Wait for the state these bridge tests assert, not for a stopwatch (#752) (a0853e5fb)
  • Trust the install over the folder label, and name the collision (#751) (f279e5fd3)
  • Reach an idled Firefox event page over the protocol (#750) (81de79724)
  • Evaluate a config where it lives instead of a temp copy (#749) (d78394685)
  • Say what a --wait failure was instead of printing a stack trace (#747) (cc074f896)
  • Make a requested zip exist or fail the build (#748) (d494fc6e1)
  • Point a built page at the public files it actually ships (#746) (1258a32f8)
  • Say what a preview run resolved on every output path (#745) (ddb5010ef)
  • Refuse a preview the browser will not load (#744) (5bb6e5812)
  • Prove a spec install stayed offline instead of trusting an env pin (#742) (3cea81ce7)
  • Name the dev server, session and port refusals the table promised (#741) ([f567c63](f567c63...
Read more

4.1.30 (September 30, 2026)

Choose a tag to compare

@github-actions github-actions released this 30 Sep 21:39
Other changes (15)
  • Build the Firefox templates after the Chromium e2e project (#661) (0d5a42fa)
  • Build the Firefox templates before the nightly e2e Firefox specs (#659) (1bc33c44)
  • Trim the Yandex launch path and spec the companion start pages (#653) (8143b84d)
  • Show the welcome page on Yandex by loading the companion over CDP (#652) (ee6be5e3)
  • Derive the companion id from its load path on every Chromium (#651) (d9372ba9)
  • Show the welcome page on browsers that start on their own page (#649) (51503de7)
  • Let the new tab footer surface pass the browser identity check (#647) (5c720100)
  • Name a closed surface on Chromium and let reload resolve its tab (#646) (91081978)
  • Name the browser exit when act verbs find no service worker (#645) (93109099)
  • Name a missing tab and a refused url on every act verb (#644) (22c85af2)
  • Name the rule when Firefox refuses a url from the navigate verb (#643) (3caa57eb)
  • Settle a promise before a surface replies to an eval (#642) (0aea1b6a)
  • Keep a fork's own onboarding off the extension and out of Opera (#641) (81b428aa)
  • Repin the template catalog as part of every release cut (#640) (056bf123)
  • Repin the template catalog to the 4.1.29 corpus (#639) (db02b123)