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
Peter Steinberger
dd606796c1
fix(browser): clean up failed guarded navigation routes ( #113753 )
...
Co-authored-by: Peter Steinberger <steipete@golden-gate.local >
2026-07-25 09:17:53 -07:00