Releases: evalops/browser-use-rs
v0.38.2
browser-use-rs v0.38.2
Release Plan
- Bump:
patch - Reason: Release-Impact trailer requested patch
Changes Since v0.38.1
Release Support Matrix
Release Support Matrix
This release targets:
browser-use/browser-use@834269609082d187ca0250de2c06d93799dac92d
Release workflow retriggers should use a conventional commit on a release-covered
path so CI and package publication run from a normal main push.
Supported
- Local Chrome/Chromium launch and CDP attach, including upstream-style
--proxy-serverand--proxy-bypass-listlaunch flags from
BrowserProfile.proxy,BrowserProfile.disable_securityinsecure-content
and certificate flags, andBrowserProfile.deterministic_rendering
screenshot-stability flags, plusBrowserProfile.user_agentto emit typed
--user-agentlaunch flags andBrowserProfile.profile_directoryto emit
persistent-profile--profile-directoryflags alongside--user-data-dir.
BrowserProfile.chromium_sandbox=falseemits upstream no-sandbox/container
Chrome flags for CI and Docker-style launches, and explicit
BrowserProfile.window_sizevalues plus default or explicit
window_positionvalues emit typed--window-sizeand--window-position
launch geometry flags. The default profile emits upstream's
--window-position=0,0origin position.
BrowserProfile.screencan supply the launch window-size fallback, while
BrowserProfile.viewport,no_viewport, anddevice_scale_factorcontrol
CDPEmulation.setDeviceMetricsOverrideon initial attach, new-tab
creation, tab switch, stale-session reattach, and fallback attach after
closing the focused tab.no_viewport=truekeeps launch window sizing but
skips the CDP device-metrics override, and launch planning rejects the
upstream-invalidheadless=trueplusno_viewport=truecombination before
spawning Chrome.
BrowserProfile.highlight_elementsdefaults totrue; indexed click/input
actions and coordinate clicks inject non-fatal temporary browser-side
interaction highlights using upstream-default color and duration settings.
Settinghighlight_elements=falsedisables those markers while preserving
the underlying action behavior.BrowserProfile.dom_highlight_elements
defaults tofalse; when enabled, state capture refreshes a non-fatal debug
overlay for the current selector map and honorsfilter_highlight_ids.
BrowserProfile.keep_alive=truedetaches the locally launched child process
from Rust session ownership so dropping a one-shotCdpBrowserSessionleaves
Chrome running for reuse, while explicitclose_browser()still sends
Browser.closeover CDP. Omitted/null/falsekeep_alivepreserves the
previous owned-child drop behavior. Direct CDP and cloud sessions do not own a
local child process and are unaffected.
BrowserProfile.minimum_wait_page_load_timeand
BrowserProfile.wait_for_network_idle_page_load_timedefault to upstream's
0.25and0.5second settle waits before browser-state capture and after
successful navigation. Setting either value to0opts out of that wait, and
negative or non-finite values are rejected during profile deserialization.
BrowserProfile.devtoolsemits--auto-open-devtools-for-tabsfor headful
launches and rejects the upstream-invalidheadless=trueplus
devtools=truecombination before spawning Chrome.BrowserProfile.env
carries launch-process environment overrides into the local Chrome command;
serde accepts upstream-style string, number, and boolean JSON env values and
coerces them to the process strings Chrome receives. Launch plans include the
frozen upstreamCHROME_DEFAULT_ARGSbaseline,BrowserProfile.ignore_default_args
list/true suppression, upstream-style merged--disable-featuresvalues, and
last-wins switch de-dupe so raw caller args can override typed generated
switches.BrowserProfile.permissionsdefaults to upstream's
clipboardReadWriteandnotificationspermissions, sends root CDP
Browser.grantPermissionsbefore target attach/create for launched and
directly connected sessions, skips empty lists, and records non-fatal
lifecycle diagnostics when Chrome rejects the grant.BrowserProfile.headers
round-trip through serde and are sent on CDP websocket handshakes, including
reconnect attempts, for remote browser/proxy endpoints that require
connection-level authentication.BrowserProfile.channelround-trips
upstream browser channel strings and constrains local executable resolution to
channel-specific candidates when no explicitexecutable_pathor
BROWSER_USE_CHROMEoverride is supplied. Upstreambrowser_binary_path
andchrome_binary_pathaliases deserialize into the same canonical
executable_pathfield. BrowserProfile.record_har_content=embed,record_har_mode=full, and
unsetrecord_har_pathdefaults;save_har_pathdeserializes into canonical
record_har_path. Configured direct-CDP sessions record HTTPS
request/response/loading events into a HAR 1.2 file on best-effort
close_browser()flush, includingfullvsminimalfiltering and
omit/embed/attachbody representation.- Video recording runtime support for
record_video_dirwith upstream
save_recording_pathalias, optionalrecord_video_size, and
record_video_framerate=30. Configured direct-CDP sessions start PNG
screencast capture, acknowledge frames, switch capture on focused-target
changes, and write MP4 by default through a runtimeffmpegencoder during
best-effortclose_browser()flush.record_video_format=webm|gifselects
WebM or the dependency-light GIF path, and MP4/WebM encoder failures record a
browser diagnostic before falling back to GIF. - Trace path configuration parity for
traces_dirwith upstreamtrace_path
alias. At the frozen upstream target, that field is described as a
Playwright trace zip directory but no browser trace watchdog is wired, so the
Rust port exposes an explicit direct-CDP JSON boundary instead of emulating a
Playwrighttrace.zip. Configured direct-CDP sessions write a best-effort
close-time JSON trace artifact with schemabrowser-use-rs.trace.v1, kind
browser-use-rs.cdp_json_trace,runtime="direct_cdp", and
playwright_trace_zip=false. The artifact contains lifecycle events,
security diagnostics, current target ids, and the last cached DOM state.
Trace write failures record a browser diagnostic without failing normal close,
and trace artifact paths/kinds/metadata stay out of normal browser state,
action, and agent replies. - Browser Use Cloud creation and stop request/response contracts, including
BROWSER_USE_API_KEY/explicit-key client support,cloud_auth.json
API-token fallback, 30-second request timeout, extra request headers merged
after default auth/content-type headers, current-session tracking after
create, explicit or current-session stop requests, auth errors,
missing-session errors, action-specific create/stop Cloud error context,
current-session cleanup on successful stop or 404, conversion ofcdpUrl
responses into CDP endpoints, and upstream-compatible omitted/null/country
proxy-country serialization. - Browser profile URL access policies for explicit navigation, including
allowed/prohibited domain patterns, allowed-domain precedence, internal
browser URL allowances, data/blob URL allowances, authentication-bypass
resistance, and optional IP-address blocking that canonicalizes browser-resolvable
decimal, hex, octal, short-form, percent-encoded, Unicode-normalized, and
IDNA-dot IPv4 hosts before classification, plus post-navigation redirect
checks, blocked-navigation preflight diagnostics, navigation-capable
action-boundary checks, newly observed tab closure for disallowed URLs, and
event-driven target/frame navigation watchdog enforcement while a session is
active. CDP sessions expose boundedBrowserLifecycleEventdiagnostics for
browser connect/close, target create/switch/close, navigation start/complete,
navigation failure/timeout, target crash, URL-policy block/reset/popup
outcomes, reconnect, non-fatal browser diagnostics such as permission-grant
failures, JavaScript dialog, sanitized download filenames, and storage-state event shapes.
BrowserProfile.accept_downloadsdefaults totrue; accepted sessions use
an explicitdownloads_pathor a session-owned temporary directory to enable
browser download behavior and CDP download lifecycle events. Upstream
downloads_dirandsave_downloads_pathaliases deserialize into the same
canonicaldownloads_pathfield and serialize back asdownloads_path.
Setting
accept_downloads=falseskips CDP download setup and PDF auto-download
writes even whendownloads_pathis configured. Page-controlled download
filenames from CDP events are reduced to safe basenames and containment
helpers reject paths outside the effective downloads directory model.
BrowserProfile.auto_download_pdfsdefaults totrue; when downloads are
accepted, direct PDF viewer URLs are downloaded once per session into the
effective downloads directory with safe filenames andauto_download=true
lifecycle
metadata. The direct-CDP path usesNetwork.responseReceivedmetadata and
Network.getResponseBodybytes where Chrome exposes them, including
content-disposition filenames, before falling back to conservative direct-URL
downloads. Explicitauto_download_pdfs=falseskips the PDF auto-download
path while preserving normal browser download events.storage_state_path
loads and saves browser cookie plus attached frame-tree origin local/session
storage state with storage lifecycle events.
CDP websocket closure records a browser-stopped lifecycle diagnostic, and
unexpected webs...
v0.38.1
browser-use-rs v0.38.1
Release Plan
- Bump:
patch - Reason: Rust crate fix or internal behavior change
Changes Since v0.38.0
- Cut browser-use-rs v0.38.1 (eb54b92)
- refactor(core): extract prompt image helpers (#186) (4976821)
- chore: enrich upstream drift audit issues (#185) (d23e34f)
Release Support Matrix
Release Support Matrix
This release targets:
browser-use/browser-use@834269609082d187ca0250de2c06d93799dac92d
Release workflow retriggers should use a conventional commit on a release-covered
path so CI and package publication run from a normal main push.
Supported
- Local Chrome/Chromium launch and CDP attach, including upstream-style
--proxy-serverand--proxy-bypass-listlaunch flags from
BrowserProfile.proxy,BrowserProfile.disable_securityinsecure-content
and certificate flags, andBrowserProfile.deterministic_rendering
screenshot-stability flags, plusBrowserProfile.user_agentto emit typed
--user-agentlaunch flags andBrowserProfile.profile_directoryto emit
persistent-profile--profile-directoryflags alongside--user-data-dir.
BrowserProfile.chromium_sandbox=falseemits upstream no-sandbox/container
Chrome flags for CI and Docker-style launches, and explicit
BrowserProfile.window_sizevalues plus default or explicit
window_positionvalues emit typed--window-sizeand--window-position
launch geometry flags. The default profile emits upstream's
--window-position=0,0origin position.
BrowserProfile.screencan supply the launch window-size fallback, while
BrowserProfile.viewport,no_viewport, anddevice_scale_factorcontrol
CDPEmulation.setDeviceMetricsOverrideon initial attach, new-tab
creation, tab switch, stale-session reattach, and fallback attach after
closing the focused tab.no_viewport=truekeeps launch window sizing but
skips the CDP device-metrics override, and launch planning rejects the
upstream-invalidheadless=trueplusno_viewport=truecombination before
spawning Chrome.
BrowserProfile.highlight_elementsdefaults totrue; indexed click/input
actions and coordinate clicks inject non-fatal temporary browser-side
interaction highlights using upstream-default color and duration settings.
Settinghighlight_elements=falsedisables those markers while preserving
the underlying action behavior.BrowserProfile.dom_highlight_elements
defaults tofalse; when enabled, state capture refreshes a non-fatal debug
overlay for the current selector map and honorsfilter_highlight_ids.
BrowserProfile.keep_alive=truedetaches the locally launched child process
from Rust session ownership so dropping a one-shotCdpBrowserSessionleaves
Chrome running for reuse, while explicitclose_browser()still sends
Browser.closeover CDP. Omitted/null/falsekeep_alivepreserves the
previous owned-child drop behavior. Direct CDP and cloud sessions do not own a
local child process and are unaffected.
BrowserProfile.minimum_wait_page_load_timeand
BrowserProfile.wait_for_network_idle_page_load_timedefault to upstream's
0.25and0.5second settle waits before browser-state capture and after
successful navigation. Setting either value to0opts out of that wait, and
negative or non-finite values are rejected during profile deserialization.
BrowserProfile.devtoolsemits--auto-open-devtools-for-tabsfor headful
launches and rejects the upstream-invalidheadless=trueplus
devtools=truecombination before spawning Chrome.BrowserProfile.env
carries launch-process environment overrides into the local Chrome command;
serde accepts upstream-style string, number, and boolean JSON env values and
coerces them to the process strings Chrome receives. Launch plans include the
frozen upstreamCHROME_DEFAULT_ARGSbaseline,BrowserProfile.ignore_default_args
list/true suppression, upstream-style merged--disable-featuresvalues, and
last-wins switch de-dupe so raw caller args can override typed generated
switches.BrowserProfile.permissionsdefaults to upstream's
clipboardReadWriteandnotificationspermissions, sends root CDP
Browser.grantPermissionsbefore target attach/create for launched and
directly connected sessions, skips empty lists, and records non-fatal
lifecycle diagnostics when Chrome rejects the grant.BrowserProfile.headers
round-trip through serde and are sent on CDP websocket handshakes, including
reconnect attempts, for remote browser/proxy endpoints that require
connection-level authentication.BrowserProfile.channelround-trips
upstream browser channel strings and constrains local executable resolution to
channel-specific candidates when no explicitexecutable_pathor
BROWSER_USE_CHROMEoverride is supplied. Upstreambrowser_binary_path
andchrome_binary_pathaliases deserialize into the same canonical
executable_pathfield. BrowserProfile.record_har_content=embed,record_har_mode=full, and
unsetrecord_har_pathdefaults;save_har_pathdeserializes into canonical
record_har_path. Configured direct-CDP sessions record HTTPS
request/response/loading events into a HAR 1.2 file on best-effort
close_browser()flush, includingfullvsminimalfiltering and
omit/embed/attachbody representation.- Video recording runtime support for
record_video_dirwith upstream
save_recording_pathalias, optionalrecord_video_size, and
record_video_framerate=30. Configured direct-CDP sessions start PNG
screencast capture, acknowledge frames, switch capture on focused-target
changes, and write MP4 by default through a runtimeffmpegencoder during
best-effortclose_browser()flush.record_video_format=webm|gifselects
WebM or the dependency-light GIF path, and MP4/WebM encoder failures record a
browser diagnostic before falling back to GIF. - Trace path configuration parity for
traces_dirwith upstreamtrace_path
alias. At the frozen upstream target, that field is described as a
Playwright trace zip directory but no browser trace watchdog is wired, so the
Rust port exposes an explicit direct-CDP JSON boundary instead of emulating a
Playwrighttrace.zip. Configured direct-CDP sessions write a best-effort
close-time JSON trace artifact with schemabrowser-use-rs.trace.v1, kind
browser-use-rs.cdp_json_trace,runtime="direct_cdp", and
playwright_trace_zip=false. The artifact contains lifecycle events,
security diagnostics, current target ids, and the last cached DOM state.
Trace write failures record a browser diagnostic without failing normal close,
and trace artifact paths/kinds/metadata stay out of normal browser state,
action, and agent replies. - Browser Use Cloud creation and stop request/response contracts, including
BROWSER_USE_API_KEY/explicit-key client support,cloud_auth.json
API-token fallback, 30-second request timeout, extra request headers merged
after default auth/content-type headers, current-session tracking after
create, explicit or current-session stop requests, auth errors,
missing-session errors, action-specific create/stop Cloud error context,
current-session cleanup on successful stop or 404, conversion ofcdpUrl
responses into CDP endpoints, and upstream-compatible omitted/null/country
proxy-country serialization. - Browser profile URL access policies for explicit navigation, including
allowed/prohibited domain patterns, allowed-domain precedence, internal
browser URL allowances, data/blob URL allowances, authentication-bypass
resistance, and optional IP-address blocking that canonicalizes browser-resolvable
decimal, hex, octal, short-form, percent-encoded, Unicode-normalized, and
IDNA-dot IPv4 hosts before classification, plus post-navigation redirect
checks, blocked-navigation preflight diagnostics, navigation-capable
action-boundary checks, newly observed tab closure for disallowed URLs, and
event-driven target/frame navigation watchdog enforcement while a session is
active. CDP sessions expose boundedBrowserLifecycleEventdiagnostics for
browser connect/close, target create/switch/close, navigation start/complete,
navigation failure/timeout, target crash, URL-policy block/reset/popup
outcomes, reconnect, non-fatal browser diagnostics such as permission-grant
failures, JavaScript dialog, sanitized download filenames, and storage-state event shapes.
BrowserProfile.accept_downloadsdefaults totrue; accepted sessions use
an explicitdownloads_pathor a session-owned temporary directory to enable
browser download behavior and CDP download lifecycle events. Upstream
downloads_dirandsave_downloads_pathaliases deserialize into the same
canonicaldownloads_pathfield and serialize back asdownloads_path.
Setting
accept_downloads=falseskips CDP download setup and PDF auto-download
writes even whendownloads_pathis configured. Page-controlled download
filenames from CDP events are reduced to safe basenames and containment
helpers reject paths outside the effective downloads directory model.
BrowserProfile.auto_download_pdfsdefaults totrue; when downloads are
accepted, direct PDF viewer URLs are downloaded once per session into the
effective downloads directory with safe filenames andauto_download=true
lifecycle
metadata. The direct-CDP path usesNetwork.responseReceivedmetadata and
Network.getResponseBodybytes where Chrome exposes them, including
content-disposition filenames, before falling back to conservative direct-URL
downloads. Explicitauto_download_pdfs=falseskips the PDF auto-download
path while preserving normal browser download events.storage_state_path
loads and saves browser cookie plus attached frame-tree origin local/session
storage state with storage lifecycle events.
CDP websocket closure r...
v0.38.0
browser-use-rs v0.38.0
Release Plan
- Bump:
minor - Reason: feature commit found: feat: add OpenRouter dynamic usage pricing (#184)
Changes Since v0.37.13
Release Support Matrix
Release Support Matrix
This release targets:
browser-use/browser-use@834269609082d187ca0250de2c06d93799dac92d
Release workflow retriggers should use a conventional commit on a release-covered
path so CI and package publication run from a normal main push.
Supported
- Local Chrome/Chromium launch and CDP attach, including upstream-style
--proxy-serverand--proxy-bypass-listlaunch flags from
BrowserProfile.proxy,BrowserProfile.disable_securityinsecure-content
and certificate flags, andBrowserProfile.deterministic_rendering
screenshot-stability flags, plusBrowserProfile.user_agentto emit typed
--user-agentlaunch flags andBrowserProfile.profile_directoryto emit
persistent-profile--profile-directoryflags alongside--user-data-dir.
BrowserProfile.chromium_sandbox=falseemits upstream no-sandbox/container
Chrome flags for CI and Docker-style launches, and explicit
BrowserProfile.window_sizevalues plus default or explicit
window_positionvalues emit typed--window-sizeand--window-position
launch geometry flags. The default profile emits upstream's
--window-position=0,0origin position.
BrowserProfile.screencan supply the launch window-size fallback, while
BrowserProfile.viewport,no_viewport, anddevice_scale_factorcontrol
CDPEmulation.setDeviceMetricsOverrideon initial attach, new-tab
creation, tab switch, stale-session reattach, and fallback attach after
closing the focused tab.no_viewport=truekeeps launch window sizing but
skips the CDP device-metrics override, and launch planning rejects the
upstream-invalidheadless=trueplusno_viewport=truecombination before
spawning Chrome.
BrowserProfile.highlight_elementsdefaults totrue; indexed click/input
actions and coordinate clicks inject non-fatal temporary browser-side
interaction highlights using upstream-default color and duration settings.
Settinghighlight_elements=falsedisables those markers while preserving
the underlying action behavior.BrowserProfile.dom_highlight_elements
defaults tofalse; when enabled, state capture refreshes a non-fatal debug
overlay for the current selector map and honorsfilter_highlight_ids.
BrowserProfile.keep_alive=truedetaches the locally launched child process
from Rust session ownership so dropping a one-shotCdpBrowserSessionleaves
Chrome running for reuse, while explicitclose_browser()still sends
Browser.closeover CDP. Omitted/null/falsekeep_alivepreserves the
previous owned-child drop behavior. Direct CDP and cloud sessions do not own a
local child process and are unaffected.
BrowserProfile.minimum_wait_page_load_timeand
BrowserProfile.wait_for_network_idle_page_load_timedefault to upstream's
0.25and0.5second settle waits before browser-state capture and after
successful navigation. Setting either value to0opts out of that wait, and
negative or non-finite values are rejected during profile deserialization.
BrowserProfile.devtoolsemits--auto-open-devtools-for-tabsfor headful
launches and rejects the upstream-invalidheadless=trueplus
devtools=truecombination before spawning Chrome.BrowserProfile.env
carries launch-process environment overrides into the local Chrome command;
serde accepts upstream-style string, number, and boolean JSON env values and
coerces them to the process strings Chrome receives. Launch plans include the
frozen upstreamCHROME_DEFAULT_ARGSbaseline,BrowserProfile.ignore_default_args
list/true suppression, upstream-style merged--disable-featuresvalues, and
last-wins switch de-dupe so raw caller args can override typed generated
switches.BrowserProfile.permissionsdefaults to upstream's
clipboardReadWriteandnotificationspermissions, sends root CDP
Browser.grantPermissionsbefore target attach/create for launched and
directly connected sessions, skips empty lists, and records non-fatal
lifecycle diagnostics when Chrome rejects the grant.BrowserProfile.headers
round-trip through serde and are sent on CDP websocket handshakes, including
reconnect attempts, for remote browser/proxy endpoints that require
connection-level authentication.BrowserProfile.channelround-trips
upstream browser channel strings and constrains local executable resolution to
channel-specific candidates when no explicitexecutable_pathor
BROWSER_USE_CHROMEoverride is supplied. Upstreambrowser_binary_path
andchrome_binary_pathaliases deserialize into the same canonical
executable_pathfield. BrowserProfile.record_har_content=embed,record_har_mode=full, and
unsetrecord_har_pathdefaults;save_har_pathdeserializes into canonical
record_har_path. Configured direct-CDP sessions record HTTPS
request/response/loading events into a HAR 1.2 file on best-effort
close_browser()flush, includingfullvsminimalfiltering and
omit/embed/attachbody representation.- Video recording runtime support for
record_video_dirwith upstream
save_recording_pathalias, optionalrecord_video_size, and
record_video_framerate=30. Configured direct-CDP sessions start PNG
screencast capture, acknowledge frames, switch capture on focused-target
changes, and write MP4 by default through a runtimeffmpegencoder during
best-effortclose_browser()flush.record_video_format=webm|gifselects
WebM or the dependency-light GIF path, and MP4/WebM encoder failures record a
browser diagnostic before falling back to GIF. - Trace path configuration parity for
traces_dirwith upstreamtrace_path
alias. At the frozen upstream target, that field is described as a
Playwright trace zip directory but no browser trace watchdog is wired, so the
Rust port exposes an explicit direct-CDP JSON boundary instead of emulating a
Playwrighttrace.zip. Configured direct-CDP sessions write a best-effort
close-time JSON trace artifact with schemabrowser-use-rs.trace.v1, kind
browser-use-rs.cdp_json_trace,runtime="direct_cdp", and
playwright_trace_zip=false. The artifact contains lifecycle events,
security diagnostics, current target ids, and the last cached DOM state.
Trace write failures record a browser diagnostic without failing normal close,
and trace artifact paths/kinds/metadata stay out of normal browser state,
action, and agent replies. - Browser Use Cloud creation and stop request/response contracts, including
BROWSER_USE_API_KEY/explicit-key client support,cloud_auth.json
API-token fallback, 30-second request timeout, extra request headers merged
after default auth/content-type headers, current-session tracking after
create, explicit or current-session stop requests, auth errors,
missing-session errors, action-specific create/stop Cloud error context,
current-session cleanup on successful stop or 404, conversion ofcdpUrl
responses into CDP endpoints, and upstream-compatible omitted/null/country
proxy-country serialization. - Browser profile URL access policies for explicit navigation, including
allowed/prohibited domain patterns, allowed-domain precedence, internal
browser URL allowances, data/blob URL allowances, authentication-bypass
resistance, and optional IP-address blocking that canonicalizes browser-resolvable
decimal, hex, octal, short-form, percent-encoded, Unicode-normalized, and
IDNA-dot IPv4 hosts before classification, plus post-navigation redirect
checks, blocked-navigation preflight diagnostics, navigation-capable
action-boundary checks, newly observed tab closure for disallowed URLs, and
event-driven target/frame navigation watchdog enforcement while a session is
active. CDP sessions expose boundedBrowserLifecycleEventdiagnostics for
browser connect/close, target create/switch/close, navigation start/complete,
navigation failure/timeout, target crash, URL-policy block/reset/popup
outcomes, reconnect, non-fatal browser diagnostics such as permission-grant
failures, JavaScript dialog, sanitized download filenames, and storage-state event shapes.
BrowserProfile.accept_downloadsdefaults totrue; accepted sessions use
an explicitdownloads_pathor a session-owned temporary directory to enable
browser download behavior and CDP download lifecycle events. Upstream
downloads_dirandsave_downloads_pathaliases deserialize into the same
canonicaldownloads_pathfield and serialize back asdownloads_path.
Setting
accept_downloads=falseskips CDP download setup and PDF auto-download
writes even whendownloads_pathis configured. Page-controlled download
filenames from CDP events are reduced to safe basenames and containment
helpers reject paths outside the effective downloads directory model.
BrowserProfile.auto_download_pdfsdefaults totrue; when downloads are
accepted, direct PDF viewer URLs are downloaded once per session into the
effective downloads directory with safe filenames andauto_download=true
lifecycle
metadata. The direct-CDP path usesNetwork.responseReceivedmetadata and
Network.getResponseBodybytes where Chrome exposes them, including
content-disposition filenames, before falling back to conservative direct-URL
downloads. Explicitauto_download_pdfs=falseskips the PDF auto-download
path while preserving normal browser download events.storage_state_path
loads and saves browser cookie plus attached frame-tree origin local/session
storage state with storage lifecycle events.
CDP websocket closure records a browser-stopped lifecycl...
v0.37.13
browser-use-rs v0.37.13
Release Plan
- Bump:
patch - Reason: Rust crate fix or internal behavior change
Changes Since v0.37.12
Release Support Matrix
Release Support Matrix
This release targets:
browser-use/browser-use@834269609082d187ca0250de2c06d93799dac92d
Release workflow retriggers should use a conventional commit on a release-covered
path so CI and package publication run from a normal main push.
Supported
- Local Chrome/Chromium launch and CDP attach, including upstream-style
--proxy-serverand--proxy-bypass-listlaunch flags from
BrowserProfile.proxy,BrowserProfile.disable_securityinsecure-content
and certificate flags, andBrowserProfile.deterministic_rendering
screenshot-stability flags, plusBrowserProfile.user_agentto emit typed
--user-agentlaunch flags andBrowserProfile.profile_directoryto emit
persistent-profile--profile-directoryflags alongside--user-data-dir.
BrowserProfile.chromium_sandbox=falseemits upstream no-sandbox/container
Chrome flags for CI and Docker-style launches, and explicit
BrowserProfile.window_sizevalues plus default or explicit
window_positionvalues emit typed--window-sizeand--window-position
launch geometry flags. The default profile emits upstream's
--window-position=0,0origin position.
BrowserProfile.screencan supply the launch window-size fallback, while
BrowserProfile.viewport,no_viewport, anddevice_scale_factorcontrol
CDPEmulation.setDeviceMetricsOverrideon initial attach, new-tab
creation, tab switch, stale-session reattach, and fallback attach after
closing the focused tab.no_viewport=truekeeps launch window sizing but
skips the CDP device-metrics override, and launch planning rejects the
upstream-invalidheadless=trueplusno_viewport=truecombination before
spawning Chrome.
BrowserProfile.highlight_elementsdefaults totrue; indexed click/input
actions and coordinate clicks inject non-fatal temporary browser-side
interaction highlights using upstream-default color and duration settings.
Settinghighlight_elements=falsedisables those markers while preserving
the underlying action behavior.BrowserProfile.dom_highlight_elements
defaults tofalse; when enabled, state capture refreshes a non-fatal debug
overlay for the current selector map and honorsfilter_highlight_ids.
BrowserProfile.keep_alive=truedetaches the locally launched child process
from Rust session ownership so dropping a one-shotCdpBrowserSessionleaves
Chrome running for reuse, while explicitclose_browser()still sends
Browser.closeover CDP. Omitted/null/falsekeep_alivepreserves the
previous owned-child drop behavior. Direct CDP and cloud sessions do not own a
local child process and are unaffected.
BrowserProfile.minimum_wait_page_load_timeand
BrowserProfile.wait_for_network_idle_page_load_timedefault to upstream's
0.25and0.5second settle waits before browser-state capture and after
successful navigation. Setting either value to0opts out of that wait, and
negative or non-finite values are rejected during profile deserialization.
BrowserProfile.devtoolsemits--auto-open-devtools-for-tabsfor headful
launches and rejects the upstream-invalidheadless=trueplus
devtools=truecombination before spawning Chrome.BrowserProfile.env
carries launch-process environment overrides into the local Chrome command;
serde accepts upstream-style string, number, and boolean JSON env values and
coerces them to the process strings Chrome receives. Launch plans include the
frozen upstreamCHROME_DEFAULT_ARGSbaseline,BrowserProfile.ignore_default_args
list/true suppression, upstream-style merged--disable-featuresvalues, and
last-wins switch de-dupe so raw caller args can override typed generated
switches.BrowserProfile.permissionsdefaults to upstream's
clipboardReadWriteandnotificationspermissions, sends root CDP
Browser.grantPermissionsbefore target attach/create for launched and
directly connected sessions, skips empty lists, and records non-fatal
lifecycle diagnostics when Chrome rejects the grant.BrowserProfile.headers
round-trip through serde and are sent on CDP websocket handshakes, including
reconnect attempts, for remote browser/proxy endpoints that require
connection-level authentication.BrowserProfile.channelround-trips
upstream browser channel strings and constrains local executable resolution to
channel-specific candidates when no explicitexecutable_pathor
BROWSER_USE_CHROMEoverride is supplied. Upstreambrowser_binary_path
andchrome_binary_pathaliases deserialize into the same canonical
executable_pathfield. BrowserProfile.record_har_content=embed,record_har_mode=full, and
unsetrecord_har_pathdefaults;save_har_pathdeserializes into canonical
record_har_path. Configured direct-CDP sessions record HTTPS
request/response/loading events into a HAR 1.2 file on best-effort
close_browser()flush, includingfullvsminimalfiltering and
omit/embed/attachbody representation.- Video recording runtime support for
record_video_dirwith upstream
save_recording_pathalias, optionalrecord_video_size, and
record_video_framerate=30. Configured direct-CDP sessions start PNG
screencast capture, acknowledge frames, switch capture on focused-target
changes, and write MP4 by default through a runtimeffmpegencoder during
best-effortclose_browser()flush.record_video_format=webm|gifselects
WebM or the dependency-light GIF path, and MP4/WebM encoder failures record a
browser diagnostic before falling back to GIF. - Trace path configuration parity for
traces_dirwith upstreamtrace_path
alias. At the frozen upstream target, that field is described as a
Playwright trace zip directory but no browser trace watchdog is wired, so the
Rust port exposes an explicit direct-CDP JSON boundary instead of emulating a
Playwrighttrace.zip. Configured direct-CDP sessions write a best-effort
close-time JSON trace artifact with schemabrowser-use-rs.trace.v1, kind
browser-use-rs.cdp_json_trace,runtime="direct_cdp", and
playwright_trace_zip=false. The artifact contains lifecycle events,
security diagnostics, current target ids, and the last cached DOM state.
Trace write failures record a browser diagnostic without failing normal close,
and trace artifact paths/kinds/metadata stay out of normal browser state,
action, and agent replies. - Browser Use Cloud creation and stop request/response contracts, including
BROWSER_USE_API_KEY/explicit-key client support,cloud_auth.json
API-token fallback, 30-second request timeout, extra request headers merged
after default auth/content-type headers, current-session tracking after
create, explicit or current-session stop requests, auth errors,
missing-session errors, action-specific create/stop Cloud error context,
current-session cleanup on successful stop or 404, conversion ofcdpUrl
responses into CDP endpoints, and upstream-compatible omitted/null/country
proxy-country serialization. - Browser profile URL access policies for explicit navigation, including
allowed/prohibited domain patterns, allowed-domain precedence, internal
browser URL allowances, data/blob URL allowances, authentication-bypass
resistance, and optional IP-address blocking that canonicalizes browser-resolvable
decimal, hex, octal, short-form, percent-encoded, Unicode-normalized, and
IDNA-dot IPv4 hosts before classification, plus post-navigation redirect
checks, blocked-navigation preflight diagnostics, navigation-capable
action-boundary checks, newly observed tab closure for disallowed URLs, and
event-driven target/frame navigation watchdog enforcement while a session is
active. CDP sessions expose boundedBrowserLifecycleEventdiagnostics for
browser connect/close, target create/switch/close, navigation start/complete,
navigation failure/timeout, target crash, URL-policy block/reset/popup
outcomes, reconnect, non-fatal browser diagnostics such as permission-grant
failures, JavaScript dialog, sanitized download filenames, and storage-state event shapes.
BrowserProfile.accept_downloadsdefaults totrue; accepted sessions use
an explicitdownloads_pathor a session-owned temporary directory to enable
browser download behavior and CDP download lifecycle events. Upstream
downloads_dirandsave_downloads_pathaliases deserialize into the same
canonicaldownloads_pathfield and serialize back asdownloads_path.
Setting
accept_downloads=falseskips CDP download setup and PDF auto-download
writes even whendownloads_pathis configured. Page-controlled download
filenames from CDP events are reduced to safe basenames and containment
helpers reject paths outside the effective downloads directory model.
BrowserProfile.auto_download_pdfsdefaults totrue; when downloads are
accepted, direct PDF viewer URLs are downloaded once per session into the
effective downloads directory with safe filenames andauto_download=true
lifecycle
metadata. The direct-CDP path usesNetwork.responseReceivedmetadata and
Network.getResponseBodybytes where Chrome exposes them, including
content-disposition filenames, before falling back to conservative direct-URL
downloads. Explicitauto_download_pdfs=falseskips the PDF auto-download
path while preserving normal browser download events.storage_state_path
loads and saves browser cookie plus attached frame-tree origin local/session
storage state with storage lifecycle events.
CDP websocket closure records a browser-stopped lifecycle diagnostic, and
unexpected...
v0.37.12
browser-use-rs v0.37.12
Release Plan
- Bump:
patch - Reason: Rust crate fix or internal behavior change
Changes Since v0.37.11
Release Support Matrix
Release Support Matrix
This release targets:
browser-use/browser-use@157779338afdcc03023010ec3c24ad63d820453c
Release workflow retriggers should use a conventional commit on a release-covered
path so CI and package publication run from a normal main push.
Supported
- Local Chrome/Chromium launch and CDP attach, including upstream-style
--proxy-serverand--proxy-bypass-listlaunch flags from
BrowserProfile.proxy,BrowserProfile.disable_securityinsecure-content
and certificate flags, andBrowserProfile.deterministic_rendering
screenshot-stability flags, plusBrowserProfile.user_agentto emit typed
--user-agentlaunch flags andBrowserProfile.profile_directoryto emit
persistent-profile--profile-directoryflags alongside--user-data-dir.
BrowserProfile.chromium_sandbox=falseemits upstream no-sandbox/container
Chrome flags for CI and Docker-style launches, and explicit
BrowserProfile.window_sizevalues plus default or explicit
window_positionvalues emit typed--window-sizeand--window-position
launch geometry flags. The default profile emits upstream's
--window-position=0,0origin position.
BrowserProfile.screencan supply the launch window-size fallback, while
BrowserProfile.viewport,no_viewport, anddevice_scale_factorcontrol
CDPEmulation.setDeviceMetricsOverrideon initial attach, new-tab
creation, tab switch, stale-session reattach, and fallback attach after
closing the focused tab.no_viewport=truekeeps launch window sizing but
skips the CDP device-metrics override, and launch planning rejects the
upstream-invalidheadless=trueplusno_viewport=truecombination before
spawning Chrome.
BrowserProfile.highlight_elementsdefaults totrue; indexed click/input
actions and coordinate clicks inject non-fatal temporary browser-side
interaction highlights using upstream-default color and duration settings.
Settinghighlight_elements=falsedisables those markers while preserving
the underlying action behavior.BrowserProfile.dom_highlight_elements
defaults tofalse; when enabled, state capture refreshes a non-fatal debug
overlay for the current selector map and honorsfilter_highlight_ids.
BrowserProfile.keep_alive=truedetaches the locally launched child process
from Rust session ownership so dropping a one-shotCdpBrowserSessionleaves
Chrome running for reuse, while explicitclose_browser()still sends
Browser.closeover CDP. Omitted/null/falsekeep_alivepreserves the
previous owned-child drop behavior. Direct CDP and cloud sessions do not own a
local child process and are unaffected.
BrowserProfile.minimum_wait_page_load_timeand
BrowserProfile.wait_for_network_idle_page_load_timedefault to upstream's
0.25and0.5second settle waits before browser-state capture and after
successful navigation. Setting either value to0opts out of that wait, and
negative or non-finite values are rejected during profile deserialization.
BrowserProfile.devtoolsemits--auto-open-devtools-for-tabsfor headful
launches and rejects the upstream-invalidheadless=trueplus
devtools=truecombination before spawning Chrome.BrowserProfile.env
carries launch-process environment overrides into the local Chrome command;
serde accepts upstream-style string, number, and boolean JSON env values and
coerces them to the process strings Chrome receives. Launch plans include the
frozen upstreamCHROME_DEFAULT_ARGSbaseline,BrowserProfile.ignore_default_args
list/true suppression, upstream-style merged--disable-featuresvalues, and
last-wins switch de-dupe so raw caller args can override typed generated
switches.BrowserProfile.permissionsdefaults to upstream's
clipboardReadWriteandnotificationspermissions, sends root CDP
Browser.grantPermissionsbefore target attach/create for launched and
directly connected sessions, skips empty lists, and records non-fatal
lifecycle diagnostics when Chrome rejects the grant.BrowserProfile.headers
round-trip through serde and are sent on CDP websocket handshakes, including
reconnect attempts, for remote browser/proxy endpoints that require
connection-level authentication.BrowserProfile.channelround-trips
upstream browser channel strings and constrains local executable resolution to
channel-specific candidates when no explicitexecutable_pathor
BROWSER_USE_CHROMEoverride is supplied. Upstreambrowser_binary_path
andchrome_binary_pathaliases deserialize into the same canonical
executable_pathfield. BrowserProfile.record_har_content=embed,record_har_mode=full, and
unsetrecord_har_pathdefaults;save_har_pathdeserializes into canonical
record_har_path. Configured direct-CDP sessions record HTTPS
request/response/loading events into a HAR 1.2 file on best-effort
close_browser()flush, includingfullvsminimalfiltering and
omit/embed/attachbody representation.- Video recording runtime support for
record_video_dirwith upstream
save_recording_pathalias, optionalrecord_video_size, and
record_video_framerate=30. Configured direct-CDP sessions start PNG
screencast capture, acknowledge frames, switch capture on focused-target
changes, and write MP4 by default through a runtimeffmpegencoder during
best-effortclose_browser()flush.record_video_format=webm|gifselects
WebM or the dependency-light GIF path, and MP4/WebM encoder failures record a
browser diagnostic before falling back to GIF. - Trace path configuration parity for
traces_dirwith upstreamtrace_path
alias. At the frozen upstream target, that field is described as a
Playwright trace zip directory but no browser trace watchdog is wired, so the
Rust port exposes an explicit direct-CDP JSON boundary instead of emulating a
Playwrighttrace.zip. Configured direct-CDP sessions write a best-effort
close-time JSON trace artifact with schemabrowser-use-rs.trace.v1, kind
browser-use-rs.cdp_json_trace,runtime="direct_cdp", and
playwright_trace_zip=false. The artifact contains lifecycle events,
security diagnostics, current target ids, and the last cached DOM state.
Trace write failures record a browser diagnostic without failing normal close,
and trace artifact paths/kinds/metadata stay out of normal browser state,
action, and agent replies. - Browser Use Cloud creation and stop request/response contracts, including
BROWSER_USE_API_KEY/explicit-key client support,cloud_auth.json
API-token fallback, 30-second request timeout, extra request headers merged
after default auth/content-type headers, current-session tracking after
create, explicit or current-session stop requests, auth errors,
missing-session errors, action-specific create/stop Cloud error context,
current-session cleanup on successful stop or 404, conversion ofcdpUrl
responses into CDP endpoints, and upstream-compatible omitted/null/country
proxy-country serialization. - Browser profile URL access policies for explicit navigation, including
allowed/prohibited domain patterns, allowed-domain precedence, internal
browser URL allowances, data/blob URL allowances, authentication-bypass
resistance, and optional IP-address blocking that canonicalizes browser-resolvable
decimal, hex, octal, short-form, percent-encoded, Unicode-normalized, and
IDNA-dot IPv4 hosts before classification, plus post-navigation redirect
checks, blocked-navigation preflight diagnostics, navigation-capable
action-boundary checks, newly observed tab closure for disallowed URLs, and
event-driven target/frame navigation watchdog enforcement while a session is
active. CDP sessions expose boundedBrowserLifecycleEventdiagnostics for
browser connect/close, target create/switch/close, navigation start/complete,
navigation failure/timeout, target crash, URL-policy block/reset/popup
outcomes, reconnect, non-fatal browser diagnostics such as permission-grant
failures, JavaScript dialog, sanitized download filenames, and storage-state event shapes.
BrowserProfile.accept_downloadsdefaults totrue; accepted sessions use
an explicitdownloads_pathor a session-owned temporary directory to enable
browser download behavior and CDP download lifecycle events. Upstream
downloads_dirandsave_downloads_pathaliases deserialize into the same
canonicaldownloads_pathfield and serialize back asdownloads_path.
Setting
accept_downloads=falseskips CDP download setup and PDF auto-download
writes even whendownloads_pathis configured. Page-controlled download
filenames from CDP events are reduced to safe basenames and containment
helpers reject paths outside the effective downloads directory model.
BrowserProfile.auto_download_pdfsdefaults totrue; when downloads are
accepted, direct PDF viewer URLs are downloaded once per session into the
effective downloads directory with safe filenames andauto_download=true
lifecycle
metadata. The direct-CDP path usesNetwork.responseReceivedmetadata and
Network.getResponseBodybytes where Chrome exposes them, including
content-disposition filenames, before falling back to conservative direct-URL
downloads. Explicitauto_download_pdfs=falseskips the PDF auto-download
path while preserving normal browser download events.storage_state_path
loads and saves browser cookie plus attached frame-tree origin local/session
storage state with storage lifecycle events.
CDP websocket closure records a browser-stopped lifecycle diagnostic, and
unexpecte...
v0.37.11
browser-use-rs v0.37.11
Release Plan
- Bump:
patch - Reason: explicit release request
Changes Since v0.37.10
- Cut browser-use-rs v0.37.11 (f7562ab)
- refactor(release): document release retrigger path (#180) (a59e59c)
- refactor(release): trigger cleanup release (#179) (0419e68)
- Split agent runtime helpers (#178) (2f337c0)
- Split CDP session helpers (#177) (96ec105)
- Split agent callback controls (#176) (9767f7e)
- Split CLI LLM provider config (#175) (8a9cc7e)
Release Support Matrix
Release Support Matrix
This release targets:
browser-use/browser-use@157779338afdcc03023010ec3c24ad63d820453c
Release workflow retriggers should use a conventional commit on a release-covered
path so CI and package publication run from a normal main push.
Supported
- Local Chrome/Chromium launch and CDP attach, including upstream-style
--proxy-serverand--proxy-bypass-listlaunch flags from
BrowserProfile.proxy,BrowserProfile.disable_securityinsecure-content
and certificate flags, andBrowserProfile.deterministic_rendering
screenshot-stability flags, plusBrowserProfile.user_agentto emit typed
--user-agentlaunch flags andBrowserProfile.profile_directoryto emit
persistent-profile--profile-directoryflags alongside--user-data-dir.
BrowserProfile.chromium_sandbox=falseemits upstream no-sandbox/container
Chrome flags for CI and Docker-style launches, and explicit
BrowserProfile.window_sizevalues plus default or explicit
window_positionvalues emit typed--window-sizeand--window-position
launch geometry flags. The default profile emits upstream's
--window-position=0,0origin position.
BrowserProfile.screencan supply the launch window-size fallback, while
BrowserProfile.viewport,no_viewport, anddevice_scale_factorcontrol
CDPEmulation.setDeviceMetricsOverrideon initial attach, new-tab
creation, tab switch, stale-session reattach, and fallback attach after
closing the focused tab.no_viewport=truekeeps launch window sizing but
skips the CDP device-metrics override, and launch planning rejects the
upstream-invalidheadless=trueplusno_viewport=truecombination before
spawning Chrome.
BrowserProfile.highlight_elementsdefaults totrue; indexed click/input
actions and coordinate clicks inject non-fatal temporary browser-side
interaction highlights using upstream-default color and duration settings.
Settinghighlight_elements=falsedisables those markers while preserving
the underlying action behavior.BrowserProfile.dom_highlight_elements
defaults tofalse; when enabled, state capture refreshes a non-fatal debug
overlay for the current selector map and honorsfilter_highlight_ids.
BrowserProfile.keep_alive=truedetaches the locally launched child process
from Rust session ownership so dropping a one-shotCdpBrowserSessionleaves
Chrome running for reuse, while explicitclose_browser()still sends
Browser.closeover CDP. Omitted/null/falsekeep_alivepreserves the
previous owned-child drop behavior. Direct CDP and cloud sessions do not own a
local child process and are unaffected.
BrowserProfile.minimum_wait_page_load_timeand
BrowserProfile.wait_for_network_idle_page_load_timedefault to upstream's
0.25and0.5second settle waits before browser-state capture and after
successful navigation. Setting either value to0opts out of that wait, and
negative or non-finite values are rejected during profile deserialization.
BrowserProfile.devtoolsemits--auto-open-devtools-for-tabsfor headful
launches and rejects the upstream-invalidheadless=trueplus
devtools=truecombination before spawning Chrome.BrowserProfile.env
carries launch-process environment overrides into the local Chrome command;
serde accepts upstream-style string, number, and boolean JSON env values and
coerces them to the process strings Chrome receives. Launch plans include the
frozen upstreamCHROME_DEFAULT_ARGSbaseline,BrowserProfile.ignore_default_args
list/true suppression, upstream-style merged--disable-featuresvalues, and
last-wins switch de-dupe so raw caller args can override typed generated
switches.BrowserProfile.permissionsdefaults to upstream's
clipboardReadWriteandnotificationspermissions, sends root CDP
Browser.grantPermissionsbefore target attach/create for launched and
directly connected sessions, skips empty lists, and records non-fatal
lifecycle diagnostics when Chrome rejects the grant.BrowserProfile.headers
round-trip through serde and are sent on CDP websocket handshakes, including
reconnect attempts, for remote browser/proxy endpoints that require
connection-level authentication.BrowserProfile.channelround-trips
upstream browser channel strings and constrains local executable resolution to
channel-specific candidates when no explicitexecutable_pathor
BROWSER_USE_CHROMEoverride is supplied. Upstreambrowser_binary_path
andchrome_binary_pathaliases deserialize into the same canonical
executable_pathfield. BrowserProfile.record_har_content=embed,record_har_mode=full, and
unsetrecord_har_pathdefaults;save_har_pathdeserializes into canonical
record_har_path. Configured direct-CDP sessions record HTTPS
request/response/loading events into a HAR 1.2 file on best-effort
close_browser()flush, includingfullvsminimalfiltering and
omit/embed/attachbody representation.- Video recording runtime support for
record_video_dirwith upstream
save_recording_pathalias, optionalrecord_video_size, and
record_video_framerate=30. Configured direct-CDP sessions start PNG
screencast capture, acknowledge frames, switch capture on focused-target
changes, and write MP4 by default through a runtimeffmpegencoder during
best-effortclose_browser()flush.record_video_format=webm|gifselects
WebM or the dependency-light GIF path, and MP4/WebM encoder failures record a
browser diagnostic before falling back to GIF. - Trace path configuration parity for
traces_dirwith upstreamtrace_path
alias. At the frozen upstream target, that field is described as a
Playwright trace zip directory but no browser trace watchdog is wired, so the
Rust port exposes an explicit direct-CDP JSON boundary instead of emulating a
Playwrighttrace.zip. Configured direct-CDP sessions write a best-effort
close-time JSON trace artifact with schemabrowser-use-rs.trace.v1, kind
browser-use-rs.cdp_json_trace,runtime="direct_cdp", and
playwright_trace_zip=false. The artifact contains lifecycle events,
security diagnostics, current target ids, and the last cached DOM state.
Trace write failures record a browser diagnostic without failing normal close,
and trace artifact paths/kinds/metadata stay out of normal browser state,
action, and agent replies. - Browser Use Cloud creation and stop request/response contracts, including
BROWSER_USE_API_KEY/explicit-key client support,cloud_auth.json
API-token fallback, 30-second request timeout, extra request headers merged
after default auth/content-type headers, current-session tracking after
create, explicit or current-session stop requests, auth errors,
missing-session errors, action-specific create/stop Cloud error context,
current-session cleanup on successful stop or 404, conversion ofcdpUrl
responses into CDP endpoints, and upstream-compatible omitted/null/country
proxy-country serialization. - Browser profile URL access policies for explicit navigation, including
allowed/prohibited domain patterns, allowed-domain precedence, internal
browser URL allowances, data/blob URL allowances, authentication-bypass
resistance, and optional IP-address blocking that canonicalizes browser-resolvable
decimal, hex, octal, short-form, percent-encoded, Unicode-normalized, and
IDNA-dot IPv4 hosts before classification, plus post-navigation redirect
checks, blocked-navigation preflight diagnostics, navigation-capable
action-boundary checks, newly observed tab closure for disallowed URLs, and
event-driven target/frame navigation watchdog enforcement while a session is
active. CDP sessions expose boundedBrowserLifecycleEventdiagnostics for
browser connect/close, target create/switch/close, navigation start/complete,
navigation failure/timeout, target crash, URL-policy block/reset/popup
outcomes, reconnect, non-fatal browser diagnostics such as permission-grant
failures, JavaScript dialog, sanitized download filenames, and storage-state event shapes.
BrowserProfile.accept_downloadsdefaults totrue; accepted sessions use
an explicitdownloads_pathor a session-owned temporary directory to enable
browser download behavior and CDP download lifecycle events. Upstream
downloads_dirandsave_downloads_pathaliases deserialize into the same
canonicaldownloads_pathfield and serialize back asdownloads_path.
Setting
accept_downloads=falseskips CDP download setup and PDF auto-download
writes even whendownloads_pathis configured. Page-controlled download
filenames from CDP events are reduced to safe basenames and containment
helpers reject paths outside the effective downloads directory model.
BrowserProfile.auto_download_pdfsdefaults totrue; when downloads are
accepted, direct PDF viewer URLs are downloaded once per session into the
effective downloads directory with safe filenames andauto_download=true
lifecycle
metadata. The direct-CDP path usesNetwork.responseReceivedmetadata and
Network.getResponseBodybytes where Chrome exposes them, including
content-disposition filenames, before falling back to conservative direct-URL
downloads. Explicitauto_download_pdfs=falseskips the PDF auto-download
path while preserving normal browser downloa...
v0.37.10
browser-use-rs v0.37.10
Release Plan
- Bump:
patch - Reason: Rust crate fix or internal behavior change
Changes Since v0.37.9
Release Support Matrix
Release Support Matrix
This release targets:
browser-use/browser-use@157779338afdcc03023010ec3c24ad63d820453c
Supported
- Local Chrome/Chromium launch and CDP attach, including upstream-style
--proxy-serverand--proxy-bypass-listlaunch flags from
BrowserProfile.proxy,BrowserProfile.disable_securityinsecure-content
and certificate flags, andBrowserProfile.deterministic_rendering
screenshot-stability flags, plusBrowserProfile.user_agentto emit typed
--user-agentlaunch flags andBrowserProfile.profile_directoryto emit
persistent-profile--profile-directoryflags alongside--user-data-dir.
BrowserProfile.chromium_sandbox=falseemits upstream no-sandbox/container
Chrome flags for CI and Docker-style launches, and explicit
BrowserProfile.window_sizevalues plus default or explicit
window_positionvalues emit typed--window-sizeand--window-position
launch geometry flags. The default profile emits upstream's
--window-position=0,0origin position.
BrowserProfile.screencan supply the launch window-size fallback, while
BrowserProfile.viewport,no_viewport, anddevice_scale_factorcontrol
CDPEmulation.setDeviceMetricsOverrideon initial attach, new-tab
creation, tab switch, stale-session reattach, and fallback attach after
closing the focused tab.no_viewport=truekeeps launch window sizing but
skips the CDP device-metrics override, and launch planning rejects the
upstream-invalidheadless=trueplusno_viewport=truecombination before
spawning Chrome.
BrowserProfile.highlight_elementsdefaults totrue; indexed click/input
actions and coordinate clicks inject non-fatal temporary browser-side
interaction highlights using upstream-default color and duration settings.
Settinghighlight_elements=falsedisables those markers while preserving
the underlying action behavior.BrowserProfile.dom_highlight_elements
defaults tofalse; when enabled, state capture refreshes a non-fatal debug
overlay for the current selector map and honorsfilter_highlight_ids.
BrowserProfile.keep_alive=truedetaches the locally launched child process
from Rust session ownership so dropping a one-shotCdpBrowserSessionleaves
Chrome running for reuse, while explicitclose_browser()still sends
Browser.closeover CDP. Omitted/null/falsekeep_alivepreserves the
previous owned-child drop behavior. Direct CDP and cloud sessions do not own a
local child process and are unaffected.
BrowserProfile.minimum_wait_page_load_timeand
BrowserProfile.wait_for_network_idle_page_load_timedefault to upstream's
0.25and0.5second settle waits before browser-state capture and after
successful navigation. Setting either value to0opts out of that wait, and
negative or non-finite values are rejected during profile deserialization.
BrowserProfile.devtoolsemits--auto-open-devtools-for-tabsfor headful
launches and rejects the upstream-invalidheadless=trueplus
devtools=truecombination before spawning Chrome.BrowserProfile.env
carries launch-process environment overrides into the local Chrome command;
serde accepts upstream-style string, number, and boolean JSON env values and
coerces them to the process strings Chrome receives. Launch plans include the
frozen upstreamCHROME_DEFAULT_ARGSbaseline,BrowserProfile.ignore_default_args
list/true suppression, upstream-style merged--disable-featuresvalues, and
last-wins switch de-dupe so raw caller args can override typed generated
switches.BrowserProfile.permissionsdefaults to upstream's
clipboardReadWriteandnotificationspermissions, sends root CDP
Browser.grantPermissionsbefore target attach/create for launched and
directly connected sessions, skips empty lists, and records non-fatal
lifecycle diagnostics when Chrome rejects the grant.BrowserProfile.headers
round-trip through serde and are sent on CDP websocket handshakes, including
reconnect attempts, for remote browser/proxy endpoints that require
connection-level authentication.BrowserProfile.channelround-trips
upstream browser channel strings and constrains local executable resolution to
channel-specific candidates when no explicitexecutable_pathor
BROWSER_USE_CHROMEoverride is supplied. Upstreambrowser_binary_path
andchrome_binary_pathaliases deserialize into the same canonical
executable_pathfield. BrowserProfile.record_har_content=embed,record_har_mode=full, and
unsetrecord_har_pathdefaults;save_har_pathdeserializes into canonical
record_har_path. Configured direct-CDP sessions record HTTPS
request/response/loading events into a HAR 1.2 file on best-effort
close_browser()flush, includingfullvsminimalfiltering and
omit/embed/attachbody representation.- Video recording runtime support for
record_video_dirwith upstream
save_recording_pathalias, optionalrecord_video_size, and
record_video_framerate=30. Configured direct-CDP sessions start PNG
screencast capture, acknowledge frames, switch capture on focused-target
changes, and write MP4 by default through a runtimeffmpegencoder during
best-effortclose_browser()flush.record_video_format=webm|gifselects
WebM or the dependency-light GIF path, and MP4/WebM encoder failures record a
browser diagnostic before falling back to GIF. - Trace path configuration parity for
traces_dirwith upstreamtrace_path
alias. At the frozen upstream target, that field is described as a
Playwright trace zip directory but no browser trace watchdog is wired, so the
Rust port exposes an explicit direct-CDP JSON boundary instead of emulating a
Playwrighttrace.zip. Configured direct-CDP sessions write a best-effort
close-time JSON trace artifact with schemabrowser-use-rs.trace.v1, kind
browser-use-rs.cdp_json_trace,runtime="direct_cdp", and
playwright_trace_zip=false. The artifact contains lifecycle events,
security diagnostics, current target ids, and the last cached DOM state.
Trace write failures record a browser diagnostic without failing normal close,
and trace artifact paths/kinds/metadata stay out of normal browser state,
action, and agent replies. - Browser Use Cloud creation and stop request/response contracts, including
BROWSER_USE_API_KEY/explicit-key client support,cloud_auth.json
API-token fallback, 30-second request timeout, extra request headers merged
after default auth/content-type headers, current-session tracking after
create, explicit or current-session stop requests, auth errors,
missing-session errors, action-specific create/stop Cloud error context,
current-session cleanup on successful stop or 404, conversion ofcdpUrl
responses into CDP endpoints, and upstream-compatible omitted/null/country
proxy-country serialization. - Browser profile URL access policies for explicit navigation, including
allowed/prohibited domain patterns, allowed-domain precedence, internal
browser URL allowances, data/blob URL allowances, authentication-bypass
resistance, and optional IP-address blocking that canonicalizes browser-resolvable
decimal, hex, octal, short-form, percent-encoded, Unicode-normalized, and
IDNA-dot IPv4 hosts before classification, plus post-navigation redirect
checks, blocked-navigation preflight diagnostics, navigation-capable
action-boundary checks, newly observed tab closure for disallowed URLs, and
event-driven target/frame navigation watchdog enforcement while a session is
active. CDP sessions expose boundedBrowserLifecycleEventdiagnostics for
browser connect/close, target create/switch/close, navigation start/complete,
navigation failure/timeout, target crash, URL-policy block/reset/popup
outcomes, reconnect, non-fatal browser diagnostics such as permission-grant
failures, JavaScript dialog, sanitized download filenames, and storage-state event shapes.
BrowserProfile.accept_downloadsdefaults totrue; accepted sessions use
an explicitdownloads_pathor a session-owned temporary directory to enable
browser download behavior and CDP download lifecycle events. Upstream
downloads_dirandsave_downloads_pathaliases deserialize into the same
canonicaldownloads_pathfield and serialize back asdownloads_path.
Setting
accept_downloads=falseskips CDP download setup and PDF auto-download
writes even whendownloads_pathis configured. Page-controlled download
filenames from CDP events are reduced to safe basenames and containment
helpers reject paths outside the effective downloads directory model.
BrowserProfile.auto_download_pdfsdefaults totrue; when downloads are
accepted, direct PDF viewer URLs are downloaded once per session into the
effective downloads directory with safe filenames andauto_download=true
lifecycle
metadata. The direct-CDP path usesNetwork.responseReceivedmetadata and
Network.getResponseBodybytes where Chrome exposes them, including
content-disposition filenames, before falling back to conservative direct-URL
downloads. Explicitauto_download_pdfs=falseskips the PDF auto-download
path while preserving normal browser download events.storage_state_path
loads and saves browser cookie plus attached frame-tree origin local/session
storage state with storage lifecycle events.
CDP websocket closure records a browser-stopped lifecycle diagnostic, and
unexpected websocket drops trigger bounded actor-level reconnect attempts
with reconnecting/reconnected/failure lifecycle diagnostics. Registered CDP
t...
v0.37.9
browser-use-rs v0.37.9
Release Plan
- Bump:
patch - Reason: Rust crate fix or internal behavior change
Changes Since v0.37.8
Release Support Matrix
Release Support Matrix
This release targets:
browser-use/browser-use@157779338afdcc03023010ec3c24ad63d820453c
Supported
- Local Chrome/Chromium launch and CDP attach, including upstream-style
--proxy-serverand--proxy-bypass-listlaunch flags from
BrowserProfile.proxy,BrowserProfile.disable_securityinsecure-content
and certificate flags, andBrowserProfile.deterministic_rendering
screenshot-stability flags, plusBrowserProfile.user_agentto emit typed
--user-agentlaunch flags andBrowserProfile.profile_directoryto emit
persistent-profile--profile-directoryflags alongside--user-data-dir.
BrowserProfile.chromium_sandbox=falseemits upstream no-sandbox/container
Chrome flags for CI and Docker-style launches, and explicit
BrowserProfile.window_sizevalues plus default or explicit
window_positionvalues emit typed--window-sizeand--window-position
launch geometry flags. The default profile emits upstream's
--window-position=0,0origin position.
BrowserProfile.screencan supply the launch window-size fallback, while
BrowserProfile.viewport,no_viewport, anddevice_scale_factorcontrol
CDPEmulation.setDeviceMetricsOverrideon initial attach, new-tab
creation, tab switch, stale-session reattach, and fallback attach after
closing the focused tab.no_viewport=truekeeps launch window sizing but
skips the CDP device-metrics override, and launch planning rejects the
upstream-invalidheadless=trueplusno_viewport=truecombination before
spawning Chrome.
BrowserProfile.highlight_elementsdefaults totrue; indexed click/input
actions and coordinate clicks inject non-fatal temporary browser-side
interaction highlights using upstream-default color and duration settings.
Settinghighlight_elements=falsedisables those markers while preserving
the underlying action behavior.BrowserProfile.dom_highlight_elements
defaults tofalse; when enabled, state capture refreshes a non-fatal debug
overlay for the current selector map and honorsfilter_highlight_ids.
BrowserProfile.keep_alive=truedetaches the locally launched child process
from Rust session ownership so dropping a one-shotCdpBrowserSessionleaves
Chrome running for reuse, while explicitclose_browser()still sends
Browser.closeover CDP. Omitted/null/falsekeep_alivepreserves the
previous owned-child drop behavior. Direct CDP and cloud sessions do not own a
local child process and are unaffected.
BrowserProfile.minimum_wait_page_load_timeand
BrowserProfile.wait_for_network_idle_page_load_timedefault to upstream's
0.25and0.5second settle waits before browser-state capture and after
successful navigation. Setting either value to0opts out of that wait, and
negative or non-finite values are rejected during profile deserialization.
BrowserProfile.devtoolsemits--auto-open-devtools-for-tabsfor headful
launches and rejects the upstream-invalidheadless=trueplus
devtools=truecombination before spawning Chrome.BrowserProfile.env
carries launch-process environment overrides into the local Chrome command;
serde accepts upstream-style string, number, and boolean JSON env values and
coerces them to the process strings Chrome receives. Launch plans include the
frozen upstreamCHROME_DEFAULT_ARGSbaseline,BrowserProfile.ignore_default_args
list/true suppression, upstream-style merged--disable-featuresvalues, and
last-wins switch de-dupe so raw caller args can override typed generated
switches.BrowserProfile.permissionsdefaults to upstream's
clipboardReadWriteandnotificationspermissions, sends root CDP
Browser.grantPermissionsbefore target attach/create for launched and
directly connected sessions, skips empty lists, and records non-fatal
lifecycle diagnostics when Chrome rejects the grant.BrowserProfile.headers
round-trip through serde and are sent on CDP websocket handshakes, including
reconnect attempts, for remote browser/proxy endpoints that require
connection-level authentication.BrowserProfile.channelround-trips
upstream browser channel strings and constrains local executable resolution to
channel-specific candidates when no explicitexecutable_pathor
BROWSER_USE_CHROMEoverride is supplied. Upstreambrowser_binary_path
andchrome_binary_pathaliases deserialize into the same canonical
executable_pathfield. BrowserProfile.record_har_content=embed,record_har_mode=full, and
unsetrecord_har_pathdefaults;save_har_pathdeserializes into canonical
record_har_path. Configured direct-CDP sessions record HTTPS
request/response/loading events into a HAR 1.2 file on best-effort
close_browser()flush, includingfullvsminimalfiltering and
omit/embed/attachbody representation.- Video recording runtime support for
record_video_dirwith upstream
save_recording_pathalias, optionalrecord_video_size, and
record_video_framerate=30. Configured direct-CDP sessions start PNG
screencast capture, acknowledge frames, switch capture on focused-target
changes, and write MP4 by default through a runtimeffmpegencoder during
best-effortclose_browser()flush.record_video_format=webm|gifselects
WebM or the dependency-light GIF path, and MP4/WebM encoder failures record a
browser diagnostic before falling back to GIF. - Trace path configuration parity for
traces_dirwith upstreamtrace_path
alias. At the frozen upstream target, that field is described as a
Playwright trace zip directory but no browser trace watchdog is wired, so the
Rust port exposes an explicit direct-CDP JSON boundary instead of emulating a
Playwrighttrace.zip. Configured direct-CDP sessions write a best-effort
close-time JSON trace artifact with schemabrowser-use-rs.trace.v1, kind
browser-use-rs.cdp_json_trace,runtime="direct_cdp", and
playwright_trace_zip=false. The artifact contains lifecycle events,
security diagnostics, current target ids, and the last cached DOM state.
Trace write failures record a browser diagnostic without failing normal close,
and trace artifact paths/kinds/metadata stay out of normal browser state,
action, and agent replies. - Browser Use Cloud creation and stop request/response contracts, including
BROWSER_USE_API_KEY/explicit-key client support,cloud_auth.json
API-token fallback, 30-second request timeout, extra request headers merged
after default auth/content-type headers, current-session tracking after
create, explicit or current-session stop requests, auth errors,
missing-session errors, action-specific create/stop Cloud error context,
current-session cleanup on successful stop or 404, conversion ofcdpUrl
responses into CDP endpoints, and upstream-compatible omitted/null/country
proxy-country serialization. - Browser profile URL access policies for explicit navigation, including
allowed/prohibited domain patterns, allowed-domain precedence, internal
browser URL allowances, data/blob URL allowances, authentication-bypass
resistance, and optional IP-address blocking that canonicalizes browser-resolvable
decimal, hex, octal, short-form, percent-encoded, Unicode-normalized, and
IDNA-dot IPv4 hosts before classification, plus post-navigation redirect
checks, blocked-navigation preflight diagnostics, navigation-capable
action-boundary checks, newly observed tab closure for disallowed URLs, and
event-driven target/frame navigation watchdog enforcement while a session is
active. CDP sessions expose boundedBrowserLifecycleEventdiagnostics for
browser connect/close, target create/switch/close, navigation start/complete,
navigation failure/timeout, target crash, URL-policy block/reset/popup
outcomes, reconnect, non-fatal browser diagnostics such as permission-grant
failures, JavaScript dialog, sanitized download filenames, and storage-state event shapes.
BrowserProfile.accept_downloadsdefaults totrue; accepted sessions use
an explicitdownloads_pathor a session-owned temporary directory to enable
browser download behavior and CDP download lifecycle events. Upstream
downloads_dirandsave_downloads_pathaliases deserialize into the same
canonicaldownloads_pathfield and serialize back asdownloads_path.
Setting
accept_downloads=falseskips CDP download setup and PDF auto-download
writes even whendownloads_pathis configured. Page-controlled download
filenames from CDP events are reduced to safe basenames and containment
helpers reject paths outside the effective downloads directory model.
BrowserProfile.auto_download_pdfsdefaults totrue; when downloads are
accepted, direct PDF viewer URLs are downloaded once per session into the
effective downloads directory with safe filenames andauto_download=true
lifecycle
metadata. The direct-CDP path usesNetwork.responseReceivedmetadata and
Network.getResponseBodybytes where Chrome exposes them, including
content-disposition filenames, before falling back to conservative direct-URL
downloads. Explicitauto_download_pdfs=falseskips the PDF auto-download
path while preserving normal browser download events.storage_state_path
loads and saves browser cookie plus attached frame-tree origin local/session
storage state with storage lifecycle events.
CDP websocket closure records a browser-stopped lifecycle diagnostic, and
unexpected websocket drops trigger bounded actor-level reconnect attempts
with reconnecting/reconnected/failure lifecycle diagnostics. Registered CDP
targ...
v0.37.8
browser-use-rs v0.37.8
Release Plan
- Bump:
patch - Reason: Rust crate fix or internal behavior change
Changes Since v0.37.7
Release Support Matrix
Release Support Matrix
This release targets:
browser-use/browser-use@157779338afdcc03023010ec3c24ad63d820453c
Supported
- Local Chrome/Chromium launch and CDP attach, including upstream-style
--proxy-serverand--proxy-bypass-listlaunch flags from
BrowserProfile.proxy,BrowserProfile.disable_securityinsecure-content
and certificate flags, andBrowserProfile.deterministic_rendering
screenshot-stability flags, plusBrowserProfile.user_agentto emit typed
--user-agentlaunch flags andBrowserProfile.profile_directoryto emit
persistent-profile--profile-directoryflags alongside--user-data-dir.
BrowserProfile.chromium_sandbox=falseemits upstream no-sandbox/container
Chrome flags for CI and Docker-style launches, and explicit
BrowserProfile.window_sizevalues plus default or explicit
window_positionvalues emit typed--window-sizeand--window-position
launch geometry flags. The default profile emits upstream's
--window-position=0,0origin position.
BrowserProfile.screencan supply the launch window-size fallback, while
BrowserProfile.viewport,no_viewport, anddevice_scale_factorcontrol
CDPEmulation.setDeviceMetricsOverrideon initial attach, new-tab
creation, tab switch, stale-session reattach, and fallback attach after
closing the focused tab.no_viewport=truekeeps launch window sizing but
skips the CDP device-metrics override, and launch planning rejects the
upstream-invalidheadless=trueplusno_viewport=truecombination before
spawning Chrome.
BrowserProfile.highlight_elementsdefaults totrue; indexed click/input
actions and coordinate clicks inject non-fatal temporary browser-side
interaction highlights using upstream-default color and duration settings.
Settinghighlight_elements=falsedisables those markers while preserving
the underlying action behavior.BrowserProfile.dom_highlight_elements
defaults tofalse; when enabled, state capture refreshes a non-fatal debug
overlay for the current selector map and honorsfilter_highlight_ids.
BrowserProfile.keep_alive=truedetaches the locally launched child process
from Rust session ownership so dropping a one-shotCdpBrowserSessionleaves
Chrome running for reuse, while explicitclose_browser()still sends
Browser.closeover CDP. Omitted/null/falsekeep_alivepreserves the
previous owned-child drop behavior. Direct CDP and cloud sessions do not own a
local child process and are unaffected.
BrowserProfile.minimum_wait_page_load_timeand
BrowserProfile.wait_for_network_idle_page_load_timedefault to upstream's
0.25and0.5second settle waits before browser-state capture and after
successful navigation. Setting either value to0opts out of that wait, and
negative or non-finite values are rejected during profile deserialization.
BrowserProfile.devtoolsemits--auto-open-devtools-for-tabsfor headful
launches and rejects the upstream-invalidheadless=trueplus
devtools=truecombination before spawning Chrome.BrowserProfile.env
carries launch-process environment overrides into the local Chrome command;
serde accepts upstream-style string, number, and boolean JSON env values and
coerces them to the process strings Chrome receives. Launch plans include the
frozen upstreamCHROME_DEFAULT_ARGSbaseline,BrowserProfile.ignore_default_args
list/true suppression, upstream-style merged--disable-featuresvalues, and
last-wins switch de-dupe so raw caller args can override typed generated
switches.BrowserProfile.permissionsdefaults to upstream's
clipboardReadWriteandnotificationspermissions, sends root CDP
Browser.grantPermissionsbefore target attach/create for launched and
directly connected sessions, skips empty lists, and records non-fatal
lifecycle diagnostics when Chrome rejects the grant.BrowserProfile.headers
round-trip through serde and are sent on CDP websocket handshakes, including
reconnect attempts, for remote browser/proxy endpoints that require
connection-level authentication.BrowserProfile.channelround-trips
upstream browser channel strings and constrains local executable resolution to
channel-specific candidates when no explicitexecutable_pathor
BROWSER_USE_CHROMEoverride is supplied. Upstreambrowser_binary_path
andchrome_binary_pathaliases deserialize into the same canonical
executable_pathfield. BrowserProfile.record_har_content=embed,record_har_mode=full, and
unsetrecord_har_pathdefaults;save_har_pathdeserializes into canonical
record_har_path. Configured direct-CDP sessions record HTTPS
request/response/loading events into a HAR 1.2 file on best-effort
close_browser()flush, includingfullvsminimalfiltering and
omit/embed/attachbody representation.- Video recording runtime support for
record_video_dirwith upstream
save_recording_pathalias, optionalrecord_video_size, and
record_video_framerate=30. Configured direct-CDP sessions start PNG
screencast capture, acknowledge frames, switch capture on focused-target
changes, and write MP4 by default through a runtimeffmpegencoder during
best-effortclose_browser()flush.record_video_format=webm|gifselects
WebM or the dependency-light GIF path, and MP4/WebM encoder failures record a
browser diagnostic before falling back to GIF. - Trace path configuration parity for
traces_dirwith upstreamtrace_path
alias. At the frozen upstream target, that field is described as a
Playwright trace zip directory but no browser trace watchdog is wired, so the
Rust port exposes an explicit direct-CDP JSON boundary instead of emulating a
Playwrighttrace.zip. Configured direct-CDP sessions write a best-effort
close-time JSON trace artifact with schemabrowser-use-rs.trace.v1, kind
browser-use-rs.cdp_json_trace,runtime="direct_cdp", and
playwright_trace_zip=false. The artifact contains lifecycle events,
security diagnostics, current target ids, and the last cached DOM state.
Trace write failures record a browser diagnostic without failing normal close,
and trace artifact paths/kinds/metadata stay out of normal browser state,
action, and agent replies. - Browser Use Cloud creation and stop request/response contracts, including
BROWSER_USE_API_KEY/explicit-key client support,cloud_auth.json
API-token fallback, 30-second request timeout, extra request headers merged
after default auth/content-type headers, current-session tracking after
create, explicit or current-session stop requests, auth errors,
missing-session errors, action-specific create/stop Cloud error context,
current-session cleanup on successful stop or 404, conversion ofcdpUrl
responses into CDP endpoints, and upstream-compatible omitted/null/country
proxy-country serialization. - Browser profile URL access policies for explicit navigation, including
allowed/prohibited domain patterns, allowed-domain precedence, internal
browser URL allowances, data/blob URL allowances, authentication-bypass
resistance, and optional IP-address blocking that canonicalizes browser-resolvable
decimal, hex, octal, short-form, percent-encoded, Unicode-normalized, and
IDNA-dot IPv4 hosts before classification, plus post-navigation redirect
checks, blocked-navigation preflight diagnostics, navigation-capable
action-boundary checks, newly observed tab closure for disallowed URLs, and
event-driven target/frame navigation watchdog enforcement while a session is
active. CDP sessions expose boundedBrowserLifecycleEventdiagnostics for
browser connect/close, target create/switch/close, navigation start/complete,
navigation failure/timeout, target crash, URL-policy block/reset/popup
outcomes, reconnect, non-fatal browser diagnostics such as permission-grant
failures, JavaScript dialog, sanitized download filenames, and storage-state event shapes.
BrowserProfile.accept_downloadsdefaults totrue; accepted sessions use
an explicitdownloads_pathor a session-owned temporary directory to enable
browser download behavior and CDP download lifecycle events. Upstream
downloads_dirandsave_downloads_pathaliases deserialize into the same
canonicaldownloads_pathfield and serialize back asdownloads_path.
Setting
accept_downloads=falseskips CDP download setup and PDF auto-download
writes even whendownloads_pathis configured. Page-controlled download
filenames from CDP events are reduced to safe basenames and containment
helpers reject paths outside the effective downloads directory model.
BrowserProfile.auto_download_pdfsdefaults totrue; when downloads are
accepted, direct PDF viewer URLs are downloaded once per session into the
effective downloads directory with safe filenames andauto_download=true
lifecycle
metadata. The direct-CDP path usesNetwork.responseReceivedmetadata and
Network.getResponseBodybytes where Chrome exposes them, including
content-disposition filenames, before falling back to conservative direct-URL
downloads. Explicitauto_download_pdfs=falseskips the PDF auto-download
path while preserving normal browser download events.storage_state_path
loads and saves browser cookie plus attached frame-tree origin local/session
storage state with storage lifecycle events.
CDP websocket closure records a browser-stopped lifecycle diagnostic, and
unexpected websocket drops trigger bounded actor-level reconnect attempts
with reconnecting/reconnected/failure lifecycle diagnostics. Registered CDP
ta...
v0.37.7
browser-use-rs v0.37.7
Release Plan
- Bump:
patch - Reason: Rust crate fix or internal behavior change
Changes Since v0.37.6
Release Support Matrix
Release Support Matrix
This release targets:
browser-use/browser-use@157779338afdcc03023010ec3c24ad63d820453c
Supported
- Local Chrome/Chromium launch and CDP attach, including upstream-style
--proxy-serverand--proxy-bypass-listlaunch flags from
BrowserProfile.proxy,BrowserProfile.disable_securityinsecure-content
and certificate flags, andBrowserProfile.deterministic_rendering
screenshot-stability flags, plusBrowserProfile.user_agentto emit typed
--user-agentlaunch flags andBrowserProfile.profile_directoryto emit
persistent-profile--profile-directoryflags alongside--user-data-dir.
BrowserProfile.chromium_sandbox=falseemits upstream no-sandbox/container
Chrome flags for CI and Docker-style launches, and explicit
BrowserProfile.window_sizevalues plus default or explicit
window_positionvalues emit typed--window-sizeand--window-position
launch geometry flags. The default profile emits upstream's
--window-position=0,0origin position.
BrowserProfile.screencan supply the launch window-size fallback, while
BrowserProfile.viewport,no_viewport, anddevice_scale_factorcontrol
CDPEmulation.setDeviceMetricsOverrideon initial attach, new-tab
creation, tab switch, stale-session reattach, and fallback attach after
closing the focused tab.no_viewport=truekeeps launch window sizing but
skips the CDP device-metrics override, and launch planning rejects the
upstream-invalidheadless=trueplusno_viewport=truecombination before
spawning Chrome.
BrowserProfile.highlight_elementsdefaults totrue; indexed click/input
actions and coordinate clicks inject non-fatal temporary browser-side
interaction highlights using upstream-default color and duration settings.
Settinghighlight_elements=falsedisables those markers while preserving
the underlying action behavior.BrowserProfile.dom_highlight_elements
defaults tofalse; when enabled, state capture refreshes a non-fatal debug
overlay for the current selector map and honorsfilter_highlight_ids.
BrowserProfile.keep_alive=truedetaches the locally launched child process
from Rust session ownership so dropping a one-shotCdpBrowserSessionleaves
Chrome running for reuse, while explicitclose_browser()still sends
Browser.closeover CDP. Omitted/null/falsekeep_alivepreserves the
previous owned-child drop behavior. Direct CDP and cloud sessions do not own a
local child process and are unaffected.
BrowserProfile.minimum_wait_page_load_timeand
BrowserProfile.wait_for_network_idle_page_load_timedefault to upstream's
0.25and0.5second settle waits before browser-state capture and after
successful navigation. Setting either value to0opts out of that wait, and
negative or non-finite values are rejected during profile deserialization.
BrowserProfile.devtoolsemits--auto-open-devtools-for-tabsfor headful
launches and rejects the upstream-invalidheadless=trueplus
devtools=truecombination before spawning Chrome.BrowserProfile.env
carries launch-process environment overrides into the local Chrome command;
serde accepts upstream-style string, number, and boolean JSON env values and
coerces them to the process strings Chrome receives. Launch plans include the
frozen upstreamCHROME_DEFAULT_ARGSbaseline,BrowserProfile.ignore_default_args
list/true suppression, upstream-style merged--disable-featuresvalues, and
last-wins switch de-dupe so raw caller args can override typed generated
switches.BrowserProfile.permissionsdefaults to upstream's
clipboardReadWriteandnotificationspermissions, sends root CDP
Browser.grantPermissionsbefore target attach/create for launched and
directly connected sessions, skips empty lists, and records non-fatal
lifecycle diagnostics when Chrome rejects the grant.BrowserProfile.headers
round-trip through serde and are sent on CDP websocket handshakes, including
reconnect attempts, for remote browser/proxy endpoints that require
connection-level authentication.BrowserProfile.channelround-trips
upstream browser channel strings and constrains local executable resolution to
channel-specific candidates when no explicitexecutable_pathor
BROWSER_USE_CHROMEoverride is supplied. Upstreambrowser_binary_path
andchrome_binary_pathaliases deserialize into the same canonical
executable_pathfield. BrowserProfile.record_har_content=embed,record_har_mode=full, and
unsetrecord_har_pathdefaults;save_har_pathdeserializes into canonical
record_har_path. Configured direct-CDP sessions record HTTPS
request/response/loading events into a HAR 1.2 file on best-effort
close_browser()flush, includingfullvsminimalfiltering and
omit/embed/attachbody representation.- Video recording runtime support for
record_video_dirwith upstream
save_recording_pathalias, optionalrecord_video_size, and
record_video_framerate=30. Configured direct-CDP sessions start PNG
screencast capture, acknowledge frames, switch capture on focused-target
changes, and write MP4 by default through a runtimeffmpegencoder during
best-effortclose_browser()flush.record_video_format=webm|gifselects
WebM or the dependency-light GIF path, and MP4/WebM encoder failures record a
browser diagnostic before falling back to GIF. - Trace path configuration parity for
traces_dirwith upstreamtrace_path
alias. At the frozen upstream target, that field is described as a
Playwright trace zip directory but no browser trace watchdog is wired, so the
Rust port exposes an explicit direct-CDP JSON boundary instead of emulating a
Playwrighttrace.zip. Configured direct-CDP sessions write a best-effort
close-time JSON trace artifact with schemabrowser-use-rs.trace.v1, kind
browser-use-rs.cdp_json_trace,runtime="direct_cdp", and
playwright_trace_zip=false. The artifact contains lifecycle events,
security diagnostics, current target ids, and the last cached DOM state.
Trace write failures record a browser diagnostic without failing normal close,
and trace artifact paths/kinds/metadata stay out of normal browser state,
action, and agent replies. - Browser Use Cloud creation and stop request/response contracts, including
BROWSER_USE_API_KEY/explicit-key client support,cloud_auth.json
API-token fallback, 30-second request timeout, extra request headers merged
after default auth/content-type headers, current-session tracking after
create, explicit or current-session stop requests, auth errors,
missing-session errors, action-specific create/stop Cloud error context,
current-session cleanup on successful stop or 404, conversion ofcdpUrl
responses into CDP endpoints, and upstream-compatible omitted/null/country
proxy-country serialization. - Browser profile URL access policies for explicit navigation, including
allowed/prohibited domain patterns, allowed-domain precedence, internal
browser URL allowances, data/blob URL allowances, authentication-bypass
resistance, and optional IP-address blocking that canonicalizes browser-resolvable
decimal, hex, octal, short-form, percent-encoded, Unicode-normalized, and
IDNA-dot IPv4 hosts before classification, plus post-navigation redirect
checks, blocked-navigation preflight diagnostics, navigation-capable
action-boundary checks, newly observed tab closure for disallowed URLs, and
event-driven target/frame navigation watchdog enforcement while a session is
active. CDP sessions expose boundedBrowserLifecycleEventdiagnostics for
browser connect/close, target create/switch/close, navigation start/complete,
navigation failure/timeout, target crash, URL-policy block/reset/popup
outcomes, reconnect, non-fatal browser diagnostics such as permission-grant
failures, JavaScript dialog, sanitized download filenames, and storage-state event shapes.
BrowserProfile.accept_downloadsdefaults totrue; accepted sessions use
an explicitdownloads_pathor a session-owned temporary directory to enable
browser download behavior and CDP download lifecycle events. Upstream
downloads_dirandsave_downloads_pathaliases deserialize into the same
canonicaldownloads_pathfield and serialize back asdownloads_path.
Setting
accept_downloads=falseskips CDP download setup and PDF auto-download
writes even whendownloads_pathis configured. Page-controlled download
filenames from CDP events are reduced to safe basenames and containment
helpers reject paths outside the effective downloads directory model.
BrowserProfile.auto_download_pdfsdefaults totrue; when downloads are
accepted, direct PDF viewer URLs are downloaded once per session into the
effective downloads directory with safe filenames andauto_download=true
lifecycle
metadata. The direct-CDP path usesNetwork.responseReceivedmetadata and
Network.getResponseBodybytes where Chrome exposes them, including
content-disposition filenames, before falling back to conservative direct-URL
downloads. Explicitauto_download_pdfs=falseskips the PDF auto-download
path while preserving normal browser download events.storage_state_path
loads and saves browser cookie plus attached frame-tree origin local/session
storage state with storage lifecycle events.
CDP websocket closure records a browser-stopped lifecycle diagnostic, and
unexpected websocket drops trigger bounded actor-level reconnect attempts
with reconnecting/reconnected/failure lifecycle diagnostics. Registered CDP
target ...