From 567717dfd7b2ec7235dca504765d7e7b42808134 Mon Sep 17 00:00:00 2001 From: feder-cr <85809106+feder-cr@users.noreply.github.com> Date: Wed, 20 May 2026 07:05:23 -0700 Subject: [PATCH] release: 0.1.4 - firefox-4 binary with Page.uncaughtError fix (#13) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes #13: every page that threw an uncaught JS error (bunny.net is the reporter's repro) crashed the Playwright client with "TypeError: Cannot read properties of undefined (reading 'url')". Root cause: upstream Playwright Juggler added a required `location` field to the Page.uncaughtError event in their 2026-05-07 patch roll; our fork was carrying the pre-roll schema in every firefox-N build, and any Playwright client released after the roll read pageError.location.url strictly. Fix is in the patched binary (feder-cr/invisible-firefox@1ba55d93), JS-only inside chrome/juggler/. xul.dll and firefox.exe are byte-identical to firefox-3 — only the Juggler protocol files change. BINARY_VERSION bumped firefox-3 → firefox-4. Package version 0.1.2 → 0.1.4 (0.1.3 was never published to PyPI; the changelog entry is kept as historical record of the firefox-3 binary release). --- CHANGELOG.md | 8 ++++++++ pyproject.toml | 2 +- src/invisible_playwright/constants.py | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1cf9ef9..427fd02 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,14 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), ## [Unreleased] +## [0.1.4] - 2026-05-20 + +### Fixed +- [#13](https://github.com/feder-cr/invisible_playwright/issues/13): every page that threw an uncaught JS error (e.g. bunny.net) crashed the Playwright client with `TypeError: Cannot read properties of undefined (reading 'url')`. Root cause: upstream Playwright Juggler added a required `location` field to the `Page.uncaughtError` event in the 2026-05-07 roll ([microsoft/playwright@c8604ec](https://github.com/microsoft/playwright/commit/c8604ecd97)); our fork was carrying the pre-roll schema in every `firefox-N` build. Fix matches upstream — Runtime.js builds the `errorLocation`, PageAgent.js forwards it on both worker and runtime error paths, Protocol.js declares the schema field. Reporter: [@dionorgua](https://github.com/dionorgua). + +### Changed +- `BINARY_VERSION` bumped from `firefox-3` to `firefox-4`. JS-only change inside `chrome/juggler/`; `xul.dll` and `firefox.exe` are byte-identical to `firefox-3`. + ## [0.1.3] - 2026-05-19 ### Changed diff --git a/pyproject.toml b/pyproject.toml index 639a0f3..95e15f1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "invisible-playwright" -version = "0.1.2" +version = "0.1.4" description = "Playwright wrapper for a patched Firefox with deterministic stealth profile." readme = "README.md" requires-python = ">=3.11" diff --git a/src/invisible_playwright/constants.py b/src/invisible_playwright/constants.py index eef17b0..43269eb 100644 --- a/src/invisible_playwright/constants.py +++ b/src/invisible_playwright/constants.py @@ -7,7 +7,7 @@ bugfixes don't force a multi-hour Firefox rebuild. from __future__ import annotations # Bump this when a new patched Firefox build is released on GitHub. -BINARY_VERSION: str = "firefox-3" +BINARY_VERSION: str = "firefox-4" # Underlying Firefox version (for display only; does not drive downloads). FIREFOX_UPSTREAM_VERSION: str = "150.0.1"