Peter Steinberger
b4a26783f7
refactor(test): consolidate duplicated requireRecord and provider HTTP mock helpers ( #119982 )
...
* refactor(test): consolidate duplicated test helpers
* test: remove stale record guard import
* fix(test): remove orphaned record guards
* refactor(test): keep record requirement messages exhaustively typed
* fix(test): keep packages/ai record guard package-local
2026-08-06 14:48:01 -07:00
Peter Steinberger
d6233c29b9
fix(browser): preserve locale, timezone, and device overrides ( #119695 )
...
* fix(browser): make device emulation transitions atomic
* test(browser): verify device presets in packaged profile
* fix(browser): retain page emulation overrides
2026-08-05 12:29:26 -07:00
Peter Steinberger
21b6478c6f
fix(browser): honor explicit navigation timeouts across browser drivers ( #119654 )
...
* fix(browser): propagate bounded navigation timeouts end to end
* fix(browser): share shipped navigation limits across all drivers
2026-08-05 09:44:27 -07:00
Peter Steinberger
b3f3da1688
fix(browser): visibly report failed pairing and tab-sharing actions ( #119526 )
...
* fix(browser): surface extension action errors exactly once
* fix(browser): reuse typed extension error response handler
* fix(browser): settle tab sharing only after consent reconciliation
* fix(browser): retain popup action errors across status refreshes
* fix(browser): preserve popup failures across state transitions
2026-08-05 07:22:51 -07:00
Peter Steinberger
767dc7019d
refactor(browser): consolidate browser CLI and normalization helpers ( #119432 )
2026-08-04 20:26:21 -07:00
Peter Steinberger
2b3351a743
fix(browser): protect private observation media and Canvas trust boundaries ( #118775 )
...
* fix(browser): protect observation screenshots and Canvas trust boundaries
* test(canvas): preserve actual image helper result types
2026-08-03 11:33:27 -07:00
Peter Steinberger
c70863a5e5
fix(browser): wrap page-controlled action results ( #118691 )
2026-08-03 07:37:04 -07:00
Vincent Koc
a2f3c01068
fix(browser): wake page shares when heartbeat is disabled ( #116790 )
...
* fix(browser): wake page shares with heartbeat disabled
* fix(browser): preserve page-share session agent
2026-08-03 12:30:36 +08:00
Vincent Koc
9689d55c12
fix(browser): allow page extraction in tab-bound runs ( #116779 )
...
* fix(browser): allow extraction in tab-bound runs
* test(browser): tighten tab-bound extraction coverage
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-08-03 12:25:59 +08:00
Peter Steinberger
2dc8553247
refactor(browser): consolidate profile configuration fixtures ( #118438 )
...
* test(browser): consolidate profile configuration fixtures
* test(browser): centralize synthetic auth fixtures
* test(browser): preserve credential fixtures outside matrices
2026-08-02 21:15:53 -07:00
Vincent Koc
27f5691d29
fix(browser): keep Tab Copilot working after extension reload ( #116784 )
...
* fix(browser): derive unique copilot session labels
* test(browser): harden copilot reload proof
* test(browser): keep e2e expect dependency type-only
* fix(browser): repair type-only e2e helper
* chore(release): remove PR changelog entry
2026-08-03 12:09:06 +08:00
Peter Steinberger
e9d88696b5
feat(cron): add webhook SSRF policy ( #118237 ) ( #118286 )
2026-08-02 17:02:20 -07:00
Peter Steinberger
b93fc7e8f6
test(browser): consolidate navigation security fixtures ( #118240 )
2026-08-02 16:32:33 -07:00
Peter Steinberger
c203baea97
test(browser): consolidate upload path fixtures ( #118283 )
2026-08-02 16:13:22 -07:00
Peter Steinberger
9fa28928e5
refactor(browser): deduplicate profile hot-reload fixtures ( #118220 )
2026-08-02 16:10:26 -07:00
Peter Steinberger
937d13193b
test(browser): consolidate CDP fixtures ( #118239 )
2026-08-02 16:08:44 -07:00
Peter Steinberger
fb7cb832cc
feat(browser): redesign extension popup with settings panel ( #118095 )
...
* feat(browser): redesign extension popup with settings panel
* fix(browser): hide unpair action while popup is unpaired
* test(browser): compare realpaths when resolving loaded extension id
2026-08-02 11:50:06 -07:00
Peter Steinberger
f599ff520d
feat(browser): relay CDP compat for Puppeteer clients (chrome-devtools-mcp) ( #117915 )
...
* feat(browser): relay CDP compat for Puppeteer clients
Answer Target.getBrowserContexts with the always-empty context list so
puppeteer.connect() (chrome-devtools-mcp) can drive the paired Chrome
through the extension relay without the remote-debugging prompt. Serve
DevTools-style /json/list descriptors (id + type), which also makes the
HTTP tab-list fallback see extension-profile tabs, and add
`openclaw browser extension cdp` to print the relay endpoint and auth
header for external CDP clients.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
* fix(browser): avoid map-spread in relay target descriptors
oxc(no-map-spread): build the /json/list descriptor object explicitly
instead of spreading RelayTabInfo inside map().
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
---------
Co-authored-by: Peter Steinberger <steipete@mac-studio-sf2.local >
Co-authored-by: Claude Fable 5 <noreply@anthropic.com >
2026-08-02 01:59:44 -07:00
Peter Steinberger
164c3f2cb1
test(browser): consolidate navigation guard fixtures ( #117638 )
2026-08-01 14:33:21 -07:00
Omar Shahine
2b3009f718
fix(gateway): preserve node invoke dispatch provenance ( #117139 )
...
* fix(gateway): preserve node invoke dispatch provenance
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
Copilot-Session: 6381c461-11aa-4700-8648-4da1393e1c59
* fix(gateway): preserve timeout precedence
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
Copilot-Session: 6381c461-11aa-4700-8648-4da1393e1c59
* fix(gateway): mark wake-path disconnect as not dispatched
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
Copilot-Session: 6381c461-11aa-4700-8648-4da1393e1c59
* fix(gateway): mark plugin dispatch after send
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
Copilot-Session: 6381c461-11aa-4700-8648-4da1393e1c59
* build(browser): regenerate Copilot runtime
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
Copilot-Session: 6381c461-11aa-4700-8648-4da1393e1c59
---------
Co-authored-by: Omar Shahine <10343873+omarshahine@users.noreply.github.com >
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
Copilot-Session: 6381c461-11aa-4700-8648-4da1393e1c59
2026-08-01 21:22:51 +00:00
Vincent Koc
263741b1f0
fix(ci): align release validation fixtures ( #117494 )
...
* fix(release): align beta 6 e2e fixtures
* fix(doctor): preserve missing state startup signal
* test(release): align beta e2e contracts
* test(agents): use canonical empty auth store
* test(agents): isolate prompt cooldown scheduling
* test(release): align main validation fixtures
* test(release): accept Code Mode plugin tool evidence
* fix(test): repair release validation checks
* test(cron): assert structured session targets
2026-08-02 00:39:36 +08:00
Peter Steinberger
568ea29d2e
refactor(plugins): inherit shared package boundary settings ( #117474 )
2026-08-01 09:11:09 -07:00
Vincent Koc
f5a8cb02ea
test(release): repair full validation regressions ( #116931 )
...
* test(discord): mock thread delete listener
* test(qa): expect blocked update evidence
* test(telegram): preserve recovered context body
* fix(test): configure kitchen-sink personality
* test(browser): expect canonical staged upload paths
* test(browser): canonicalize macOS download roots
* test(feishu): seed legacy session rows offline
* test(telegram): isolate message context session stores
* test(qqbot): expect canonical media paths
* test(anthropic): match canonical transcript paths
* test(qa): expect canonical session store keys
* test(gateway): isolate rewind media reads
* test(release): review plugin child spawns
* test(plugins): expect process-stable manifest metadata
* test(google): retire usage telemetry contracts
2026-08-01 15:42:50 +08:00
Peter Steinberger
433bb3f954
fix(cli): make commands, completion, and JSON output reliable ( #116033 )
...
* fix(cli): make commands, completion, and JSON output reliable
* fix(cli): reconcile completion coverage with current main
* test(cli): keep test routing stable across isolation lanes
2026-07-31 16:20:34 -07:00
Peter Steinberger
4645d4a487
fix(browser): unify node routing and honor configured pins ( #117087 )
2026-07-31 16:16:44 -07:00
Peter Steinberger
410c163328
fix(browser): preserve doctor JSON failure status ( #116811 )
...
* fix(browser): preserve doctor JSON exit status
* fix(browser): defer doctor failure exit
* test(browser): harden doctor JSON assertions
2026-07-31 05:08:22 -07:00
Vincent Koc
20e68e01df
fix(gateway): sign device proofs with challenge time ( #116679 )
2026-07-31 16:45:53 +08:00
Peter Steinberger
ba756a23ad
fix(browser): return committed trace path ( #116702 )
2026-07-31 00:01:39 -07:00
Vincent Koc
8dd575f986
test(browser): remove dead config cases ( #116631 )
2026-07-31 10:57:55 +08:00
Vincent Koc
90a22b4f50
chore(test): run browser copilot E2E in CI ( #116407 )
...
* test(browser): run copilot E2E in CI
* test(browser): stabilize copilot E2E synchronization
* test(browser): wake extension workers deterministically
* test(ci): route browser copilot command changes
2026-07-30 23:20:34 +08:00
pash-openai
e52354ea13
fix(build): pin typebox to a published release ( #116333 )
2026-07-30 09:58:51 +00:00
Shakker
052212dc97
chore: refresh browser gateway runtime ( #116043 )
2026-07-29 20:05:56 +01:00
Shakker
ab3f52c367
fix: reset gateway event sequence on reconnect
2026-07-29 20:05:56 +01:00
Peter Steinberger
fde4658bf6
fix(ui): recover sessions and dashboards after prolonged outages ( #115654 )
...
* fix(ui): recover long-running sessions and dashboards
* fix(ui): expose browser-safe gateway timers
* refactor(ui): keep browser timer surface minimal
* refactor(gateway): extract pending request state
* fix(ci): refresh browser runtime and format baseline
* fix(ci): exclude generated plugin outputs from targeted lint
* fix(ui): bound long-running connection and pane lifecycles
* refactor(ui): split long-running lifecycle regression coverage
* fix(ui): bound long-running media and lint ownership
* fix(security): preserve explicit workspace disable denylist
* fix(ci): preserve plugin manifest fallback lint
2026-07-29 10:09:51 -04:00
Vincent Koc
9c45302800
fix(browser): stabilize atomic download staging ( #115892 )
...
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-29 21:05:41 +08:00
synth
151c549494
fix(browser): uploads fail when the browser runs on a remote node ( #115291 )
...
* fix(browser): resolve upload paths on the owning browser node, not the Gateway
When a browser session is proxied to a remote node, the upload action
previously ran resolveExistingUploadPaths on the Gateway, pinning paths
to a filesystem the node cannot see and rejecting node-local files. The
node-side /hooks/file-chooser route already re-resolves paths against
its own filesystem, so skip Gateway-local resolution whenever the
request is proxied and forward the requested paths as-is.
Fixes openclaw/openclaw#115251
* fix(browser): transfer uploads to remote browser nodes
* fix(browser): normalize upload abort errors
---------
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-07-29 20:31:46 +08:00
sunlit-deng
da8a2208d2
fix(browser): reject malformed proxy file base64 ( #115045 )
...
* fix(browser): reject malformed proxy file base64
* fix(browser): preserve empty proxy downloads
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-29 06:08:01 -04:00
Peter Steinberger
20668eed03
fix(memory): quarantine writes from tainted agent turns ( #115818 )
...
* feat(memory): taint writes after network tools
* fix(memory): keep provenance mutations recoverable
* fix(memory): roll back failed provenance writes
* fix(memory): serialize provenance mutations
* docs(memory): explain flush provenance boundary
* refactor(memory): share provenance mutation wrapper
* docs(memory): clarify flush provenance fallback
* fix(memory): canonicalize provenance paths
2026-07-29 06:02:06 -04:00
Peter Steinberger
b0376d19bf
fix(browser): abort cancelled CDP handshakes ( #115805 )
...
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-29 05:48:27 -04:00
Peter Steinberger
4232126bba
chore: update dependencies across workspace ( #115677 )
...
* chore(deps): update dependencies
* fix(deps): restore CI compatibility
2026-07-29 05:16:42 -04:00
Peter Steinberger
452abbaf8a
fix(browser): release unread CDP response streams ( #115675 )
2026-07-29 04:11:35 -04:00
Peter Steinberger
302f262e6b
refactor: deduplicate extension normalization primitives ( #115650 )
...
* refactor(plugins): reuse SDK normalization primitives
* fix(ci): repair code-mode matrix checks
* fix(ci): satisfy code-mode matrix gates
* fix(ci): use matrix evidence export
* fix(ci): validate matrix evidence artifact
2026-07-29 04:10:06 -04:00
Peter Steinberger
5157340862
fix(browser): avoid colliding extension relay ports ( #115592 )
2026-07-29 01:40:06 -04:00
Peter Steinberger
ad36646ed1
fix(gateway): reconnect nodes after transient socket failures ( #115539 )
...
* fix(gateway): reconnect nodes after transient socket failures
* fix(browser): refresh bundled gateway reconnect runtime
* fix(gateway): preserve callback-owned reconnect state
2026-07-29 01:15:26 -04:00
Peter Steinberger
90fca5aadb
fix(browser): cancel in-flight status probes ( #115534 )
2026-07-29 00:35:55 -04:00
Peter Steinberger
d239a59d82
fix(ui): make Control UI ownership and permissions reliable ( #115364 )
...
* fix(ui): unify connection-owned gateway event dispatch
* fix(qa): keep hosted UI smoke evidence truthful
* fix(ui): make mobile navigation drawer an accessible modal
* refactor(ui): centralize settings search destinations
* fix(ui): own chat media resource lifecycles
* fix(ui): unify sidebar session scope ownership
* refactor(ui): remove obsolete navigation backdrop styles
* refactor(ui): isolate dashboard provider lease capabilities
* fix(ui): centralize gateway operator permissions
* style(ui): format gateway event regressions
* fix(ui): render live dashboard permissions immediately
* fix(ui): enforce approval grant authority
* fix(gateway): fence retired sockets after event gaps
* fix(ui): isolate sidebar gateway fixtures across shared workers
* test(ui): isolate singleton-sensitive browser suites
* fix(ui): retire stale catalog pagination on gateway reconnect
* fix(ui): restore drawer focus after native dialog dismissal
* fix(ui): seed drawer threads and preserve modal focus ownership
* fix(ui): isolate nested native drawer overlay lifecycle
* test(ui): prove isolated dashboard lease authorization
* fix(ui): bound settled managed image resources
* fix(ui): type native modal focus and shared test helper
* fix(ui): correct approval mock types and trim dead export
* fix(ui): keep settings section metadata private
* fix(qa): keep hosted coverage regression within lint limit
* refactor(ui): keep catalog presence in its session data owner
* fix(browser): regenerate bundled copilot runtime
* test(ui): split board lease authorization regressions
* fix(ui): snapshot gateway listener fanout without redundant spread
* fix(ui): bind chat media subscriptions to image lifetime
* fix(ui): extract overlay access lifecycle
* fix(ui): restore guarded media after Lit reconnection
* test(ui): localize board lease fixture title
* fix(ui): reuse system approval fixture labels
* test(ui): narrow managed media lifecycle source
* fix(ui): prevent retired board gateway clients from rolling back leases
* fix(ui): expose pairing to pairing-scoped operators
* fix(ui): preserve legacy device pairing access
* fix(ui): preserve responsive sidebar ownership
* fix(ui): preserve responsive navigation and prove media ownership
* fix(ui): retire revoked catalog and refresh pairing grants
* test(ui): align typed catalog fixtures with main
2026-07-28 16:42:05 -04:00
Peter Steinberger
2b8e6395b9
fix: prevent node gateway hangs and runaway local inference ( #115248 )
...
* fix(node): bound gateway wake, cancellation, and local inference
* refactor(gateway): extract bounded node invocation policies
2026-07-28 12:47:30 -04:00
Ayaan Zaidi
a54e28e8e9
feat(browser): return inline page state after navigation ( #114814 )
...
navigate and act results that changed the page document now include the
loaded page's compact snapshot inline (honoring browser.snapshotDefaults
and standard caps/wrapping), removing the follow-up snapshot round-trip.
Snapshot execution moves to browser-tool.snapshot.ts to keep action
executors under the file size cap.
2026-07-28 20:42:57 +09:00
wahaha1223
4c2d06be2b
fix(browser): reject startup when control ports are occupied ( #109994 )
...
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-28 06:01:02 -04:00
Vincent Koc
9d5bec8487
fix(deps): remediate tar and Hono advisories ( #115029 )
2026-07-28 16:48:04 +08:00