Commit Graph

945 Commits

Author SHA1 Message Date
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
Peter Steinberger
98b8a18b4c fix(node): harden reconnect and local inference cancellation (#115033)
* fix(node): harden reconnect and local inference cancellation

* fix(browser): refresh bundled gateway client

* fix(gateway): preserve restart after reconnect reset

* fix(node): preserve tracked remote command ownership
2026-07-28 04:18:51 -04:00
Peter Steinberger
0d7fb8eb39 refactor(fs): adopt fs-safe 0.5 core primitives (#113705)
* refactor(fs): unify exclusive file publication

* fix(fs): fence stale lock reclamation

* refactor(fs): bound wiki scans and secret reads

* chore(fs): finalize fs-safe 0.5 compatibility

* fix(fs): preserve publication ownership and legacy mode

* fix(fs): fail closed on unverifiable lock owners

* fix(fs): preserve concurrent backup publications

* refactor(fs): preserve ambiguous backup outputs

* fix(fs): preserve mixed-version lock coordination

* refactor(file-transfer): adopt fs-safe archive extraction

* refactor(fs): add bounded walk and secret seams

* refactor(auth): replace proper-lockfile with fs-safe

* fix(fs): honor Windows mode override casing

* refactor(snapshot): adopt fs-safe publication

* refactor(memory-wiki): adopt prunable root walks

* refactor(fleet): adopt bounded archive restore

* fix(fs): preserve post-publication ownership receipts

* refactor(fs): harvest final fs-safe primitives

* style(fs): clean harvest lint

* chore(plugin-sdk): refresh move helper API baseline

* refactor(snapshot): adopt native Windows ACL facts

* refactor(fs): adopt hardened atomic outputs

* fix(fs): scope lock reentrancy to logical owners

* chore(config): lower env var count budget

* fix(deps): adopt published fs-safe 0.5.0

* fix(ci): align SDK surface ratchets

* fix(ci): regenerate SDK API baseline after rebase

* fix(fs): preserve owner-scoped file lock nesting

* fix(ci): refresh SDK API baseline for file locks

* fix(fs): separate SQLite and file lock reentrancy

* fix(imessage): bound pinned attachment reads

* fix(agents): narrow session-key lock options

* fix(fs): preserve fs-safe 0.5 compatibility contracts

* fix(windows): retain private SQLite directory owner

* refactor(sqlite): centralize exclusive coordinator

* refactor(snapshot): isolate Windows ACL policy

* fix(windows): retain snapshot ACL inspector

* chore(config): realign env budget after rebase

* test(agents): accept canonical sandbox escape error

* docs(changelog): defer fs-safe release note
2026-07-28 03:41:47 -04:00
Peter Steinberger
960b050add refactor(extensions): remove orphaned shadow trial and retired config aliases (#114709)
* refactor(memory-core): remove orphaned shadow trials

* refactor(qqbot): migrate direct voice upload formats

Release note: QQBot configs using voiceDirectUploadFormats now migrate through openclaw doctor --fix to audioFormatPolicy.uploadDirectFormats at root and account scope. Existing nested uploadDirectFormats values win conflicts, and runtime reads only the nested policy.

* refactor(feishu): migrate tools base alias

Release note: Feishu configs using tools.base now migrate through openclaw doctor --fix to tools.bitable at root and account scope. Existing bitable values win conflicts, and runtime accepts only the canonical key.

* refactor(extensions): remove dead runtime state

* chore(config): refresh bundled channel metadata

* refactor(codex): keep realtime fallback type private

* test(ci): align QA compatibility scenario count
2026-07-27 17:12:41 -04:00
Peter Steinberger
c54d5aa3e8 test(browser): cover machine output descriptor (#114581) 2026-07-27 08:59:08 -04:00
Peter Steinberger
44bcaa263c fix(browser): bypass managed proxy during CDP handshake (#114546) 2026-07-27 08:32:32 -04:00
Peter Steinberger
3f37731175 docs(agents): surface hidden tool capabilities in model-facing descriptions (#114516) 2026-07-27 07:20:25 -04:00
Peter Steinberger
269bc5c89e fix(cli): preserve machine-readable stdout (#113654)
Co-authored-by: 1052326311 <65798732+1052326311@users.noreply.github.com>
2026-07-27 05:44:16 -04:00
Peter Steinberger
bba7e30fcc fix(browser): preserve nested timeouts and cancellation across node actions (#114131) 2026-07-26 12:04:52 -04:00
Peter Steinberger
a2c6474377 feat(browser): scoped and structured page extraction (#113938)
* feat(browser): add scoped structured extraction

* fix(browser): keep capture result type module-local and refresh docs map

* fix(browser): keep extract capture helper private
2026-07-25 19:32:44 -07:00
Peter Steinberger
3838d342c2 fix(browser): recover node proxy after failed startup (#113926) 2026-07-25 18:47:11 -07:00
Peter Steinberger
d42c11ec24 fix(browser): one unresponsive shared tab no longer hangs every browser tool (#113921)
* fix(browser): keep tab enumeration responsive

Read tab titles from browser-process CDP target metadata and skip bounded target-info reads so one wedged tab cannot block the profile.

Fixes #113787

Co-authored-by: CBruney <CBruney@users.noreply.github.com>

* fix(browser): parallelize tab metadata reads

Resolve page target metadata concurrently so multiple wedged tabs consume one bounded timeout window.

Co-authored-by: CBruney <CBruney@users.noreply.github.com>

---------

Co-authored-by: CBruney <CBruney@users.noreply.github.com>
2026-07-25 18:35:19 -07:00
Peter Steinberger
7c34185ac2 fix(browser): preserve lazy tool output schema (#113925) 2026-07-25 18:26:55 -07:00
Peter Steinberger
4cdd9b8d85 feat(browser): extract action — answer page questions via a bounded sub-model call (#113861)
* feat(browser): add page extract action

* docs(browser): document extract action

* improve(browser): make extract discoverable in tool description

* fix(browser): keep extract dep types module-local
2026-07-25 15:13:32 -07:00
Peter Steinberger
1bce047953 fix(ci): repair plugin prerelease contracts (#113820) 2026-07-25 12:38:31 -07:00
Peter Steinberger
502d1cf56b refactor(browser): split Playwright interaction tools (#113771)
* refactor(browser): split Playwright interactions

* test(browser): track split lint suppressions

* refactor(browser): inline interaction timeout resolver
2026-07-25 12:17:43 -07:00
Peter Steinberger
0e2c60e605 fix(browser): settle page shares when the relay disconnects (#113803)
Co-authored-by: Peter Steinberger <steipete@golden-gate.local>
2026-07-25 12:04:03 -07:00
Peter Steinberger
24d16b39c8 fix(browser): isolate copilot chat events by active turn (#113781)
Co-authored-by: Peter Steinberger <steipete@golden-gate.local>
2026-07-25 11:54:19 -07:00
Peter Steinberger
4dd8a2be76 improve(browser): batch navigation guard, snapshot delta markers, tool output schema, code-mode recipe (#113749)
* feat(browser): guard batches and annotate snapshot deltas

* docs(browser): document reliable automation loops

* test(browser): align batch guard mocks

* fix(browser): reset snapshot deltas after navigation

* fix(browser): detect document navigation without URL equality

* fix(browser): require stable identity for snapshot deltas

* fix(browser): keep snapshot delta helper private
2026-07-25 10:58:03 -07:00
Peter Steinberger
fe4972b12b fix(browser): keep shared page text inside producer limits (#113768)
Co-authored-by: Peter Steinberger <steipete@golden-gate.local>
2026-07-25 10:41:06 -07:00