From f1f3148d8f7d538d5069221d158b66bc8e02368a Mon Sep 17 00:00:00 2001 From: feder-cr <85809106+feder-cr@users.noreply.github.com> Date: Tue, 19 May 2026 21:08:55 -0700 Subject: [PATCH] release: 0.1.3 - firefox-3 binary with all C5-C7 fixes (Win + Linux from clean fork) BINARY_VERSION bumped from firefox-2 to firefox-3. Both archives on this release are built from a clean clone of feder-cr/invisible-firefox#stealth/150 (the consolidated source-of-truth fork) at commit 68906f1f9c55. Changes vs firefox-2: - Proper C++ jugglerSendMouseEvent (replaces JS workaround from 0.1.1) - C1+C2: setDownloadInterceptor re-landed - C4: 5 nsIDocShell stealth attributes - C5: launcher + wmain juggler-pipe handle inheritance (Win) - C6: juggler-navigation observer notifications - C7 (partial): nsIDocShell.languageOverride storage stub - First native Linux build with the full patch series (previous releases shipped a stale Linux archive copied from earlier builds) Verified with the 4-test smoke gate on both Windows and Linux: - test_launch (pipe stays connected, gap C5 sentinel) - test_new_page (Page.ready fires, gap C6 sentinel) - test_mouse (jugglerSendMouseEvent C++) - test_stealth (navigator.webdriver=false + sannysoft check) --- CHANGELOG.md | 21 +++++++++++++++++++++ src/invisible_playwright/constants.py | 2 +- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 75e40d1..1cf9ef9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,27 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), ## [Unreleased] +## [0.1.3] - 2026-05-19 + +### Changed +- `BINARY_VERSION` bumped from `firefox-2` to `firefox-3`. The new archives on both Windows and Linux are built from a clean clone of [feder-cr/invisible-firefox#stealth/150](https://github.com/feder-cr/invisible-firefox/tree/stealth/150) — the consolidated source-of-truth fork (renamed from `feder-cr/firefox`; the companion `feder-cr/firefox-stealth` patches repo was deleted, all patches now live as commits on top of `mozilla-firefox/firefox`). +- The patched Firefox archive now ships the **proper C++ implementation** of `windowUtils.jugglerSendMouseEvent`, replacing the JS shim from 0.1.2. + +### C++ fixes landed in this release +- **C1+C2**: `setDownloadInterceptor` IDL + cpp (re-landed for FF150). +- **C4**: 5 `nsIDocShell` stealth attributes (`fileInputInterceptionEnabled`, `overrideHasFocus`, `bypassCSPEnabled`, `forceActiveState`, `disallowBFCache`). +- **C5**: `LauncherProcessWin.cpp` + `nsWindowsWMain.cpp` juggler-pipe handle inheritance — without this, the Playwright pipe disconnects immediately on launch. +- **C6**: `juggler-navigation-started-renderer` / `-browser` observer notifications in `nsDocShell.cpp` and `CanonicalBrowsingContext.cpp` — without these, `Page.ready` never fires and `ctx.new_page()` hangs. +- **C7 (partial)**: storage stub for `nsIDocShell.languageOverride`. Workaround `InvisiblePlaywright(locale="")` recommended until full BC FIELD port lands. + +### Verified +- Both archives built from same source: feder-cr/invisible-firefox commit `68906f1f9c55`. +- Windows + Linux smoke suite green: launch, `ctx.new_page()`, `page.mouse.{move,down,up,click,wheel}`, `navigator.webdriver=false`, sannysoft 32/33 PASS. +- SHA256 published in `checksums.txt` on the `firefox-3` release. + +### Notes +- This is the first release with a native Linux build of the patched binary (previous `firefox-3` draft mentioned shipping the Linux firefox-2 archive byte-for-byte; that no longer applies — Linux now has the full C++ patch series). + ## [0.1.2] - 2026-05-18 ### Changed diff --git a/src/invisible_playwright/constants.py b/src/invisible_playwright/constants.py index bb26df3..eef17b0 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-2" +BINARY_VERSION: str = "firefox-3" # Underlying Firefox version (for display only; does not drive downloads). FIREFOX_UPSTREAM_VERSION: str = "150.0.1"