Skip to content

Conversation

@zealoushacker
Copy link
Contributor

@zealoushacker zealoushacker commented Nov 24, 2025

Description

Adds zoom tool for Opus 4.5

Quickstart

  • Computer Use Demo
  • Customer Support Agent
  • Financial Data Analyst
  • N/A

Type of Change

  • Bug fix
  • New feature
  • Documentation update
  • Code refactoring
  • Other (please describe):

Testing

  • Added/updated unit tests
  • Tested manually
  • Verified in development environment

Screenshots

Additional Notes

zealoushacker and others added 30 commits September 18, 2025 16:01
Implements a dedicated browser tool for web automation tasks as an
alternative to full computer use. The browser tool provides specialized
actions for navigating, clicking, typing, and scrolling in Firefox.

Key features:
- New BrowserTool20250910 with browser-specific actions
- Auto-launch Firefox if not running
- Graceful browser close functionality
- Model mapping for bobcat models to use browser mode
- Browser-specific system prompt and UI updates

Changes:
- Add computer_use_demo/tools/browser.py with full browser automation
- Add browser_use_20250910 tool version to groups.py
- Map bobcat-latest/bobcat-v17-prod to browser mode in streamlit.py
- Add BROWSER_SYSTEM_PROMPT for browser-specific instructions
- Fix session state handling and base64 encoding issues
- Add comprehensive browser tool tests

Original implementation by benkomalo, sagnik, and brigit

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
- Fix session state initialization for tool_versions to prevent AttributeError
- Improve browser window detection using xdotool instead of process check
- Add window focus activation to ensure browser is ready for commands
- Add polling mechanism to wait for Firefox window (up to 15s)
- Add dynamic page title based on tool mode (browser vs computer use)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
Create dedicated quickstart for Browser Use API demonstration using Playwright
with Chromium. Runs fully containerized for security and isolation.

- Separate quickstart focused solely on browser automation (split from computer-use-demo)
- Container-based Playwright Chrome browser for secure execution
- Streamlit UI with inline action display showing tool usage
- Support for Claude 4+ models with browser_use capability
- Port 8080 for main UI, 6080 for NoVNC browser view

Based on initial implementation by @bassil

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
Browser functionality has been moved to its own dedicated quickstart (browser-use-demo).
This keeps computer-use-demo focused solely on computer use capabilities.
Remove README_LOCAL.md, run_local.py, and setup.py as these were for
local browser mode which has been moved to browser-use-demo
Add browser-use-demo quickstart
- Set default resolution to 1920x1080 for better modern web compatibility
- Add environment-based configuration via .env file for all settings
- Remove bind mounts in favor of Docker watch for better security
- Add validation script to ensure proper configuration at startup
- Create docker-compose.yml for easier deployment
- Update documentation with new setup instructions

The container now fails fast with helpful error messages if not properly
configured, and uses Docker's watch feature for development instead of
bind mounts to prevent container from modifying host files.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
Changes:
- Renamed directory from browser-use-demo to browser-tools-api-demo
- Updated Python module from browser_use_demo to browser_tools_api_demo
- Changed container user from browseruse to browsertoolsapi
- Updated all references in documentation, Docker configs, and code
- Removed docker run instructions in favor of docker-compose
- Updated window titles and demo names throughout

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
Rename browser-use-demo to browser-tools-api-demo
updated readme with additional instructions
Doc explaining difference between browser tools api & computer use
- Change API header from browser-use-2025-09-10 to browser-tools-2025-09-10
- Rename constant BROWSER_USE_BETA_FLAG to BROWSER_TOOLS_BETA_FLAG

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
Added the Browser Tools API Demo quickstart to the main README with the same format as existing demos. This provides a complete reference implementation for browser automation using Claude's browser tools API.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
When docker-compose stops and restarts the container, Xvfb lock files
persist, causing the startup script to incorrectly assume Xvfb is running.
This leads to tint2 failing with "could not open display!" error.

The fix enhances xvfb_startup.sh to:
- Check if the display is actually accessible (not just if lock exists)
- Clean up stale lock files and sockets when display is inaccessible
- Start Xvfb fresh when needed

This makes the container startup idempotent and resolves the restart issue.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
Add Browser Tools API Demo to documentation, fix xvfb bug, and update beta flag
Fixed typos & added safety considerations section
Add safety section, made browser name consistent "browser tool API" and cleaned up typos
Changed "browser tool" --> "browser tools"
"Browser tool" --> "Browser tools"
Small edits to security considerations
brigitanthropic and others added 14 commits September 23, 2025 17:17
Small changes to safety section
…tion-guide

Brigit/browser tool implementation guide
Add required attribution for Microsoft Playwright components used in the browser-tools-api-demo:
- Add NOTICE file with Playwright attribution
- Add modification headers to files derived from Playwright source (browser_dom_script.js, browser_element_script.js, browser.py)
- Update README with reference to NOTICE file

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
- Create CHANGELOG.md to track modification dates and details centrally
- Update file headers to reference CHANGELOG.md instead of inline dates
- Update NOTICE to reference CHANGELOG.md

This allows easier maintenance of modification history going forward.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
Add requirement to track copyright notice modifications in CHANGELOG.md files.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
Previously, when issuing follow-up instructions, the browser would restart
from the beginning instead of continuing from the current state. Additionally,
clicks were sometimes missing their targets due to viewport sizing issues.

Issues fixed:
1. Message history not being preserved - streamlit was stripping out the
   full conversation context when preparing API messages
2. Event loop incompatibility - using asyncio.run() for each turn created
   a new event loop, breaking Playwright's browser instance
3. Browser window/viewport sizing causing click coordinate misalignment

Changes:
- Preserve full message history in streamlit.py to maintain conversation context
- Implement persistent event loop to keep browser instance alive across turns
- Integrate screenshots with user messages to show current browser state
- Enable screenshot filtering (keep 3 most recent) to manage context size
- Remove event loop reset logic in browser.py that was causing browser restarts
- Fix browser window sizing and viewport configuration for accurate click targeting
- Add helpful debug logging for browser state tracking

The browser now successfully maintains state across multiple requests,
continues from where it left off, and clicks work reliably.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
Fix browser clicks and state continuity
- Add EditTool20250728 with text_editor_20250728 API type and str_replace_based_edit_tool name
- Update computer_use_20250124 to use EditTool20250728 instead of EditTool20250124
- Add CLAUDE_4_5 model configuration using computer_use_20250124 tool version
- Update model mapping to use CLAUDE_4_5 for claude-sonnet-4-5-20250929
- Set claude-sonnet-4-5-20250929 as the default model

This resolves the "does not support tool types: text_editor_20250124" error
by using the official tool types supported by the model: bash_20250124,
computer_20250124, text_editor_20250728.

Uses official computer_use_20250124 tool version instead of inventing a new one.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
Updates the default model reference from claude-sonnet-4-20250514 to
claude-sonnet-4-5-20250929 in the README note section.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
…patibility

Add Claude 4.5 Sonnet support and update default model
This overhauls a bunch of things, including:
 - adds the new `computer_use_20251124` variant, with the zoom action
 - removes a bunch of older models that are deprecated
 - adds a bunch of newer models that were missing
 - replaces the buggy text editor 0429 with the correct 0728 version
Resolved conflicts in:
- computer-use-demo/README.md: Updated model descriptions to include Haiku 4.5
- computer-use-demo/streamlit.py: Merged model configs and mappings, keeping both CLAUDE_4_5 and CLAUDE_4_WITH_ZOOMABLE_TOOL
- computer-use-demo/tools/__init__.py: Added EditTool20250429 import
- computer-use-demo/tools/groups.py: Merged imports to include both ComputerTool20251124 and EditTool20250429

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
@zealoushacker zealoushacker enabled auto-merge (squash) November 24, 2025 18:55
@zealoushacker zealoushacker merged commit 5a3c6f8 into main Nov 24, 2025
1 of 5 checks passed
@zealoushacker zealoushacker deleted the benkomalo/add-zoom branch November 24, 2025 18:58
zealoushacker added a commit that referenced this pull request Nov 24, 2025
The browser-tools-api-demo was accidentally included in PR #309 which
was meant to only add zoom tool support. This commit removes the
browser-tools-api-demo directory and its reference from the README.

The browser-tools-api-demo will be submitted in a separate PR.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
zealoushacker added a commit that referenced this pull request Nov 24, 2025
The browser-tools-api-demo was accidentally included in PR #309 which
was meant to only add zoom tool support. This commit removes the
browser-tools-api-demo directory and its reference from the README.

The browser-tools-api-demo will be submitted in a separate PR.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude <[email protected]>
SIRMARGIN pushed a commit to SIRMARGIN/claude-quickstarts that referenced this pull request Nov 28, 2025
* Add browser automation tool from anthropics/anthropic#148306

Implements a dedicated browser tool for web automation tasks as an
alternative to full computer use. The browser tool provides specialized
actions for navigating, clicking, typing, and scrolling in Firefox.

Key features:
- New BrowserTool20250910 with browser-specific actions
- Auto-launch Firefox if not running
- Graceful browser close functionality
- Model mapping for bobcat models to use browser mode
- Browser-specific system prompt and UI updates

Changes:
- Add computer_use_demo/tools/browser.py with full browser automation
- Add browser_use_20250910 tool version to groups.py
- Map bobcat-latest/bobcat-v17-prod to browser mode in streamlit.py
- Add BROWSER_SYSTEM_PROMPT for browser-specific instructions
- Fix session state handling and base64 encoding issues
- Add comprehensive browser tool tests

Original implementation by benkomalo, sagnik, and brigit

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>

* Fix browser tool initialization and improve startup reliability

- Fix session state initialization for tool_versions to prevent AttributeError
- Improve browser window detection using xdotool instead of process check
- Add window focus activation to ensure browser is ready for commands
- Add polling mechanism to wait for Firefox window (up to 15s)
- Add dynamic page title based on tool mode (browser vs computer use)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>

* save but screenshot too big

* before going for everything

* actual multi-session

* everything works

* refactor

* Add browser-use-demo quickstart for Browser Use API

Create dedicated quickstart for Browser Use API demonstration using Playwright
with Chromium. Runs fully containerized for security and isolation.

- Separate quickstart focused solely on browser automation (split from computer-use-demo)
- Container-based Playwright Chrome browser for secure execution
- Streamlit UI with inline action display showing tool usage
- Support for Claude 4+ models with browser_use capability
- Port 8080 for main UI, 6080 for NoVNC browser view

Based on initial implementation by @bassil

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>

* Update model name from bobcat to claude-boucle-eap

* Remove browser functionality from computer-use-demo

Browser functionality has been moved to its own dedicated quickstart (browser-use-demo).
This keeps computer-use-demo focused solely on computer use capabilities.

* Remove remaining browser-related files from computer-use-demo

Remove README_LOCAL.md, run_local.py, and setup.py as these were for
local browser mode which has been moved to browser-use-demo

* Improve browser resolution configuration and security

- Set default resolution to 1920x1080 for better modern web compatibility
- Add environment-based configuration via .env file for all settings
- Remove bind mounts in favor of Docker watch for better security
- Add validation script to ensure proper configuration at startup
- Create docker-compose.yml for easier deployment
- Update documentation with new setup instructions

The container now fails fast with helpful error messages if not properly
configured, and uses Docker's watch feature for development instead of
bind mounts to prevent container from modifying host files.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>

* Rename browser-use-demo to browser-tools-api-demo

Changes:
- Renamed directory from browser-use-demo to browser-tools-api-demo
- Updated Python module from browser_use_demo to browser_tools_api_demo
- Changed container user from browseruse to browsertoolsapi
- Updated all references in documentation, Docker configs, and code
- Removed docker run instructions in favor of docker-compose
- Updated window titles and demo names throughout

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>

* Change default model to claude-boucle-eap in browser-tools-api-demo

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>

* Update README.md

updated readme with additional instructions

* Create browser-tools-api.md

Doc explaining difference between browser tools api & computer use

* Rename browser-tools-api.md to browser_tools_api.md

renaming

* Update browser API beta flag from browser-use to browser-tools

- Change API header from browser-use-2025-09-10 to browser-tools-2025-09-10
- Rename constant BROWSER_USE_BETA_FLAG to BROWSER_TOOLS_BETA_FLAG

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>

* Add Browser Tools API Demo to root README

Added the Browser Tools API Demo quickstart to the main README with the same format as existing demos. This provides a complete reference implementation for browser automation using Claude's browser tools API.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>

* Fix Xvfb startup issue with stale lock files in browser-tools-api-demo

When docker-compose stops and restarts the container, Xvfb lock files
persist, causing the startup script to incorrectly assume Xvfb is running.
This leads to tint2 failing with "could not open display!" error.

The fix enhances xvfb_startup.sh to:
- Check if the display is actually accessible (not just if lock exists)
- Clean up stale lock files and sockets when display is inaccessible
- Start Xvfb fresh when needed

This makes the container startup idempotent and resolves the restart issue.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>

* Update browser_tools_api.md

Fixed typos & added safety considerations section

* Update README.md

Add safety section, made browser name consistent "browser tool API" and cleaned up typos

* Update browser_tools_api.md

Changed "browser tool" --> "browser tools"

* Update README.md

"Browser tool" --> "Browser tools"

* Update README.md

Small edits to security considerations

* Update browser_tools_api.md

Small changes to safety section

* Update README.md

typo fix

* Add Playwright attribution and legal notices

Add required attribution for Microsoft Playwright components used in the browser-tools-api-demo:
- Add NOTICE file with Playwright attribution
- Add modification headers to files derived from Playwright source (browser_dom_script.js, browser_element_script.js, browser.py)
- Update README with reference to NOTICE file

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>

* Add CHANGELOG.md and update attribution headers

- Create CHANGELOG.md to track modification dates and details centrally
- Update file headers to reference CHANGELOG.md instead of inline dates
- Update NOTICE to reference CHANGELOG.md

This allows easier maintenance of modification history going forward.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>

* Add legal guidance to CLAUDE.md

Add requirement to track copyright notice modifications in CHANGELOG.md files.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>

* Fix browser state continuity and click targeting

Previously, when issuing follow-up instructions, the browser would restart
from the beginning instead of continuing from the current state. Additionally,
clicks were sometimes missing their targets due to viewport sizing issues.

Issues fixed:
1. Message history not being preserved - streamlit was stripping out the
   full conversation context when preparing API messages
2. Event loop incompatibility - using asyncio.run() for each turn created
   a new event loop, breaking Playwright's browser instance
3. Browser window/viewport sizing causing click coordinate misalignment

Changes:
- Preserve full message history in streamlit.py to maintain conversation context
- Implement persistent event loop to keep browser instance alive across turns
- Integrate screenshots with user messages to show current browser state
- Enable screenshot filtering (keep 3 most recent) to manage context size
- Remove event loop reset logic in browser.py that was causing browser restarts
- Fix browser window sizing and viewport configuration for accurate click targeting
- Add helpful debug logging for browser state tracking

The browser now successfully maintains state across multiple requests,
continues from where it left off, and clicks work reliably.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>

* Fix claude-sonnet-4-5-20250929 tool compatibility

- Add EditTool20250728 with text_editor_20250728 API type and str_replace_based_edit_tool name
- Update computer_use_20250124 to use EditTool20250728 instead of EditTool20250124
- Add CLAUDE_4_5 model configuration using computer_use_20250124 tool version
- Update model mapping to use CLAUDE_4_5 for claude-sonnet-4-5-20250929
- Set claude-sonnet-4-5-20250929 as the default model

This resolves the "does not support tool types: text_editor_20250124" error
by using the official tool types supported by the model: bash_20250124,
computer_20250124, text_editor_20250728.

Uses official computer_use_20250124 tool version instead of inventing a new one.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>

* Update README to reflect Claude 4.5 Sonnet as default model

Updates the default model reference from claude-sonnet-4-20250514 to
claude-sonnet-4-5-20250929 in the README note section.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>

* remove unused import

* Add support for a new zoom action in computer_use_20251124

This overhauls a bunch of things, including:
 - adds the new `computer_use_20251124` variant, with the zoom action
 - removes a bunch of older models that are deprecated
 - adds a bunch of newer models that were missing
 - replaces the buggy text editor 0429 with the correct 0728 version

---------

Co-authored-by: Claude <[email protected]>
Co-authored-by: Bassil Shama <[email protected]>
Co-authored-by: brigitanthropic <[email protected]>
Co-authored-by: Alex Paris <[email protected]>
Co-authored-by: Ben Komalo <[email protected]>
SIRMARGIN pushed a commit to SIRMARGIN/claude-quickstarts that referenced this pull request Nov 28, 2025
…s#310)

The browser-tools-api-demo was accidentally included in PR anthropics#309 which
was meant to only add zoom tool support. This commit removes the
browser-tools-api-demo directory and its reference from the README.

The browser-tools-api-demo will be submitted in a separate PR.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude <[email protected]>
winwintangelo pushed a commit to winwintangelo/claude-quickstarts that referenced this pull request Nov 29, 2025
* Add browser automation tool from anthropics/anthropic#148306

Implements a dedicated browser tool for web automation tasks as an
alternative to full computer use. The browser tool provides specialized
actions for navigating, clicking, typing, and scrolling in Firefox.

Key features:
- New BrowserTool20250910 with browser-specific actions
- Auto-launch Firefox if not running
- Graceful browser close functionality
- Model mapping for bobcat models to use browser mode
- Browser-specific system prompt and UI updates

Changes:
- Add computer_use_demo/tools/browser.py with full browser automation
- Add browser_use_20250910 tool version to groups.py
- Map bobcat-latest/bobcat-v17-prod to browser mode in streamlit.py
- Add BROWSER_SYSTEM_PROMPT for browser-specific instructions
- Fix session state handling and base64 encoding issues
- Add comprehensive browser tool tests

Original implementation by benkomalo, sagnik, and brigit

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>

* Fix browser tool initialization and improve startup reliability

- Fix session state initialization for tool_versions to prevent AttributeError
- Improve browser window detection using xdotool instead of process check
- Add window focus activation to ensure browser is ready for commands
- Add polling mechanism to wait for Firefox window (up to 15s)
- Add dynamic page title based on tool mode (browser vs computer use)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>

* save but screenshot too big

* before going for everything

* actual multi-session

* everything works

* refactor

* Add browser-use-demo quickstart for Browser Use API

Create dedicated quickstart for Browser Use API demonstration using Playwright
with Chromium. Runs fully containerized for security and isolation.

- Separate quickstart focused solely on browser automation (split from computer-use-demo)
- Container-based Playwright Chrome browser for secure execution
- Streamlit UI with inline action display showing tool usage
- Support for Claude 4+ models with browser_use capability
- Port 8080 for main UI, 6080 for NoVNC browser view

Based on initial implementation by @bassil

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>

* Update model name from bobcat to claude-boucle-eap

* Remove browser functionality from computer-use-demo

Browser functionality has been moved to its own dedicated quickstart (browser-use-demo).
This keeps computer-use-demo focused solely on computer use capabilities.

* Remove remaining browser-related files from computer-use-demo

Remove README_LOCAL.md, run_local.py, and setup.py as these were for
local browser mode which has been moved to browser-use-demo

* Improve browser resolution configuration and security

- Set default resolution to 1920x1080 for better modern web compatibility
- Add environment-based configuration via .env file for all settings
- Remove bind mounts in favor of Docker watch for better security
- Add validation script to ensure proper configuration at startup
- Create docker-compose.yml for easier deployment
- Update documentation with new setup instructions

The container now fails fast with helpful error messages if not properly
configured, and uses Docker's watch feature for development instead of
bind mounts to prevent container from modifying host files.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>

* Rename browser-use-demo to browser-tools-api-demo

Changes:
- Renamed directory from browser-use-demo to browser-tools-api-demo
- Updated Python module from browser_use_demo to browser_tools_api_demo
- Changed container user from browseruse to browsertoolsapi
- Updated all references in documentation, Docker configs, and code
- Removed docker run instructions in favor of docker-compose
- Updated window titles and demo names throughout

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>

* Change default model to claude-boucle-eap in browser-tools-api-demo

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>

* Update README.md

updated readme with additional instructions

* Create browser-tools-api.md

Doc explaining difference between browser tools api & computer use

* Rename browser-tools-api.md to browser_tools_api.md

renaming

* Update browser API beta flag from browser-use to browser-tools

- Change API header from browser-use-2025-09-10 to browser-tools-2025-09-10
- Rename constant BROWSER_USE_BETA_FLAG to BROWSER_TOOLS_BETA_FLAG

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>

* Add Browser Tools API Demo to root README

Added the Browser Tools API Demo quickstart to the main README with the same format as existing demos. This provides a complete reference implementation for browser automation using Claude's browser tools API.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>

* Fix Xvfb startup issue with stale lock files in browser-tools-api-demo

When docker-compose stops and restarts the container, Xvfb lock files
persist, causing the startup script to incorrectly assume Xvfb is running.
This leads to tint2 failing with "could not open display!" error.

The fix enhances xvfb_startup.sh to:
- Check if the display is actually accessible (not just if lock exists)
- Clean up stale lock files and sockets when display is inaccessible
- Start Xvfb fresh when needed

This makes the container startup idempotent and resolves the restart issue.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>

* Update browser_tools_api.md

Fixed typos & added safety considerations section

* Update README.md

Add safety section, made browser name consistent "browser tool API" and cleaned up typos

* Update browser_tools_api.md

Changed "browser tool" --> "browser tools"

* Update README.md

"Browser tool" --> "Browser tools"

* Update README.md

Small edits to security considerations

* Update browser_tools_api.md

Small changes to safety section

* Update README.md

typo fix

* Add Playwright attribution and legal notices

Add required attribution for Microsoft Playwright components used in the browser-tools-api-demo:
- Add NOTICE file with Playwright attribution
- Add modification headers to files derived from Playwright source (browser_dom_script.js, browser_element_script.js, browser.py)
- Update README with reference to NOTICE file

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>

* Add CHANGELOG.md and update attribution headers

- Create CHANGELOG.md to track modification dates and details centrally
- Update file headers to reference CHANGELOG.md instead of inline dates
- Update NOTICE to reference CHANGELOG.md

This allows easier maintenance of modification history going forward.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>

* Add legal guidance to CLAUDE.md

Add requirement to track copyright notice modifications in CHANGELOG.md files.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>

* Fix browser state continuity and click targeting

Previously, when issuing follow-up instructions, the browser would restart
from the beginning instead of continuing from the current state. Additionally,
clicks were sometimes missing their targets due to viewport sizing issues.

Issues fixed:
1. Message history not being preserved - streamlit was stripping out the
   full conversation context when preparing API messages
2. Event loop incompatibility - using asyncio.run() for each turn created
   a new event loop, breaking Playwright's browser instance
3. Browser window/viewport sizing causing click coordinate misalignment

Changes:
- Preserve full message history in streamlit.py to maintain conversation context
- Implement persistent event loop to keep browser instance alive across turns
- Integrate screenshots with user messages to show current browser state
- Enable screenshot filtering (keep 3 most recent) to manage context size
- Remove event loop reset logic in browser.py that was causing browser restarts
- Fix browser window sizing and viewport configuration for accurate click targeting
- Add helpful debug logging for browser state tracking

The browser now successfully maintains state across multiple requests,
continues from where it left off, and clicks work reliably.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>

* Fix claude-sonnet-4-5-20250929 tool compatibility

- Add EditTool20250728 with text_editor_20250728 API type and str_replace_based_edit_tool name
- Update computer_use_20250124 to use EditTool20250728 instead of EditTool20250124
- Add CLAUDE_4_5 model configuration using computer_use_20250124 tool version
- Update model mapping to use CLAUDE_4_5 for claude-sonnet-4-5-20250929
- Set claude-sonnet-4-5-20250929 as the default model

This resolves the "does not support tool types: text_editor_20250124" error
by using the official tool types supported by the model: bash_20250124,
computer_20250124, text_editor_20250728.

Uses official computer_use_20250124 tool version instead of inventing a new one.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>

* Update README to reflect Claude 4.5 Sonnet as default model

Updates the default model reference from claude-sonnet-4-20250514 to
claude-sonnet-4-5-20250929 in the README note section.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>

* remove unused import

* Add support for a new zoom action in computer_use_20251124

This overhauls a bunch of things, including:
 - adds the new `computer_use_20251124` variant, with the zoom action
 - removes a bunch of older models that are deprecated
 - adds a bunch of newer models that were missing
 - replaces the buggy text editor 0429 with the correct 0728 version

---------

Co-authored-by: Claude <[email protected]>
Co-authored-by: Bassil Shama <[email protected]>
Co-authored-by: brigitanthropic <[email protected]>
Co-authored-by: Alex Paris <[email protected]>
Co-authored-by: Ben Komalo <[email protected]>
winwintangelo pushed a commit to winwintangelo/claude-quickstarts that referenced this pull request Nov 29, 2025
…s#310)

The browser-tools-api-demo was accidentally included in PR anthropics#309 which
was meant to only add zoom tool support. This commit removes the
browser-tools-api-demo directory and its reference from the README.

The browser-tools-api-demo will be submitted in a separate PR.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants