NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #1901 most downloaded on PyPI
Devtools Protocol implementation for chrome.
Last release 18 days ago
16 Sep 2026
Release timing varies
gaps range from 1 weeks to 5 months
Most releases are documented
notes for 13 of 21 stable releases
Nothing withdrawn
no release was ever pulled
2 years old
28 releases · first in 2024
One column per month.
Add enable_extensions option to control browser extension loading [ #303 ], with thanks to @hirohira9119 for the contribution!
enable_extensions option to control browser extension loading [#303], with thanks to @hirohira9119 for the contribution!proxy_server browser configuration with a CHOREO_PROXY_SERVER environment fallback [#304], with thanks to @ColumbusLabs for the contribution!Runtime.callFunctionOn commands in chunks when they are too big for Chrome's 100MiB devtools buffer [#306]get_browser_path [#300]Rolls up the changes from the 1.3.0rc0–1.3.0rc2 release candidates.
Rolls up the changes from the 1.3.0rc0–1.3.0rc2 release candidates.
Improve logic around browser search
Improve logic around browser search
Add check for old path of choreographer as well
Add check for old path of choreographer as well
Add timing opts and change download directory
Add timing opts and change download directory
with_perf keyword argument to Session.send_command / Target.send_command to return timing information about browser write/read [#271]force argument so chrome is not re-downloaded if the requested version already exists [#277]get_chrome verbose output print the whole JSON response [#277]Internal improvements for race conditions, errors, packaging
Internal improvements for race conditions, errors, packaging
atexit, so it cannot be started or shut down during atexit, or relied upon at all. The custom threadpool is now used during Browser.open() as well as Browser.close(), since some use patterns invoke open during shutdown [#267]choreo_diagnose [#269]logistro dependencysite directory [#270]See changelog for all changes.
See changelog for all changes.
ThreadPoolExecutor with a manually managed pool so it can be used inside atexit via .close() [#260]logistro to reduce side effectsNothing published for this version
Allow use of any chromium variant
Allow use of any chromium variant
Add additional status-locks to IPC pipe
Add additional status-locks to IPC pipe
is_ready function that checks open/close state [#239]### Fixed - Fix bad module access [#250]
Rolls up the changes from 1.1.0rc0 and 1.1.0rc1.
Rolls up the changes from 1.1.0rc0 and 1.1.0rc1.
Force custom JSON encoder to use the stdlib json package [#249]
json package [#249]Add option to register a custom JSON encoder [#244]
### Fixed - Simple typing fixes [#241]
Serializer now accepts unsigned ints [#232]
Lower default logging verbosity [#228]
Make the default download path public [#227]
Add Browser.is_isolated() returning whether /tmp is sandboxed [#219]
Browser.is_isolated() returning whether /tmp is sandboxed [#219]Fix syntax to make compatible with Python 3.8 [#200]
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →