v1.10.0

facebook/lexicalv1.10.0Jun 15, 2026by gaomeng1900

AI Summary

This release introduces a major rework of the agent run lifecycle, making the `stop()` method async and decoupling run status from task outcome. It also adds abortable JavaScript execution, improves dark mode detection, and fixes several bugs related to scroll predicates and wait reporting.

Key Highlights

  • Agent run lifecycle rework with async `stop()`
  • Abortable JavaScript execution via `AbortSignal`
  • Improved dark mode detection heuristics
  • Accurate wait duration reporting

Breaking Changes

  • `stop()` is now async and resolves only after the run fully settles
  • Run status is decoupled from task outcome: new `stopped` state added
  • LLM self-reported failures now end as `completed`
  • Lifecycle hooks re-throw instead of folding errors into the result

New Features

  • Abortable JavaScript execution
  • Leaner agent prompts
  • MultiPageAgent safety (ScriptExecutionTool disabled)

Full Release Notes

## Breaking Changes

- **Agent run lifecycle rework** - `stop()` is now async and resolves only after the run fully settles. Run status is decoupled from task outcome: a new `stopped` state was added, and LLM self-reported failures now end as `completed`. Lifecycle hooks re-throw instead of folding errors into the result, agent errors are recorded in history, and `agent.lastResult` was added.

## Features

- **Abortable JavaScript execution** - `execute_javascript` now honors the `AbortSignal`.
- **Leaner agent prompts** - Simplified the waiting-response flow and removed navigation-back instructions to reduce LLM cognitive load.
- **MultiPageAgent safety** - Disabled `ScriptExecutionTool` for `MultiPageAgent`.

## Improvements

- **Dark mode detection** - Refined detection heuristics and made `isMainContentDark` less aggressive by checking `html` and `body` data attributes independently.
- **Extension lifecycle robustness** - Drove heartbeat and running state from status changes, cleared stale activity on any non-running status, handled the stopped lifecycle state, and cleared `currentTabId` on `TabsController.init`.

## Bug Fixes

- **Accurate wait reporting** - Wait steps now report the actual wait duration.
- **Scroll predicates** - Scroll predicates now return booleans.
- **Docs** - Fixed the broken demo video on GitHub.

## PRs
* chore(deps-dev): bump the development-dependencies group with 13 updates by @dependabot[bot] in https://github.com/alibaba/page-agent/pull/542
* chore(page-controller): remove accidental debug console.log calls by @64johnlee in https://github.com/alibaba/page-agent/pull/534
* Implement TODO: enhance dark mode detection by @tageniu in https://github.com/alibaba/page-agent/pull/373
* test(core): add PageAgentCore lifecycle tests by @gaomeng1900 in https://github.com/alibaba/page-agent/pull/543
* feat(page-controller): refine dark mode detection heuristics by @gaomeng1900 in https://github.com/alibaba/page-agent/pull/544
* refactor(core)!: rework agent run lifecycle and status semantics by @gaomeng1900 in https://github.com/alibaba/page-agent/pull/549
* feat(core): make execute_javascript honor AbortSignal by @gaomeng1900 in https://github.com/alibaba/page-agent/pull/545
* fix(extension): clear currentTabId in storage on TabsController.init by @gaomeng1900 in https://github.com/alibaba/page-agent/pull/551
* test(page-controller): add happy-dom env and basic tests by @gaomeng1900 in https://github.com/alibaba/page-agent/pull/552
* Fix scroll predicate types by @linked-danis in https://github.com/alibaba/page-agent/pull/512
* Report actual wait duration by @linked-danis in https://github.com/alibaba/page-agent/pull/511
* feat: remove instructions about nav back by @gaomeng1900 in https://github.com/alibaba/page-agent/pull/557

## New Contributors
* @64johnlee made their first contribution in https://github.com/alibaba/page-agent/pull/534
* @tageniu made their first contribution in https://github.com/alibaba/page-agent/pull/373

**Full Changelog**: https://github.com/alibaba/page-agent/compare/v1.9.0...v1.10.0