Browser: beta.31, cut from the integration merge in 35b45c1 (#756). Tagging
publishes it as a prerelease; beta.30 stays the latest stable release.
pythonlib: 0.5.6b1 -> 0.5.6. The pre-release existed because
PLAYWRIGHT_BROWSER_FLOORS pins Playwright >= 1.61 to browser beta.30, and
beta.30 was itself only a prerelease, so the floor pointed at a build the
resolver would not hand to users. beta.30 is now the latest stable release, so
the floor resolves and 0.5.6 can ship as final.
Verified on linux x86_64 before cutting:
build-tester all categories pass; the one varying slot is a
cross-profile uniqueness collision across 3 random draws
(macOS Screen, then Linux Screen, then macOS Canvas over
three runs), not a regression
patch guards 16/16
Playwright suite 13 failed, 1083 passed vs stock beta.30's 14/1082
pythonlib tests 209 passed
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W2RfR387Mh1JhZ9LZvkptP
Pairs the library with the browser: v152.0.4-beta.30 is published as a GitHub
pre-release, so the library that requires it should be one too.
PEP 440 puts 0.5.6b1 after 0.5.5 and before 0.5.6, and pip skips pre-releases
by default -- so `pip install camoufox` still resolves 0.5.5, and only
`pip install --pre camoufox` or an explicit pin picks this up. That is what
makes the conditional browser floor safe to exercise in the wild: the users who
opt in are the ones who get moved to beta.30.
Verified against the live release: with Playwright 1.61 installed the effective
floor resolves to beta.30 and the fetcher selects the real published asset
(camoufox-152.0.4-beta.30-lin.x86_64.zip). 172 tests pass, the 3.8 vermin gate
holds, and the package builds as camoufox-0.5.6b1.
Known wrinkle, not introduced here: _parse_semver() does int("6b1"), fails, and
substitutes 0, so 0.5.6b1 parses to (0, 5, 0). The browser constraint still
resolves correctly because repos.yml's only entry is min 0.5.0 / max 1, but a
future entry gating on a patch version would silently miss a pre-release
install. Worth making that parser PEP 440-aware separately.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Raises the browser floor to beta.30 because 0.5.6 permits Playwright >= 1.61,
which sends viewport isMobile/screenSize in Browser.setDefaultViewport. Only
beta.30's Protocol.js schema accepts those; on beta.29 every new_context()
fails with "Protocol error (Browser.setDefaultViewport)". Measured: 1.60 works
on both builds, 1.61 and 1.62 fail on beta.29 and pass on beta.30.
The floor means pythonlib 0.5.6 cannot run until the beta.30 release assets are
published -- it must not reach PyPI first.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The cherry-picked #742 replaced `playwright = "<1.61"` with `"*"`. The
breakage it fixes is real, but an unbounded range removes the tripwire
rather than making the browser forward-compatible: `camoufox.server`
imports `playwright._impl._driver.compute_driver_executable`, a private
API with no compat guarantee, and `additions/juggler` is a fork of one
Playwright vintage that every minor release is free to break again --
1.61 sending `viewport.isMobile` is exactly that, and it will recur.
So the cap moves up rather than away, to the tested-current 1.62.0. No
lower bound is added: this package has never carried one, and the launch
path was exercised against 1.53.0 as well as the 1.62.0 the Playwright
suite runs on.
build-tester/requirements.txt mirrors this pin by its own comment, so it
moves with it.
- Remove package pin to allow Playwright >=1.61.
- Adds WebSocket frame timestamps to Juggler events.
- Extends viewport and setViewportSize protocol data with screenSize,
isMobile, and deviceScaleFactor.
- Adds WebP screenshot support, including a default quality of 100.
- Updates the protocol schemas to describe the new fields and screenshot
format.
Playwright 1.61 sends viewport.isMobile in Browser.setDefaultViewport, which
the juggler's protocol schema rejected -- every context creation failed, so
the whole Playwright suite errored out at fixture setup rather than reporting
results. This fixes the schema rather than capping the version.
Cherry-picked from daijro/camoufox#742 (closes#653).
Co-authored-by: LamerLink <36551116+LamerLink@users.noreply.github.com>
Fix for JWriter20 repo having several releases with the same version and build name, which broke the manager
- Installs browsers as version-build-sha256/ rather than version-build/ since assets can share a version-build combo
- Doesn't break existing downloads
- Show date column in gui and selector tui
- `camoufox test` will no longer highlight the cursor by default
- Fixed launch_options blocking async
- WebGL database cleanup & added ability to query all possible vendor/renderer pairs
- Enable bf cache with `enable_cache=True` #74
- Font spacing is now fixed per session #63
- Re-download (or raise error) when target install path is empty. Caused when the user cancels the download.
- Bumped minimum version to beta.15
- Added window: Tuple[int, int] argument to set a fixed width and height #50
- Experimental fix to automatically terminate Xvfb on browser.close() #49
- Bump to 0.3.1
- Python library now constrains the supported Camoufox version, and will force an update if you are out of date.
- Added support patch for multiple accepted languages #37
- Added pysocks #43
- Added README deprecation notices
- Added public launch_options command
- Bumped python library to 0.3.0
- Full support for beta.12
- Warns the user if they try to manually set the geolocation and locale.
- Move manual config documentation to the bottom of the README to discourage use.
- Make the parameters list more obvious.
- Passing in a region like `locale='US'` will generate a language based on the region, "US".
- Passing in a language like `locale='en'` will generate a region based on the language, "en".
- Fix locale parsing errors when generating using territoryInfo.xml #36
- Removed warnings for using headless mode
- Xvfb is now activated with headless='virtual'
- Correctly pass window.screenX & calculate window.screenY
- Update documentation on main README and pythonlib README
- Bumped pythonlib to 0.2.10