Skip to content

Releases: evalops/browser-use-rs

v0.38.2

27 May 00:29

Choose a tag to compare

browser-use-rs v0.38.2

Release Plan

  • Bump: patch
  • Reason: Release-Impact trailer requested patch

Changes Since v0.38.1

  • Cut browser-use-rs v0.38.2 (3d84cac)
  • fix(llm): normalize OpenAI strict schemas (#187) (aa779b3)

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-server and --proxy-bypass-list launch flags from
    BrowserProfile.proxy, BrowserProfile.disable_security insecure-content
    and certificate flags, and BrowserProfile.deterministic_rendering
    screenshot-stability flags, plus BrowserProfile.user_agent to emit typed
    --user-agent launch flags and BrowserProfile.profile_directory to emit
    persistent-profile --profile-directory flags alongside --user-data-dir.
    BrowserProfile.chromium_sandbox=false emits upstream no-sandbox/container
    Chrome flags for CI and Docker-style launches, and explicit
    BrowserProfile.window_size values plus default or explicit
    window_position values emit typed --window-size and --window-position
    launch geometry flags. The default profile emits upstream's
    --window-position=0,0 origin position.
    BrowserProfile.screen can supply the launch window-size fallback, while
    BrowserProfile.viewport, no_viewport, and device_scale_factor control
    CDP Emulation.setDeviceMetricsOverride on initial attach, new-tab
    creation, tab switch, stale-session reattach, and fallback attach after
    closing the focused tab. no_viewport=true keeps launch window sizing but
    skips the CDP device-metrics override, and launch planning rejects the
    upstream-invalid headless=true plus no_viewport=true combination before
    spawning Chrome.
    BrowserProfile.highlight_elements defaults to true; indexed click/input
    actions and coordinate clicks inject non-fatal temporary browser-side
    interaction highlights using upstream-default color and duration settings.
    Setting highlight_elements=false disables those markers while preserving
    the underlying action behavior. BrowserProfile.dom_highlight_elements
    defaults to false; when enabled, state capture refreshes a non-fatal debug
    overlay for the current selector map and honors filter_highlight_ids.
    BrowserProfile.keep_alive=true detaches the locally launched child process
    from Rust session ownership so dropping a one-shot CdpBrowserSession leaves
    Chrome running for reuse, while explicit close_browser() still sends
    Browser.close over CDP. Omitted/null/false keep_alive preserves 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_time and
    BrowserProfile.wait_for_network_idle_page_load_time default to upstream's
    0.25 and 0.5 second settle waits before browser-state capture and after
    successful navigation. Setting either value to 0 opts out of that wait, and
    negative or non-finite values are rejected during profile deserialization.
    BrowserProfile.devtools emits --auto-open-devtools-for-tabs for headful
    launches and rejects the upstream-invalid headless=true plus
    devtools=true combination 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 upstream CHROME_DEFAULT_ARGS baseline, BrowserProfile.ignore_default_args
    list/true suppression, upstream-style merged --disable-features values, and
    last-wins switch de-dupe so raw caller args can override typed generated
    switches. BrowserProfile.permissions defaults to upstream's
    clipboardReadWrite and notifications permissions, sends root CDP
    Browser.grantPermissions before 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.channel round-trips
    upstream browser channel strings and constrains local executable resolution to
    channel-specific candidates when no explicit executable_path or
    BROWSER_USE_CHROME override is supplied. Upstream browser_binary_path
    and chrome_binary_path aliases deserialize into the same canonical
    executable_path field.
  • BrowserProfile.record_har_content=embed, record_har_mode=full, and
    unset record_har_path defaults; save_har_path deserializes 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, including full vs minimal filtering and
    omit/embed/attach body representation.
  • Video recording runtime support for record_video_dir with upstream
    save_recording_path alias, optional record_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 runtime ffmpeg encoder during
    best-effort close_browser() flush. record_video_format=webm|gif selects
    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_dir with upstream trace_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
    Playwright trace.zip. Configured direct-CDP sessions write a best-effort
    close-time JSON trace artifact with schema browser-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 of cdpUrl
    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 bounded BrowserLifecycleEvent diagnostics 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_downloads defaults to true; accepted sessions use
    an explicit downloads_path or a session-owned temporary directory to enable
    browser download behavior and CDP download lifecycle events. Upstream
    downloads_dir and save_downloads_path aliases deserialize into the same
    canonical downloads_path field and serialize back as downloads_path.
    Setting
    accept_downloads=false skips CDP download setup and PDF auto-download
    writes even when downloads_path is 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_pdfs defaults to true; when downloads are
    accepted, direct PDF viewer URLs are downloaded once per session into the
    effective downloads directory with safe filenames and auto_download=true
    lifecycle
    metadata. The direct-CDP path uses Network.responseReceived metadata and
    Network.getResponseBody bytes where Chrome exposes them, including
    content-disposition filenames, before falling back to conservative direct-URL
    downloads. Explicit auto_download_pdfs=false skips 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...
Read more

v0.38.1

26 May 22:28

Choose a tag to compare

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-server and --proxy-bypass-list launch flags from
    BrowserProfile.proxy, BrowserProfile.disable_security insecure-content
    and certificate flags, and BrowserProfile.deterministic_rendering
    screenshot-stability flags, plus BrowserProfile.user_agent to emit typed
    --user-agent launch flags and BrowserProfile.profile_directory to emit
    persistent-profile --profile-directory flags alongside --user-data-dir.
    BrowserProfile.chromium_sandbox=false emits upstream no-sandbox/container
    Chrome flags for CI and Docker-style launches, and explicit
    BrowserProfile.window_size values plus default or explicit
    window_position values emit typed --window-size and --window-position
    launch geometry flags. The default profile emits upstream's
    --window-position=0,0 origin position.
    BrowserProfile.screen can supply the launch window-size fallback, while
    BrowserProfile.viewport, no_viewport, and device_scale_factor control
    CDP Emulation.setDeviceMetricsOverride on initial attach, new-tab
    creation, tab switch, stale-session reattach, and fallback attach after
    closing the focused tab. no_viewport=true keeps launch window sizing but
    skips the CDP device-metrics override, and launch planning rejects the
    upstream-invalid headless=true plus no_viewport=true combination before
    spawning Chrome.
    BrowserProfile.highlight_elements defaults to true; indexed click/input
    actions and coordinate clicks inject non-fatal temporary browser-side
    interaction highlights using upstream-default color and duration settings.
    Setting highlight_elements=false disables those markers while preserving
    the underlying action behavior. BrowserProfile.dom_highlight_elements
    defaults to false; when enabled, state capture refreshes a non-fatal debug
    overlay for the current selector map and honors filter_highlight_ids.
    BrowserProfile.keep_alive=true detaches the locally launched child process
    from Rust session ownership so dropping a one-shot CdpBrowserSession leaves
    Chrome running for reuse, while explicit close_browser() still sends
    Browser.close over CDP. Omitted/null/false keep_alive preserves 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_time and
    BrowserProfile.wait_for_network_idle_page_load_time default to upstream's
    0.25 and 0.5 second settle waits before browser-state capture and after
    successful navigation. Setting either value to 0 opts out of that wait, and
    negative or non-finite values are rejected during profile deserialization.
    BrowserProfile.devtools emits --auto-open-devtools-for-tabs for headful
    launches and rejects the upstream-invalid headless=true plus
    devtools=true combination 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 upstream CHROME_DEFAULT_ARGS baseline, BrowserProfile.ignore_default_args
    list/true suppression, upstream-style merged --disable-features values, and
    last-wins switch de-dupe so raw caller args can override typed generated
    switches. BrowserProfile.permissions defaults to upstream's
    clipboardReadWrite and notifications permissions, sends root CDP
    Browser.grantPermissions before 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.channel round-trips
    upstream browser channel strings and constrains local executable resolution to
    channel-specific candidates when no explicit executable_path or
    BROWSER_USE_CHROME override is supplied. Upstream browser_binary_path
    and chrome_binary_path aliases deserialize into the same canonical
    executable_path field.
  • BrowserProfile.record_har_content=embed, record_har_mode=full, and
    unset record_har_path defaults; save_har_path deserializes 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, including full vs minimal filtering and
    omit/embed/attach body representation.
  • Video recording runtime support for record_video_dir with upstream
    save_recording_path alias, optional record_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 runtime ffmpeg encoder during
    best-effort close_browser() flush. record_video_format=webm|gif selects
    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_dir with upstream trace_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
    Playwright trace.zip. Configured direct-CDP sessions write a best-effort
    close-time JSON trace artifact with schema browser-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 of cdpUrl
    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 bounded BrowserLifecycleEvent diagnostics 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_downloads defaults to true; accepted sessions use
    an explicit downloads_path or a session-owned temporary directory to enable
    browser download behavior and CDP download lifecycle events. Upstream
    downloads_dir and save_downloads_path aliases deserialize into the same
    canonical downloads_path field and serialize back as downloads_path.
    Setting
    accept_downloads=false skips CDP download setup and PDF auto-download
    writes even when downloads_path is 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_pdfs defaults to true; when downloads are
    accepted, direct PDF viewer URLs are downloaded once per session into the
    effective downloads directory with safe filenames and auto_download=true
    lifecycle
    metadata. The direct-CDP path uses Network.responseReceived metadata and
    Network.getResponseBody bytes where Chrome exposes them, including
    content-disposition filenames, before falling back to conservative direct-URL
    downloads. Explicit auto_download_pdfs=false skips 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...
Read more

v0.38.0

26 May 22:10

Choose a tag to compare

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

  • Cut browser-use-rs v0.38.0 (f711432)
  • feat: add OpenRouter dynamic usage pricing (#184) (07d9087)

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-server and --proxy-bypass-list launch flags from
    BrowserProfile.proxy, BrowserProfile.disable_security insecure-content
    and certificate flags, and BrowserProfile.deterministic_rendering
    screenshot-stability flags, plus BrowserProfile.user_agent to emit typed
    --user-agent launch flags and BrowserProfile.profile_directory to emit
    persistent-profile --profile-directory flags alongside --user-data-dir.
    BrowserProfile.chromium_sandbox=false emits upstream no-sandbox/container
    Chrome flags for CI and Docker-style launches, and explicit
    BrowserProfile.window_size values plus default or explicit
    window_position values emit typed --window-size and --window-position
    launch geometry flags. The default profile emits upstream's
    --window-position=0,0 origin position.
    BrowserProfile.screen can supply the launch window-size fallback, while
    BrowserProfile.viewport, no_viewport, and device_scale_factor control
    CDP Emulation.setDeviceMetricsOverride on initial attach, new-tab
    creation, tab switch, stale-session reattach, and fallback attach after
    closing the focused tab. no_viewport=true keeps launch window sizing but
    skips the CDP device-metrics override, and launch planning rejects the
    upstream-invalid headless=true plus no_viewport=true combination before
    spawning Chrome.
    BrowserProfile.highlight_elements defaults to true; indexed click/input
    actions and coordinate clicks inject non-fatal temporary browser-side
    interaction highlights using upstream-default color and duration settings.
    Setting highlight_elements=false disables those markers while preserving
    the underlying action behavior. BrowserProfile.dom_highlight_elements
    defaults to false; when enabled, state capture refreshes a non-fatal debug
    overlay for the current selector map and honors filter_highlight_ids.
    BrowserProfile.keep_alive=true detaches the locally launched child process
    from Rust session ownership so dropping a one-shot CdpBrowserSession leaves
    Chrome running for reuse, while explicit close_browser() still sends
    Browser.close over CDP. Omitted/null/false keep_alive preserves 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_time and
    BrowserProfile.wait_for_network_idle_page_load_time default to upstream's
    0.25 and 0.5 second settle waits before browser-state capture and after
    successful navigation. Setting either value to 0 opts out of that wait, and
    negative or non-finite values are rejected during profile deserialization.
    BrowserProfile.devtools emits --auto-open-devtools-for-tabs for headful
    launches and rejects the upstream-invalid headless=true plus
    devtools=true combination 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 upstream CHROME_DEFAULT_ARGS baseline, BrowserProfile.ignore_default_args
    list/true suppression, upstream-style merged --disable-features values, and
    last-wins switch de-dupe so raw caller args can override typed generated
    switches. BrowserProfile.permissions defaults to upstream's
    clipboardReadWrite and notifications permissions, sends root CDP
    Browser.grantPermissions before 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.channel round-trips
    upstream browser channel strings and constrains local executable resolution to
    channel-specific candidates when no explicit executable_path or
    BROWSER_USE_CHROME override is supplied. Upstream browser_binary_path
    and chrome_binary_path aliases deserialize into the same canonical
    executable_path field.
  • BrowserProfile.record_har_content=embed, record_har_mode=full, and
    unset record_har_path defaults; save_har_path deserializes 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, including full vs minimal filtering and
    omit/embed/attach body representation.
  • Video recording runtime support for record_video_dir with upstream
    save_recording_path alias, optional record_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 runtime ffmpeg encoder during
    best-effort close_browser() flush. record_video_format=webm|gif selects
    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_dir with upstream trace_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
    Playwright trace.zip. Configured direct-CDP sessions write a best-effort
    close-time JSON trace artifact with schema browser-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 of cdpUrl
    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 bounded BrowserLifecycleEvent diagnostics 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_downloads defaults to true; accepted sessions use
    an explicit downloads_path or a session-owned temporary directory to enable
    browser download behavior and CDP download lifecycle events. Upstream
    downloads_dir and save_downloads_path aliases deserialize into the same
    canonical downloads_path field and serialize back as downloads_path.
    Setting
    accept_downloads=false skips CDP download setup and PDF auto-download
    writes even when downloads_path is 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_pdfs defaults to true; when downloads are
    accepted, direct PDF viewer URLs are downloaded once per session into the
    effective downloads directory with safe filenames and auto_download=true
    lifecycle
    metadata. The direct-CDP path uses Network.responseReceived metadata and
    Network.getResponseBody bytes where Chrome exposes them, including
    content-disposition filenames, before falling back to conservative direct-URL
    downloads. Explicit auto_download_pdfs=false skips 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...
Read more

v0.37.13

26 May 21:11

Choose a tag to compare

browser-use-rs v0.37.13

Release Plan

  • Bump: patch
  • Reason: Rust crate fix or internal behavior change

Changes Since v0.37.12

  • Cut browser-use-rs v0.37.13 (8caafa5)
  • chore: sync upstream browser-use target (#183) (6f6b175)

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-server and --proxy-bypass-list launch flags from
    BrowserProfile.proxy, BrowserProfile.disable_security insecure-content
    and certificate flags, and BrowserProfile.deterministic_rendering
    screenshot-stability flags, plus BrowserProfile.user_agent to emit typed
    --user-agent launch flags and BrowserProfile.profile_directory to emit
    persistent-profile --profile-directory flags alongside --user-data-dir.
    BrowserProfile.chromium_sandbox=false emits upstream no-sandbox/container
    Chrome flags for CI and Docker-style launches, and explicit
    BrowserProfile.window_size values plus default or explicit
    window_position values emit typed --window-size and --window-position
    launch geometry flags. The default profile emits upstream's
    --window-position=0,0 origin position.
    BrowserProfile.screen can supply the launch window-size fallback, while
    BrowserProfile.viewport, no_viewport, and device_scale_factor control
    CDP Emulation.setDeviceMetricsOverride on initial attach, new-tab
    creation, tab switch, stale-session reattach, and fallback attach after
    closing the focused tab. no_viewport=true keeps launch window sizing but
    skips the CDP device-metrics override, and launch planning rejects the
    upstream-invalid headless=true plus no_viewport=true combination before
    spawning Chrome.
    BrowserProfile.highlight_elements defaults to true; indexed click/input
    actions and coordinate clicks inject non-fatal temporary browser-side
    interaction highlights using upstream-default color and duration settings.
    Setting highlight_elements=false disables those markers while preserving
    the underlying action behavior. BrowserProfile.dom_highlight_elements
    defaults to false; when enabled, state capture refreshes a non-fatal debug
    overlay for the current selector map and honors filter_highlight_ids.
    BrowserProfile.keep_alive=true detaches the locally launched child process
    from Rust session ownership so dropping a one-shot CdpBrowserSession leaves
    Chrome running for reuse, while explicit close_browser() still sends
    Browser.close over CDP. Omitted/null/false keep_alive preserves 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_time and
    BrowserProfile.wait_for_network_idle_page_load_time default to upstream's
    0.25 and 0.5 second settle waits before browser-state capture and after
    successful navigation. Setting either value to 0 opts out of that wait, and
    negative or non-finite values are rejected during profile deserialization.
    BrowserProfile.devtools emits --auto-open-devtools-for-tabs for headful
    launches and rejects the upstream-invalid headless=true plus
    devtools=true combination 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 upstream CHROME_DEFAULT_ARGS baseline, BrowserProfile.ignore_default_args
    list/true suppression, upstream-style merged --disable-features values, and
    last-wins switch de-dupe so raw caller args can override typed generated
    switches. BrowserProfile.permissions defaults to upstream's
    clipboardReadWrite and notifications permissions, sends root CDP
    Browser.grantPermissions before 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.channel round-trips
    upstream browser channel strings and constrains local executable resolution to
    channel-specific candidates when no explicit executable_path or
    BROWSER_USE_CHROME override is supplied. Upstream browser_binary_path
    and chrome_binary_path aliases deserialize into the same canonical
    executable_path field.
  • BrowserProfile.record_har_content=embed, record_har_mode=full, and
    unset record_har_path defaults; save_har_path deserializes 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, including full vs minimal filtering and
    omit/embed/attach body representation.
  • Video recording runtime support for record_video_dir with upstream
    save_recording_path alias, optional record_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 runtime ffmpeg encoder during
    best-effort close_browser() flush. record_video_format=webm|gif selects
    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_dir with upstream trace_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
    Playwright trace.zip. Configured direct-CDP sessions write a best-effort
    close-time JSON trace artifact with schema browser-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 of cdpUrl
    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 bounded BrowserLifecycleEvent diagnostics 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_downloads defaults to true; accepted sessions use
    an explicit downloads_path or a session-owned temporary directory to enable
    browser download behavior and CDP download lifecycle events. Upstream
    downloads_dir and save_downloads_path aliases deserialize into the same
    canonical downloads_path field and serialize back as downloads_path.
    Setting
    accept_downloads=false skips CDP download setup and PDF auto-download
    writes even when downloads_path is 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_pdfs defaults to true; when downloads are
    accepted, direct PDF viewer URLs are downloaded once per session into the
    effective downloads directory with safe filenames and auto_download=true
    lifecycle
    metadata. The direct-CDP path uses Network.responseReceived metadata and
    Network.getResponseBody bytes where Chrome exposes them, including
    content-disposition filenames, before falling back to conservative direct-URL
    downloads. Explicit auto_download_pdfs=false skips 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...
Read more

v0.37.12

26 May 16:55

Choose a tag to compare

browser-use-rs v0.37.12

Release Plan

  • Bump: patch
  • Reason: Rust crate fix or internal behavior change

Changes Since v0.37.11

  • Cut browser-use-rs v0.37.12 (fb762f6)
  • refactor(cdp): split DOM session helpers (#182) (c6e8f11)

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-server and --proxy-bypass-list launch flags from
    BrowserProfile.proxy, BrowserProfile.disable_security insecure-content
    and certificate flags, and BrowserProfile.deterministic_rendering
    screenshot-stability flags, plus BrowserProfile.user_agent to emit typed
    --user-agent launch flags and BrowserProfile.profile_directory to emit
    persistent-profile --profile-directory flags alongside --user-data-dir.
    BrowserProfile.chromium_sandbox=false emits upstream no-sandbox/container
    Chrome flags for CI and Docker-style launches, and explicit
    BrowserProfile.window_size values plus default or explicit
    window_position values emit typed --window-size and --window-position
    launch geometry flags. The default profile emits upstream's
    --window-position=0,0 origin position.
    BrowserProfile.screen can supply the launch window-size fallback, while
    BrowserProfile.viewport, no_viewport, and device_scale_factor control
    CDP Emulation.setDeviceMetricsOverride on initial attach, new-tab
    creation, tab switch, stale-session reattach, and fallback attach after
    closing the focused tab. no_viewport=true keeps launch window sizing but
    skips the CDP device-metrics override, and launch planning rejects the
    upstream-invalid headless=true plus no_viewport=true combination before
    spawning Chrome.
    BrowserProfile.highlight_elements defaults to true; indexed click/input
    actions and coordinate clicks inject non-fatal temporary browser-side
    interaction highlights using upstream-default color and duration settings.
    Setting highlight_elements=false disables those markers while preserving
    the underlying action behavior. BrowserProfile.dom_highlight_elements
    defaults to false; when enabled, state capture refreshes a non-fatal debug
    overlay for the current selector map and honors filter_highlight_ids.
    BrowserProfile.keep_alive=true detaches the locally launched child process
    from Rust session ownership so dropping a one-shot CdpBrowserSession leaves
    Chrome running for reuse, while explicit close_browser() still sends
    Browser.close over CDP. Omitted/null/false keep_alive preserves 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_time and
    BrowserProfile.wait_for_network_idle_page_load_time default to upstream's
    0.25 and 0.5 second settle waits before browser-state capture and after
    successful navigation. Setting either value to 0 opts out of that wait, and
    negative or non-finite values are rejected during profile deserialization.
    BrowserProfile.devtools emits --auto-open-devtools-for-tabs for headful
    launches and rejects the upstream-invalid headless=true plus
    devtools=true combination 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 upstream CHROME_DEFAULT_ARGS baseline, BrowserProfile.ignore_default_args
    list/true suppression, upstream-style merged --disable-features values, and
    last-wins switch de-dupe so raw caller args can override typed generated
    switches. BrowserProfile.permissions defaults to upstream's
    clipboardReadWrite and notifications permissions, sends root CDP
    Browser.grantPermissions before 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.channel round-trips
    upstream browser channel strings and constrains local executable resolution to
    channel-specific candidates when no explicit executable_path or
    BROWSER_USE_CHROME override is supplied. Upstream browser_binary_path
    and chrome_binary_path aliases deserialize into the same canonical
    executable_path field.
  • BrowserProfile.record_har_content=embed, record_har_mode=full, and
    unset record_har_path defaults; save_har_path deserializes 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, including full vs minimal filtering and
    omit/embed/attach body representation.
  • Video recording runtime support for record_video_dir with upstream
    save_recording_path alias, optional record_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 runtime ffmpeg encoder during
    best-effort close_browser() flush. record_video_format=webm|gif selects
    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_dir with upstream trace_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
    Playwright trace.zip. Configured direct-CDP sessions write a best-effort
    close-time JSON trace artifact with schema browser-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 of cdpUrl
    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 bounded BrowserLifecycleEvent diagnostics 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_downloads defaults to true; accepted sessions use
    an explicit downloads_path or a session-owned temporary directory to enable
    browser download behavior and CDP download lifecycle events. Upstream
    downloads_dir and save_downloads_path aliases deserialize into the same
    canonical downloads_path field and serialize back as downloads_path.
    Setting
    accept_downloads=false skips CDP download setup and PDF auto-download
    writes even when downloads_path is 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_pdfs defaults to true; when downloads are
    accepted, direct PDF viewer URLs are downloaded once per session into the
    effective downloads directory with safe filenames and auto_download=true
    lifecycle
    metadata. The direct-CDP path uses Network.responseReceived metadata and
    Network.getResponseBody bytes where Chrome exposes them, including
    content-disposition filenames, before falling back to conservative direct-URL
    downloads. Explicit auto_download_pdfs=false skips 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...
Read more

v0.37.11

26 May 13:54

Choose a tag to compare

browser-use-rs v0.37.11

Release Plan

  • Bump: patch
  • Reason: explicit release request

Changes Since v0.37.10

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-server and --proxy-bypass-list launch flags from
    BrowserProfile.proxy, BrowserProfile.disable_security insecure-content
    and certificate flags, and BrowserProfile.deterministic_rendering
    screenshot-stability flags, plus BrowserProfile.user_agent to emit typed
    --user-agent launch flags and BrowserProfile.profile_directory to emit
    persistent-profile --profile-directory flags alongside --user-data-dir.
    BrowserProfile.chromium_sandbox=false emits upstream no-sandbox/container
    Chrome flags for CI and Docker-style launches, and explicit
    BrowserProfile.window_size values plus default or explicit
    window_position values emit typed --window-size and --window-position
    launch geometry flags. The default profile emits upstream's
    --window-position=0,0 origin position.
    BrowserProfile.screen can supply the launch window-size fallback, while
    BrowserProfile.viewport, no_viewport, and device_scale_factor control
    CDP Emulation.setDeviceMetricsOverride on initial attach, new-tab
    creation, tab switch, stale-session reattach, and fallback attach after
    closing the focused tab. no_viewport=true keeps launch window sizing but
    skips the CDP device-metrics override, and launch planning rejects the
    upstream-invalid headless=true plus no_viewport=true combination before
    spawning Chrome.
    BrowserProfile.highlight_elements defaults to true; indexed click/input
    actions and coordinate clicks inject non-fatal temporary browser-side
    interaction highlights using upstream-default color and duration settings.
    Setting highlight_elements=false disables those markers while preserving
    the underlying action behavior. BrowserProfile.dom_highlight_elements
    defaults to false; when enabled, state capture refreshes a non-fatal debug
    overlay for the current selector map and honors filter_highlight_ids.
    BrowserProfile.keep_alive=true detaches the locally launched child process
    from Rust session ownership so dropping a one-shot CdpBrowserSession leaves
    Chrome running for reuse, while explicit close_browser() still sends
    Browser.close over CDP. Omitted/null/false keep_alive preserves 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_time and
    BrowserProfile.wait_for_network_idle_page_load_time default to upstream's
    0.25 and 0.5 second settle waits before browser-state capture and after
    successful navigation. Setting either value to 0 opts out of that wait, and
    negative or non-finite values are rejected during profile deserialization.
    BrowserProfile.devtools emits --auto-open-devtools-for-tabs for headful
    launches and rejects the upstream-invalid headless=true plus
    devtools=true combination 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 upstream CHROME_DEFAULT_ARGS baseline, BrowserProfile.ignore_default_args
    list/true suppression, upstream-style merged --disable-features values, and
    last-wins switch de-dupe so raw caller args can override typed generated
    switches. BrowserProfile.permissions defaults to upstream's
    clipboardReadWrite and notifications permissions, sends root CDP
    Browser.grantPermissions before 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.channel round-trips
    upstream browser channel strings and constrains local executable resolution to
    channel-specific candidates when no explicit executable_path or
    BROWSER_USE_CHROME override is supplied. Upstream browser_binary_path
    and chrome_binary_path aliases deserialize into the same canonical
    executable_path field.
  • BrowserProfile.record_har_content=embed, record_har_mode=full, and
    unset record_har_path defaults; save_har_path deserializes 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, including full vs minimal filtering and
    omit/embed/attach body representation.
  • Video recording runtime support for record_video_dir with upstream
    save_recording_path alias, optional record_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 runtime ffmpeg encoder during
    best-effort close_browser() flush. record_video_format=webm|gif selects
    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_dir with upstream trace_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
    Playwright trace.zip. Configured direct-CDP sessions write a best-effort
    close-time JSON trace artifact with schema browser-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 of cdpUrl
    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 bounded BrowserLifecycleEvent diagnostics 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_downloads defaults to true; accepted sessions use
    an explicit downloads_path or a session-owned temporary directory to enable
    browser download behavior and CDP download lifecycle events. Upstream
    downloads_dir and save_downloads_path aliases deserialize into the same
    canonical downloads_path field and serialize back as downloads_path.
    Setting
    accept_downloads=false skips CDP download setup and PDF auto-download
    writes even when downloads_path is 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_pdfs defaults to true; when downloads are
    accepted, direct PDF viewer URLs are downloaded once per session into the
    effective downloads directory with safe filenames and auto_download=true
    lifecycle
    metadata. The direct-CDP path uses Network.responseReceived metadata and
    Network.getResponseBody bytes where Chrome exposes them, including
    content-disposition filenames, before falling back to conservative direct-URL
    downloads. Explicit auto_download_pdfs=false skips the PDF auto-download
    path while preserving normal browser downloa...
Read more

v0.37.10

26 May 10:23

Choose a tag to compare

browser-use-rs v0.37.10

Release Plan

  • Bump: patch
  • Reason: Rust crate fix or internal behavior change

Changes Since v0.37.9

  • Cut browser-use-rs v0.37.10 (54148c1)
  • refactor(core): split file system path rules (#174) (5f2f3f7)

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-server and --proxy-bypass-list launch flags from
    BrowserProfile.proxy, BrowserProfile.disable_security insecure-content
    and certificate flags, and BrowserProfile.deterministic_rendering
    screenshot-stability flags, plus BrowserProfile.user_agent to emit typed
    --user-agent launch flags and BrowserProfile.profile_directory to emit
    persistent-profile --profile-directory flags alongside --user-data-dir.
    BrowserProfile.chromium_sandbox=false emits upstream no-sandbox/container
    Chrome flags for CI and Docker-style launches, and explicit
    BrowserProfile.window_size values plus default or explicit
    window_position values emit typed --window-size and --window-position
    launch geometry flags. The default profile emits upstream's
    --window-position=0,0 origin position.
    BrowserProfile.screen can supply the launch window-size fallback, while
    BrowserProfile.viewport, no_viewport, and device_scale_factor control
    CDP Emulation.setDeviceMetricsOverride on initial attach, new-tab
    creation, tab switch, stale-session reattach, and fallback attach after
    closing the focused tab. no_viewport=true keeps launch window sizing but
    skips the CDP device-metrics override, and launch planning rejects the
    upstream-invalid headless=true plus no_viewport=true combination before
    spawning Chrome.
    BrowserProfile.highlight_elements defaults to true; indexed click/input
    actions and coordinate clicks inject non-fatal temporary browser-side
    interaction highlights using upstream-default color and duration settings.
    Setting highlight_elements=false disables those markers while preserving
    the underlying action behavior. BrowserProfile.dom_highlight_elements
    defaults to false; when enabled, state capture refreshes a non-fatal debug
    overlay for the current selector map and honors filter_highlight_ids.
    BrowserProfile.keep_alive=true detaches the locally launched child process
    from Rust session ownership so dropping a one-shot CdpBrowserSession leaves
    Chrome running for reuse, while explicit close_browser() still sends
    Browser.close over CDP. Omitted/null/false keep_alive preserves 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_time and
    BrowserProfile.wait_for_network_idle_page_load_time default to upstream's
    0.25 and 0.5 second settle waits before browser-state capture and after
    successful navigation. Setting either value to 0 opts out of that wait, and
    negative or non-finite values are rejected during profile deserialization.
    BrowserProfile.devtools emits --auto-open-devtools-for-tabs for headful
    launches and rejects the upstream-invalid headless=true plus
    devtools=true combination 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 upstream CHROME_DEFAULT_ARGS baseline, BrowserProfile.ignore_default_args
    list/true suppression, upstream-style merged --disable-features values, and
    last-wins switch de-dupe so raw caller args can override typed generated
    switches. BrowserProfile.permissions defaults to upstream's
    clipboardReadWrite and notifications permissions, sends root CDP
    Browser.grantPermissions before 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.channel round-trips
    upstream browser channel strings and constrains local executable resolution to
    channel-specific candidates when no explicit executable_path or
    BROWSER_USE_CHROME override is supplied. Upstream browser_binary_path
    and chrome_binary_path aliases deserialize into the same canonical
    executable_path field.
  • BrowserProfile.record_har_content=embed, record_har_mode=full, and
    unset record_har_path defaults; save_har_path deserializes 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, including full vs minimal filtering and
    omit/embed/attach body representation.
  • Video recording runtime support for record_video_dir with upstream
    save_recording_path alias, optional record_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 runtime ffmpeg encoder during
    best-effort close_browser() flush. record_video_format=webm|gif selects
    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_dir with upstream trace_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
    Playwright trace.zip. Configured direct-CDP sessions write a best-effort
    close-time JSON trace artifact with schema browser-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 of cdpUrl
    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 bounded BrowserLifecycleEvent diagnostics 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_downloads defaults to true; accepted sessions use
    an explicit downloads_path or a session-owned temporary directory to enable
    browser download behavior and CDP download lifecycle events. Upstream
    downloads_dir and save_downloads_path aliases deserialize into the same
    canonical downloads_path field and serialize back as downloads_path.
    Setting
    accept_downloads=false skips CDP download setup and PDF auto-download
    writes even when downloads_path is 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_pdfs defaults to true; when downloads are
    accepted, direct PDF viewer URLs are downloaded once per session into the
    effective downloads directory with safe filenames and auto_download=true
    lifecycle
    metadata. The direct-CDP path uses Network.responseReceived metadata and
    Network.getResponseBody bytes where Chrome exposes them, including
    content-disposition filenames, before falling back to conservative direct-URL
    downloads. Explicit auto_download_pdfs=false skips 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...
Read more

v0.37.9

26 May 10:14

Choose a tag to compare

browser-use-rs v0.37.9

Release Plan

  • Bump: patch
  • Reason: Rust crate fix or internal behavior change

Changes Since v0.37.8

  • Cut browser-use-rs v0.37.9 (a589331)
  • refactor(cdp): split interactive DOM script (#173) (3984577)

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-server and --proxy-bypass-list launch flags from
    BrowserProfile.proxy, BrowserProfile.disable_security insecure-content
    and certificate flags, and BrowserProfile.deterministic_rendering
    screenshot-stability flags, plus BrowserProfile.user_agent to emit typed
    --user-agent launch flags and BrowserProfile.profile_directory to emit
    persistent-profile --profile-directory flags alongside --user-data-dir.
    BrowserProfile.chromium_sandbox=false emits upstream no-sandbox/container
    Chrome flags for CI and Docker-style launches, and explicit
    BrowserProfile.window_size values plus default or explicit
    window_position values emit typed --window-size and --window-position
    launch geometry flags. The default profile emits upstream's
    --window-position=0,0 origin position.
    BrowserProfile.screen can supply the launch window-size fallback, while
    BrowserProfile.viewport, no_viewport, and device_scale_factor control
    CDP Emulation.setDeviceMetricsOverride on initial attach, new-tab
    creation, tab switch, stale-session reattach, and fallback attach after
    closing the focused tab. no_viewport=true keeps launch window sizing but
    skips the CDP device-metrics override, and launch planning rejects the
    upstream-invalid headless=true plus no_viewport=true combination before
    spawning Chrome.
    BrowserProfile.highlight_elements defaults to true; indexed click/input
    actions and coordinate clicks inject non-fatal temporary browser-side
    interaction highlights using upstream-default color and duration settings.
    Setting highlight_elements=false disables those markers while preserving
    the underlying action behavior. BrowserProfile.dom_highlight_elements
    defaults to false; when enabled, state capture refreshes a non-fatal debug
    overlay for the current selector map and honors filter_highlight_ids.
    BrowserProfile.keep_alive=true detaches the locally launched child process
    from Rust session ownership so dropping a one-shot CdpBrowserSession leaves
    Chrome running for reuse, while explicit close_browser() still sends
    Browser.close over CDP. Omitted/null/false keep_alive preserves 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_time and
    BrowserProfile.wait_for_network_idle_page_load_time default to upstream's
    0.25 and 0.5 second settle waits before browser-state capture and after
    successful navigation. Setting either value to 0 opts out of that wait, and
    negative or non-finite values are rejected during profile deserialization.
    BrowserProfile.devtools emits --auto-open-devtools-for-tabs for headful
    launches and rejects the upstream-invalid headless=true plus
    devtools=true combination 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 upstream CHROME_DEFAULT_ARGS baseline, BrowserProfile.ignore_default_args
    list/true suppression, upstream-style merged --disable-features values, and
    last-wins switch de-dupe so raw caller args can override typed generated
    switches. BrowserProfile.permissions defaults to upstream's
    clipboardReadWrite and notifications permissions, sends root CDP
    Browser.grantPermissions before 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.channel round-trips
    upstream browser channel strings and constrains local executable resolution to
    channel-specific candidates when no explicit executable_path or
    BROWSER_USE_CHROME override is supplied. Upstream browser_binary_path
    and chrome_binary_path aliases deserialize into the same canonical
    executable_path field.
  • BrowserProfile.record_har_content=embed, record_har_mode=full, and
    unset record_har_path defaults; save_har_path deserializes 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, including full vs minimal filtering and
    omit/embed/attach body representation.
  • Video recording runtime support for record_video_dir with upstream
    save_recording_path alias, optional record_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 runtime ffmpeg encoder during
    best-effort close_browser() flush. record_video_format=webm|gif selects
    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_dir with upstream trace_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
    Playwright trace.zip. Configured direct-CDP sessions write a best-effort
    close-time JSON trace artifact with schema browser-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 of cdpUrl
    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 bounded BrowserLifecycleEvent diagnostics 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_downloads defaults to true; accepted sessions use
    an explicit downloads_path or a session-owned temporary directory to enable
    browser download behavior and CDP download lifecycle events. Upstream
    downloads_dir and save_downloads_path aliases deserialize into the same
    canonical downloads_path field and serialize back as downloads_path.
    Setting
    accept_downloads=false skips CDP download setup and PDF auto-download
    writes even when downloads_path is 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_pdfs defaults to true; when downloads are
    accepted, direct PDF viewer URLs are downloaded once per session into the
    effective downloads directory with safe filenames and auto_download=true
    lifecycle
    metadata. The direct-CDP path uses Network.responseReceived metadata and
    Network.getResponseBody bytes where Chrome exposes them, including
    content-disposition filenames, before falling back to conservative direct-URL
    downloads. Explicit auto_download_pdfs=false skips 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...
Read more

v0.37.8

26 May 10:04

Choose a tag to compare

browser-use-rs v0.37.8

Release Plan

  • Bump: patch
  • Reason: Rust crate fix or internal behavior change

Changes Since v0.37.7

  • Cut browser-use-rs v0.37.8 (69a7eee)
  • refactor(core): split executor helper modules (#172) (2119556)

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-server and --proxy-bypass-list launch flags from
    BrowserProfile.proxy, BrowserProfile.disable_security insecure-content
    and certificate flags, and BrowserProfile.deterministic_rendering
    screenshot-stability flags, plus BrowserProfile.user_agent to emit typed
    --user-agent launch flags and BrowserProfile.profile_directory to emit
    persistent-profile --profile-directory flags alongside --user-data-dir.
    BrowserProfile.chromium_sandbox=false emits upstream no-sandbox/container
    Chrome flags for CI and Docker-style launches, and explicit
    BrowserProfile.window_size values plus default or explicit
    window_position values emit typed --window-size and --window-position
    launch geometry flags. The default profile emits upstream's
    --window-position=0,0 origin position.
    BrowserProfile.screen can supply the launch window-size fallback, while
    BrowserProfile.viewport, no_viewport, and device_scale_factor control
    CDP Emulation.setDeviceMetricsOverride on initial attach, new-tab
    creation, tab switch, stale-session reattach, and fallback attach after
    closing the focused tab. no_viewport=true keeps launch window sizing but
    skips the CDP device-metrics override, and launch planning rejects the
    upstream-invalid headless=true plus no_viewport=true combination before
    spawning Chrome.
    BrowserProfile.highlight_elements defaults to true; indexed click/input
    actions and coordinate clicks inject non-fatal temporary browser-side
    interaction highlights using upstream-default color and duration settings.
    Setting highlight_elements=false disables those markers while preserving
    the underlying action behavior. BrowserProfile.dom_highlight_elements
    defaults to false; when enabled, state capture refreshes a non-fatal debug
    overlay for the current selector map and honors filter_highlight_ids.
    BrowserProfile.keep_alive=true detaches the locally launched child process
    from Rust session ownership so dropping a one-shot CdpBrowserSession leaves
    Chrome running for reuse, while explicit close_browser() still sends
    Browser.close over CDP. Omitted/null/false keep_alive preserves 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_time and
    BrowserProfile.wait_for_network_idle_page_load_time default to upstream's
    0.25 and 0.5 second settle waits before browser-state capture and after
    successful navigation. Setting either value to 0 opts out of that wait, and
    negative or non-finite values are rejected during profile deserialization.
    BrowserProfile.devtools emits --auto-open-devtools-for-tabs for headful
    launches and rejects the upstream-invalid headless=true plus
    devtools=true combination 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 upstream CHROME_DEFAULT_ARGS baseline, BrowserProfile.ignore_default_args
    list/true suppression, upstream-style merged --disable-features values, and
    last-wins switch de-dupe so raw caller args can override typed generated
    switches. BrowserProfile.permissions defaults to upstream's
    clipboardReadWrite and notifications permissions, sends root CDP
    Browser.grantPermissions before 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.channel round-trips
    upstream browser channel strings and constrains local executable resolution to
    channel-specific candidates when no explicit executable_path or
    BROWSER_USE_CHROME override is supplied. Upstream browser_binary_path
    and chrome_binary_path aliases deserialize into the same canonical
    executable_path field.
  • BrowserProfile.record_har_content=embed, record_har_mode=full, and
    unset record_har_path defaults; save_har_path deserializes 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, including full vs minimal filtering and
    omit/embed/attach body representation.
  • Video recording runtime support for record_video_dir with upstream
    save_recording_path alias, optional record_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 runtime ffmpeg encoder during
    best-effort close_browser() flush. record_video_format=webm|gif selects
    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_dir with upstream trace_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
    Playwright trace.zip. Configured direct-CDP sessions write a best-effort
    close-time JSON trace artifact with schema browser-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 of cdpUrl
    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 bounded BrowserLifecycleEvent diagnostics 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_downloads defaults to true; accepted sessions use
    an explicit downloads_path or a session-owned temporary directory to enable
    browser download behavior and CDP download lifecycle events. Upstream
    downloads_dir and save_downloads_path aliases deserialize into the same
    canonical downloads_path field and serialize back as downloads_path.
    Setting
    accept_downloads=false skips CDP download setup and PDF auto-download
    writes even when downloads_path is 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_pdfs defaults to true; when downloads are
    accepted, direct PDF viewer URLs are downloaded once per session into the
    effective downloads directory with safe filenames and auto_download=true
    lifecycle
    metadata. The direct-CDP path uses Network.responseReceived metadata and
    Network.getResponseBody bytes where Chrome exposes them, including
    content-disposition filenames, before falling back to conservative direct-URL
    downloads. Explicit auto_download_pdfs=false skips 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...
Read more

v0.37.7

26 May 09:28

Choose a tag to compare

browser-use-rs v0.37.7

Release Plan

  • Bump: patch
  • Reason: Rust crate fix or internal behavior change

Changes Since v0.37.6

  • Cut browser-use-rs v0.37.7 (2e76836)
  • refactor(core): split agent public types (#171) (39d5f48)

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-server and --proxy-bypass-list launch flags from
    BrowserProfile.proxy, BrowserProfile.disable_security insecure-content
    and certificate flags, and BrowserProfile.deterministic_rendering
    screenshot-stability flags, plus BrowserProfile.user_agent to emit typed
    --user-agent launch flags and BrowserProfile.profile_directory to emit
    persistent-profile --profile-directory flags alongside --user-data-dir.
    BrowserProfile.chromium_sandbox=false emits upstream no-sandbox/container
    Chrome flags for CI and Docker-style launches, and explicit
    BrowserProfile.window_size values plus default or explicit
    window_position values emit typed --window-size and --window-position
    launch geometry flags. The default profile emits upstream's
    --window-position=0,0 origin position.
    BrowserProfile.screen can supply the launch window-size fallback, while
    BrowserProfile.viewport, no_viewport, and device_scale_factor control
    CDP Emulation.setDeviceMetricsOverride on initial attach, new-tab
    creation, tab switch, stale-session reattach, and fallback attach after
    closing the focused tab. no_viewport=true keeps launch window sizing but
    skips the CDP device-metrics override, and launch planning rejects the
    upstream-invalid headless=true plus no_viewport=true combination before
    spawning Chrome.
    BrowserProfile.highlight_elements defaults to true; indexed click/input
    actions and coordinate clicks inject non-fatal temporary browser-side
    interaction highlights using upstream-default color and duration settings.
    Setting highlight_elements=false disables those markers while preserving
    the underlying action behavior. BrowserProfile.dom_highlight_elements
    defaults to false; when enabled, state capture refreshes a non-fatal debug
    overlay for the current selector map and honors filter_highlight_ids.
    BrowserProfile.keep_alive=true detaches the locally launched child process
    from Rust session ownership so dropping a one-shot CdpBrowserSession leaves
    Chrome running for reuse, while explicit close_browser() still sends
    Browser.close over CDP. Omitted/null/false keep_alive preserves 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_time and
    BrowserProfile.wait_for_network_idle_page_load_time default to upstream's
    0.25 and 0.5 second settle waits before browser-state capture and after
    successful navigation. Setting either value to 0 opts out of that wait, and
    negative or non-finite values are rejected during profile deserialization.
    BrowserProfile.devtools emits --auto-open-devtools-for-tabs for headful
    launches and rejects the upstream-invalid headless=true plus
    devtools=true combination 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 upstream CHROME_DEFAULT_ARGS baseline, BrowserProfile.ignore_default_args
    list/true suppression, upstream-style merged --disable-features values, and
    last-wins switch de-dupe so raw caller args can override typed generated
    switches. BrowserProfile.permissions defaults to upstream's
    clipboardReadWrite and notifications permissions, sends root CDP
    Browser.grantPermissions before 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.channel round-trips
    upstream browser channel strings and constrains local executable resolution to
    channel-specific candidates when no explicit executable_path or
    BROWSER_USE_CHROME override is supplied. Upstream browser_binary_path
    and chrome_binary_path aliases deserialize into the same canonical
    executable_path field.
  • BrowserProfile.record_har_content=embed, record_har_mode=full, and
    unset record_har_path defaults; save_har_path deserializes 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, including full vs minimal filtering and
    omit/embed/attach body representation.
  • Video recording runtime support for record_video_dir with upstream
    save_recording_path alias, optional record_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 runtime ffmpeg encoder during
    best-effort close_browser() flush. record_video_format=webm|gif selects
    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_dir with upstream trace_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
    Playwright trace.zip. Configured direct-CDP sessions write a best-effort
    close-time JSON trace artifact with schema browser-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 of cdpUrl
    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 bounded BrowserLifecycleEvent diagnostics 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_downloads defaults to true; accepted sessions use
    an explicit downloads_path or a session-owned temporary directory to enable
    browser download behavior and CDP download lifecycle events. Upstream
    downloads_dir and save_downloads_path aliases deserialize into the same
    canonical downloads_path field and serialize back as downloads_path.
    Setting
    accept_downloads=false skips CDP download setup and PDF auto-download
    writes even when downloads_path is 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_pdfs defaults to true; when downloads are
    accepted, direct PDF viewer URLs are downloaded once per session into the
    effective downloads directory with safe filenames and auto_download=true
    lifecycle
    metadata. The direct-CDP path uses Network.responseReceived metadata and
    Network.getResponseBody bytes where Chrome exposes them, including
    content-disposition filenames, before falling back to conservative direct-URL
    downloads. Explicit auto_download_pdfs=false skips 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 ...
Read more