Skip to content
This repository was archived by the owner on Feb 3, 2026. It is now read-only.

Releases: zanminwang/webtask

v0.27.0

Choose a tag to compare

@zanminwang zanminwang released this 13 Dec 04:47

Changes

  • Standardize time parameters to seconds: All time-related parameters now use seconds consistently

    • typing_delay: 80ms → 0.05s
    • wait_for_load/wait_for_network_idle timeout: 10000ms → 10.0s
    • keyboard_type delay: 80ms → 0.05s
  • Add raise_on_timeout parameter: Agent.wait_for_load() and Agent.wait_for_network_idle() now accept raise_on_timeout (default: True)

    • When False, silently returns after timeout instead of raising TimeoutError
    • Useful for lenient waits where you want to continue regardless

Example

# All time params now in seconds
agent = await wt.create_agent(
    llm=llm,
    wait_after_action=1.0,   # seconds
    typing_delay=0.05,       # seconds (was 80ms)
)

# Lenient wait - continue even if timeout
await agent.wait_for_network_idle(timeout=5.0, raise_on_timeout=False)

v0.26.0

Choose a tag to compare

@zanminwang zanminwang released this 06 Dec 03:44

Changes

  • Live form value parsing: DOM context now captures live input values (inputValue, textValue), checkbox/radio states (inputChecked), and select option states (optionSelected) from CDP snapshots
  • Configurable typing delay: Added typing_delay parameter to Agent (default: 80ms)
  • Centralized constants: Added constants.py with DEFAULT_WAIT_AFTER_ACTION and DEFAULT_TYPING_DELAY

Bug Fixes

  • Fixed issue where user-typed values (e.g., search queries) weren't visible in DOM context
  • Fixed 17 deselected tests by adding missing @pytest.mark.unit markers

v0.25.1

Choose a tag to compare

@zanminwang zanminwang released this 06 Dec 02:25

Bug Fixes

  • Fix TypeTool clear parameter not working: The clear parameter in the type tool was using element.fill("") which would lose focus before keyboard_type. Now passes clear to keyboard_type which uses JavaScript to clear the active element while maintaining focus.

Other Changes

  • Add demo video example and GIF to README
  • Add videos/ to gitignore

v0.24.0

Choose a tag to compare

@zanminwang zanminwang released this 06 Dec 01:12

Changes

  • TypeTool and TypeAtTool: New tools that click-then-type in one action for more human-like interaction
  • SelectTool: New tool for dropdown selection
  • Simplified message types: Single Message class with Role enum instead of separate UserMessage/AssistantMessage classes
  • Tools receive wait_after_action directly: Cleaner tool initialization without browser.wait() calls
  • ToolParams base class: Rejects extra parameters for stricter validation
  • Fixed clear functionality: Improved action timeout handling

Breaking Changes

  • Removed test recording/replay infrastructure (webtask.testing module)
  • Removed e2e test workflow from CI

v0.23.2

Choose a tag to compare

@zanminwang zanminwang released this 05 Dec 22:40

Changes

  • Fast-fail timeout for element actions: Element actions (click, fill, type, upload) now use a 100ms timeout instead of Playwright's 30s default. This prevents long waits when clicking non-existent or hidden elements while still performing actionability checks.

Details

  • Added DEFAULT_ACTION_TIMEOUT = 100ms in playwright_element.py
  • Applied timeout to click, fill, type, upload_file methods
  • Removed context-level set_default_timeout from playwright_browser.py
  • Deleted unused constants.py

v0.23.1

Choose a tag to compare

@zanminwang zanminwang released this 03 Dec 05:58

Changes

  • Add ToolParams base class with extra="forbid" to reject invalid LLM tool parameters
  • All tool Params classes now inherit from ToolParams
  • Export Tool and ToolParams from webtask.llm
  • Add test for extra field rejection
  • Move TODO from README to docs/todo.md

v0.23.0

Choose a tag to compare

@zanminwang zanminwang released this 03 Dec 05:32

Changes

Human-like interaction

  • Remove FillTool and TypeTool (element-level typing)
  • Remove TypeTextAtTool from pixel tools
  • Add KeyboardTypeTool (page-level keyboard typing)
  • User flow: click element to focus, then type on keyboard

Improved scrolling

  • ScrollDocumentTool now scrolls 50% of viewport (maintains context, won't cut elements in half)
  • Uses JavaScript window.scrollBy() instead of PageUp/PageDown

Tool organization

  • DOM mode: click, upload + keyboard tools
  • Pixel mode: click_at, hover_at, scroll_at, scroll_document, drag_and_drop + keyboard tools
  • Keyboard tools (both modes): type, key_combination

v0.22.1

Choose a tag to compare

@zanminwang zanminwang released this 03 Dec 04:17

Changes

  • Keep li, ul, ol elements as semantic HTML tags
  • Dropdown menu items now get element IDs (e.g., li-0, li-1)
  • Add tests for semantic knowledge functions

v0.22.0

Choose a tag to compare

@zanminwang zanminwang released this 03 Dec 03:05

Changes

  • Simplify agent modes from three (text/visual/full) to two (dom/pixel)
  • dom mode (default): Uses element IDs for interaction, includes DOM + screenshots
  • pixel mode: Uses screen coordinates, includes screenshots only
  • Move ScrollDocumentTool to pixel mode only
  • Both modes now get screenshots for better LLM context

v0.21.4

Choose a tag to compare

@zanminwang zanminwang released this 03 Dec 02:43

What's New

  • Added [END OF PAGE] marker: DOM context now ends with a clear marker to help the LLM understand where page content ends, preventing it from echoing back DOM elements in responses.