Simon
76fea5b285
feat: remove instructions about nav back
2026-06-15 16:41:02 +08:00
Simon
a796453c6e
chore: rm go_back todo
2026-06-12 19:10:18 +08:00
Simon
a1b0dd90eb
Merge pull request #511 from linked-danis/fix/report-actual-wait-time
...
Report actual wait duration
2026-06-12 17:49:43 +08:00
Simon
fb8c42daa4
feat: simplify waiting response to reduce LLM cognitive load
2026-06-12 17:44:21 +08:00
Simon
7dffaa4718
Merge pull request #512 from linked-danis/fix/scroll-predicate-types
...
Fix scroll predicate types (boolean | null -> boolean)
2026-06-11 21:22:31 +08:00
Simon
0f3f639497
Merge pull request #552 from alibaba/test/page-controller-happy-dom
...
test(page-controller): add happy-dom env and basic tests
2026-06-11 21:14:28 +08:00
Simon
67b1874836
Merge pull request #551 from alibaba/fix/stale-current-tab-id-mask-flash
...
fix(extension): clear currentTabId in storage on TabsController.init
2026-06-11 21:13:31 +08:00
Simon
56c09a9ae9
test(page-controller): add happy-dom env and basic tests
2026-06-11 21:10:05 +08:00
Simon
e65c7c9601
Merge pull request #545 from alibaba/feat/execute-js-abort-signal
...
feat(core): make execute_javascript honor AbortSignal
2026-06-11 20:45:53 +08:00
Simon
d3797109bf
fix(extension): clear currentTabId in storage on TabsController.init
...
Reset currentTabId via updateCurrentTabId(null) so the storage projection
stays consistent with isAgentRunning. Prevents the previous run's tab from
briefly flashing the mask when a new run starts within the heartbeat window.
Closes #550
2026-06-11 20:37:19 +08:00
Simon
4e881f7eb0
chore: add notes for a pending design decision
2026-06-11 20:31:01 +08:00
Simon
768b07e28c
feat: disable ScriptExecutionTool for MultiPageAgent
2026-06-11 20:16:09 +08:00
Simon
4828f9f726
chore: update tests
2026-06-11 20:06:35 +08:00
Simon
edb769b826
fix(ext): handle stopped lifecycle state
2026-06-11 19:53:30 +08:00
Simon
e270ba15b5
fix(ext): clear stale activity on any non-running status
...
The side panel kept showing the last activity card when a run settled as
`stopped`; clear it for every terminal status instead of an allowlist.
2026-06-11 19:15:58 +08:00
Simon
c19891926b
refactor(ext): drive heartbeat and running flag from statuschange
...
Project agent status into chrome.storage via a statuschange listener
instead of pairing setup/teardown across lifecycle hooks. A throwing hook
can no longer leak the heartbeat or strand isAgentRunning, and rejected
concurrent execute() calls never touch the active run's state.
2026-06-11 19:15:48 +08:00
Simon
0438bf6265
fix(core): harden run settlement edge cases from review
...
- install #running before the `running` statuschange fires, so a listener
calling stop() immediately awaits the current run
- await async mask/highlight cleanup before settling: once settled, the
agent must be safely reusable
- make the inter-step delay abortable so stop() settles promptly; abort
during the delay is classified as `stopped`
2026-06-11 19:15:27 +08:00
Simon
255e8fc861
chore: update docs
2026-06-11 17:29:54 +08:00
Simon
4690aefec5
refactor(core): decouple run settling from terminal status transition
...
Resolve #running before the terminal statuschange so the settle signal can
never be lost to re-entrant listeners. Hooks keep middleware semantics:
a throwing hook fails the run; integrations that don't want this should
suppress errors in their own hooks. Also make suppress() async-aware so
rejected promises (e.g. showMask) are actually caught.
2026-06-11 17:21:11 +08:00
Simon
8f9a637bdb
refactor(core): suppress mask/highlight errors instead of failing the run
...
Visual feedback failures (showMask, hideMask, cleanUpHighlights) are
non-critical; log them instead of aborting the task or masking the
original error during teardown.
2026-06-11 16:26:42 +08:00
Simon
c2d6a864f8
refactor(core): settle terminal status only after run cleanup completes
...
Defer the terminal statuschange to the outer finally via settleRun, closing
the window where a listener could re-enter execute() during teardown. Also
check abort at step start so aborts during stepDelay settle as `stopped`.
2026-06-11 16:26:05 +08:00
Simon
1deaa2147e
fix: mke sure taskResult and onAfterStep wont get lost
2026-06-11 15:39:35 +08:00
Simon
052a302a08
refactor(core)!: rework agent run lifecycle and status semantics
...
BREAKING CHANGE: stop() is now async and resolves after the run fully
settles; status decouples from task outcome (new 'stopped' state, LLM
self-reported failure now ends as 'completed'). Lifecycle hooks re-throw
instead of being folded into the result; agent errors go to history.
Adds agent.lastResult.
2026-06-11 14:33:12 +08:00
Simon
9ed0a09194
feat(core): make execute_javascript honor AbortSignal
...
Expose the task AbortSignal as `signal` in the script scope so cooperative
code can cancel promptly, and re-check signal.throwIfAborted() after the
script settles to discard stale results.
Closes #537 .
2026-06-09 21:30:27 +08:00
Simon
73810b3ed8
Merge pull request #544 from alibaba/feat/refine-dark-mode-check
...
feat(page-controller): refine dark mode detection heuristics
2026-06-09 20:43:15 +08:00
Simon
01c9cc9ea7
feat(page-controller): refine dark mode detection heuristics
2026-06-09 20:33:14 +08:00
Simon
a7beabbbe2
Merge pull request #543 from alibaba/test/page-agent-core-lifecycle
...
test(core): add PageAgentCore lifecycle tests
2026-06-09 20:32:23 +08:00
Simon
b3ff0a1a25
Merge pull request #373 from tageniu/feat/dark-mode-detect
...
Implement TODO: enhance dark mode detection
2026-06-09 20:18:33 +08:00
Simon
daae28db34
test(core): add PageAgentCore lifecycle tests
2026-06-09 17:07:10 +08:00
Simon
797c238862
Merge pull request #534 from 64johnlee/chore/remove-debug-console-logs
...
chore(page-controller): remove accidental debug console.log calls
2026-06-09 15:07:19 +08:00
dependabot[bot]
8c3a5f8188
chore(deps-dev): bump the development-dependencies group with 13 updates
...
Bumps the development-dependencies group with 13 updates:
| Package | From | To |
| --- | --- | --- |
| [@eslint-react/eslint-plugin](https://github.com/Rel1cx/eslint-react/tree/HEAD/plugins/eslint-plugin ) | `5.8.10` | `5.8.16` |
| [@microsoft/api-extractor](https://github.com/microsoft/rushstack/tree/HEAD/apps/api-extractor ) | `7.58.7` | `7.58.8` |
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node ) | `25.9.1` | `25.9.2` |
| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint ) | `8.60.1` | `8.61.0` |
| [@radix-ui/react-hover-card](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/hover-card ) | `1.1.15` | `1.1.16` |
| [@radix-ui/react-label](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/label ) | `2.1.8` | `2.1.9` |
| [@radix-ui/react-separator](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/separator ) | `1.1.8` | `1.1.9` |
| [@radix-ui/react-slot](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/slot ) | `1.2.4` | `1.2.5` |
| [@radix-ui/react-switch](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/switch ) | `1.2.6` | `1.3.0` |
| [@types/chrome](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/chrome ) | `0.1.42` | `0.1.43` |
| [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react ) | `19.2.16` | `19.2.17` |
| [simple-icons](https://github.com/simple-icons/simple-icons ) | `16.22.0` | `16.23.0` |
| [@radix-ui/react-tooltip](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/tooltip ) | `1.2.8` | `1.2.9` |
Updates `@eslint-react/eslint-plugin` from 5.8.10 to 5.8.16
- [Release notes](https://github.com/Rel1cx/eslint-react/releases )
- [Changelog](https://github.com/Rel1cx/eslint-react/blob/main/CHANGELOG.md )
- [Commits](https://github.com/Rel1cx/eslint-react/commits/v5.8.16/plugins/eslint-plugin )
Updates `@microsoft/api-extractor` from 7.58.7 to 7.58.8
- [Changelog](https://github.com/microsoft/rushstack/blob/main/apps/api-extractor/CHANGELOG.md )
- [Commits](https://github.com/microsoft/rushstack/commits/@microsoft/api-extractor_v7.58.8/apps/api-extractor )
Updates `@types/node` from 25.9.1 to 25.9.2
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases )
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node )
Updates `typescript-eslint` from 8.60.1 to 8.61.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases )
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md )
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.61.0/packages/typescript-eslint )
Updates `@radix-ui/react-hover-card` from 1.1.15 to 1.1.16
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/hover-card/CHANGELOG.md )
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/hover-card )
Updates `@radix-ui/react-label` from 2.1.8 to 2.1.9
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/label/CHANGELOG.md )
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/label )
Updates `@radix-ui/react-separator` from 1.1.8 to 1.1.9
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/separator/CHANGELOG.md )
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/separator )
Updates `@radix-ui/react-slot` from 1.2.4 to 1.2.5
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/slot/CHANGELOG.md )
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/slot )
Updates `@radix-ui/react-switch` from 1.2.6 to 1.3.0
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/switch/CHANGELOG.md )
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/switch )
Updates `@types/chrome` from 0.1.42 to 0.1.43
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases )
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/chrome )
Updates `@types/react` from 19.2.16 to 19.2.17
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases )
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react )
Updates `simple-icons` from 16.22.0 to 16.23.0
- [Release notes](https://github.com/simple-icons/simple-icons/releases )
- [Commits](https://github.com/simple-icons/simple-icons/compare/16.22.0...16.23.0 )
Updates `@radix-ui/react-tooltip` from 1.2.8 to 1.2.9
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/tooltip/CHANGELOG.md )
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/tooltip )
---
updated-dependencies:
- dependency-name: "@eslint-react/eslint-plugin"
dependency-version: 5.8.16
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: development-dependencies
- dependency-name: "@microsoft/api-extractor"
dependency-version: 7.58.8
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: development-dependencies
- dependency-name: "@types/node"
dependency-version: 25.9.2
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: development-dependencies
- dependency-name: typescript-eslint
dependency-version: 8.61.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: development-dependencies
- dependency-name: "@radix-ui/react-hover-card"
dependency-version: 1.1.16
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: development-dependencies
- dependency-name: "@radix-ui/react-label"
dependency-version: 2.1.9
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: development-dependencies
- dependency-name: "@radix-ui/react-separator"
dependency-version: 1.1.9
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: development-dependencies
- dependency-name: "@radix-ui/react-slot"
dependency-version: 1.2.5
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: development-dependencies
- dependency-name: "@radix-ui/react-switch"
dependency-version: 1.3.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: development-dependencies
- dependency-name: "@types/chrome"
dependency-version: 0.1.43
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: development-dependencies
- dependency-name: "@types/react"
dependency-version: 19.2.17
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: development-dependencies
- dependency-name: simple-icons
dependency-version: 16.23.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: development-dependencies
- dependency-name: "@radix-ui/react-tooltip"
dependency-version: 1.2.9
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: development-dependencies
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-06-08 19:34:16 +00:00
Simon
3a2f0a41ec
chore(version): bump version to 1.9.0
2026-06-08 22:42:46 +08:00
Simon
2afcf13fbb
feat: update model list
2026-06-08 22:34:33 +08:00
Simon
f617728fc3
Merge pull request #540 from alibaba/feat/claude-opus-4-8
...
feat(llms): add Claude Opus 4.8 support
2026-06-08 22:27:53 +08:00
Simon
2f343bcc56
feat(llms): add Claude Opus 4.8 support
...
Strip temperature for claude-opus-4-8, add tests, list model on website.
2026-06-08 22:23:56 +08:00
Simon
4108f67079
docs(website): document ctx.signal abort contract and execute() concurrency
2026-06-08 22:19:25 +08:00
Simon
552987eb56
fix(core): prevent concurrent execute() calls
2026-06-08 21:58:16 +08:00
Simon
4445bec08a
fix: abort may affect onAfterTask; clean up while loop
2026-06-08 19:46:19 +08:00
Simon
6530f0ef40
chore: cleanup; rm get abortSignal
2026-06-08 17:40:44 +08:00
Simon
f8676a5cc2
fix: throw unhonored AbortError & rm detection code for it
2026-06-08 17:27:05 +08:00
64JohnLee
7b623c5b22
chore(page-controller): remove accidental debug console.log calls
...
Two debug log statements were left in production code:
- `isScrollableElement()` logged `scrollData!!!` for every scrollable
element found during DOM tree construction. Because the DOM is rebuilt
on every agent action, this fired repeatedly and also triggered
unnecessary JSON serialisation of scroll metrics on the hot path.
- `SimulatorMask.dispose()` logged 'dispose SimulatorMask' every time
the highlight overlay was torn down.
Neither had a structured prefix or was gated behind a debug flag.
Removing both silences console noise for end users and removes the
serialisation overhead in the scroll-detection hot path.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-07 16:47:04 +08:00
Simon
78b6e2ad3c
feat: all sync tools should respect aborting
2026-06-05 21:23:18 +08:00
Simon
68ae73d4e6
chore(llms): add vitest unit tests for llms package
2026-06-04 20:27:33 +08:00
Simon
90ff96ca15
fix: dts global declarations should not be bundled
2026-06-04 17:44:59 +08:00
Simon
9891e02215
fix(llms): handle AbortError during .json()
2026-06-03 23:31:01 +08:00
Simon
823195ad94
fix(llms): add error handling for invalid JSON responses and schema validation
2026-06-03 23:14:12 +08:00
Simon
fd12fb9f1b
refactor(llms): split AbortError out of InvokeError
2026-06-03 23:00:33 +08:00
Simon
fb8de08c39
fix(llms): fix abort handling and clean up retry logic
2026-06-03 22:44:54 +08:00
Simon
e7b93efda0
chore: typo
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-03 20:20:37 +08:00
Simon
6ecd6e61f6
Merge pull request #506 from tolerious/fix/fix-bug-505
...
fix(website): normalize trailing slash in sidebar location comparison
2026-06-02 17:56:30 +08:00