Peter Steinberger
cef071582e
feat: let limited browsers request admin access ( #121459 )
...
* feat(gateway): add live device scope upgrades
* feat(ui): add limited-access upgrade flow
* fix(protocol): refresh Swift scope upgrade models
* perf(ui): lazy-load device scope upgrades
* fix(ci): complete scope upgrade generated surfaces
* perf(ui): lazy-load GitHub link hovercards
* fix(ui): keep admin repair guidance focusable
* fix(ui): gate and refresh scope upgrade banner
* refactor(ui): keep gateway client within line budget
* fix(ci): align rebased scope upgrade checks
* fix(ui): resolve scope upgrade in browser tests
* fix(gateway): honor refreshed scope upgrade deadline
* fix(gateway): honor refreshed scope upgrade deadline
* fix(gateway): coalesce scope upgrade waiters
* fix(ui): gate scope upgrade actions
* chore(plugin-sdk): refresh rebased API baseline
* fix(scope-upgrade): return canonical request ids
* fix(ui): preserve gateway event type binding
* fix(protocol): generate scope upgrade result models
* fix(ui): preserve scope upgrade recovery guidance
* chore(plugin-sdk): refresh rebased API baseline
* test(ui): avoid scope upgrade navigation race
* docs(control-ui): clarify scope upgrade approver
* test(gateway): align appended method counts
* chore(plugin-sdk): refresh rebased API baseline
* refactor(ui): keep place picker within line budget
* chore(plugin-sdk): refresh rebased API baseline
* chore(plugin-sdk): refresh rebased API baseline
* chore(plugin-sdk): refresh rebased API baseline
* chore(plugin-sdk): refresh rebased API baseline
* chore(plugin-sdk): refresh rebased API baseline
* chore(plugin-sdk): refresh rebased API baseline
* chore(plugin-sdk): refresh rebased API baseline
* chore(plugin-sdk): refresh rebased API baseline
* chore(plugin-sdk): refresh rebased API baseline
* chore(plugin-sdk): refresh rebased API baseline
* chore(plugin-sdk): refresh rebased API baseline
* fix(gateway): preserve scope-upgrade browser origin
2026-08-12 18:32:00 -07:00
Peter Steinberger
abe0cd691d
refactor(media): remove orphan generation facades ( #122874 )
2026-08-12 17:19:22 -07:00
Amp
54734a3f0c
fix(scripts): preserve symlinked API barrels
2026-08-12 10:00:58 -07:00
Peter Steinberger
c23d66e3b5
refactor: consolidate coercion ownership ( #122692 )
...
* refactor: consolidate coercion ownership
* test: align shard check with weighted planning
* chore: refresh plugin SDK API baseline
2026-08-12 09:25:28 -07:00
Amp
df1c965911
refactor(commands): inline sandbox display formatters
...
Amp-Thread-ID: https://ampcode.com/threads/T-019ff438-3b93-77b8-9828-1d3c586cb127
2026-08-12 07:21:43 -07:00
Peter Steinberger
016c5aa772
ci: balance Control UI E2E shards by source size ( #122527 )
...
Co-authored-by: Amp <amp@ampcode.com >
2026-08-12 00:48:14 -07:00
Peter Steinberger
1afb5e64a5
improve: reduce provider auth parity test time ( #122445 )
...
* test: trim provider auth parity runtime probes
* test: keep parity shards in tooling owner
---------
Co-authored-by: Amp <amp@ampcode.com >
2026-08-11 22:37:06 -07:00
Peter Steinberger
f166d4ee98
fix(ui): repair shared test isolation ( #122451 )
2026-08-11 22:26:52 -07:00
Peter Steinberger
f6459a3255
refactor(ui): split chat thread into transcript owners ( #122420 )
...
* refactor(ui): split chat thread into transcript owners
* refactor(ui): delete orphaned pinned-messages surface
* chore(lint): ratchet max-lines baseline after chat-thread split
* fix(ui): tighten transcript owner type boundaries
* refactor(ui): prune pinned-message orphans
2026-08-11 21:49:47 -07:00
Peter Steinberger
25f7fc0ec5
test(ci): skip unrelated Bun launcher builds ( #122333 )
...
Co-authored-by: Amp <amp@ampcode.com >
2026-08-11 16:21:44 -07:00
Sliverp
84c7d45f15
refactor(qqbot): install plugin from Tencent package ( #107295 )
...
* refactor(qqbot): remove bundled extension source
Mechanical deletion half of the #107295 squashed rebase; the catalog
repoint and host integration land in the follow-up commit.
Co-authored-by: sliverp <870080352@qq.com >
* refactor(qqbot): install plugin from Tencent package
Squashed rebase of #107295 onto current main. Repoints the official
external channel catalog at @tencent-connect/openclaw-qqbot@2.0.1 and
adapts onboarding, doctor migrations, secrets, build guards, and tests.
Documents the known limitation that the external package does not
support structured SecretRef clientSecret values; operators move those
to QQBOT_CLIENT_SECRET or clientSecretFile before upgrading.
Co-authored-by: sliverp <870080352@qq.com >
* fix(doctor): reuse shared hasOwnKey record helper
The rebased QQBot migration carried its own hasOwnKey export, colliding
with the one main now ships in legacy-config-record-shared.ts.
Co-authored-by: sliverp <870080352@qq.com >
* fix(plugins): carry catalog integrity through the update bridge
The externalized-bundled-plugin bridge dropped the official catalog's
expectedIntegrity pin, so bundled-user updates installed the external
npm package without integrity verification. The bridge now carries the
pin for the catalog's exact npm spec and both bridge install calls pass
it through; update-channel spec overrides intentionally skip the pin
since it only covers the pinned version.
Co-authored-by: sliverp <870080352@qq.com >
* chore(plugin-sdk): refresh per-entrypoint API baselines
The QQBot compat export and bundled-type removal shift 26 entrypoint
closure hashes in the new split baseline layout.
Co-authored-by: sliverp <870080352@qq.com >
* refactor(qqbot): drop helper reintroduced during rebase
Main's coercion consolidation added this file after the deletion
commit's base; its only consumers were the removed qqbot sources.
Co-authored-by: sliverp <870080352@qq.com >
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-08-11 15:10:27 -07:00
Josh Lehman
d035dba6c7
chore: scope SQLite session lifecycle CI ( #121917 )
...
* oc-358: scope SQLite lifecycle CI
* chore(ci): cover shared session lifecycle owner
2026-08-11 15:06:46 -07:00
Vincent Koc
aa52ebaef3
fix(test): serialize default e2e runner ( #122203 )
...
* fix(test): serialize default e2e runner
* docs(test): document serial e2e default
2026-08-12 05:01:04 +08:00
Peter Steinberger
a40df57bae
refactor(agent-runner): split run policy ownership ( #122209 )
...
* refactor(agent-runner): split tool-call normalization ownership
* refactor(agent-runner): split incomplete-turn ownership
* test(agent-runner): hide incomplete-turn test helper
* test(ci): route split incomplete-turn tests
* test(ci): enumerate split incomplete-turn tests
* test(vitest): route split incomplete-turn tests to their serial shard
2026-08-11 13:06:29 -07:00
Ayaan Zaidi
746a188c90
refactor(media): collapse attachment byte classification into media-core ( #122168 )
...
Attachment MIME gating and extraction dispatch used nine separate byte policies across five files; the allowlist could approve one MIME while dispatch observed another after a second sniff. @openclaw/media-core/attachment-classify now owns byte sniffing, text heuristics, extension mapping, and the seven attachment classes; the cache stores one classification that gates and dispatch share. Channel-declared MIME leads with the transport Content-Type as a byte-arbitrated hint, normalizeMimeType folds YAML/XML synonyms so existing configured allowlists keep matching, and input_file API callers keep declared-MIME precedence over cosmetic filenames. Net -135 production LOC.
Proof: 2,153 focused tests across media-core/media-understanding/media plus boundary-contract and deadcode-mirror suites; ClawSweeper local review clean (round 5, zero findings); live Telegram default-turn probe green.
Co-authored-by: Ayaan Zaidi <hi@obviy.us >
2026-08-11 19:10:49 +00:00
Vincent Koc
5bc7efe746
fix(test): keep CLI process suites in owner lane ( #122160 )
2026-08-12 02:07:51 +08:00
joshavant
cde0af4c60
test(auto-reply): isolate prepared harness delivery proof
2026-08-11 05:00:17 -05:00
Josh Lehman
2ae316e2f3
fix(ui): session titles flicker during archive transitions ( #121868 )
...
* fix(ui): preserve session titles through archive transitions
* oc-ba3: fix archive title CI regressions
2026-08-10 23:48:02 -07:00
Peter Steinberger
1220a7609a
refactor: consolidate promise-like guards ( #121861 )
...
* feat(normalization-core): add promise-like guard
* refactor: consolidate promise-like guards
* fix(normalization-core): keep isPromiseLike non-throwing on hostile then getters
ClawSweeper finding on #121861 : the diagnostics-path local guard caught throwing
then getters; the canonical guard must classify, never throw.
* test(normalization-core): annotate intentional hostile-thenable fixture
2026-08-10 22:50:48 -07:00
Peter Steinberger
ebfd3ba154
improve: cut CI critical path without more workers ( #121807 )
...
* test(ci): remove redundant builds from critical path
Amp-Thread-ID: https://ampcode.com/threads/T-019fee8d-665d-707b-a380-23f2a6a1ce03
Co-authored-by: Peter Steinberger <steipete@gmail.com >
* docs(ci): format runner table
Amp-Thread-ID: https://ampcode.com/threads/T-019fee8d-665d-707b-a380-23f2a6a1ce03
Co-authored-by: Peter Steinberger <steipete@gmail.com >
---------
Co-authored-by: Amp <amp@ampcode.com >
2026-08-10 20:21:20 -07:00
Peter Steinberger
750d0dcd9e
improve(ui): make warm session switching instant ( #121625 )
...
* perf(ui): make warm session switching instant
Amp-Thread-ID: https://ampcode.com/threads/T-019fe957-0e49-707f-859f-9600ef536125
* fix(ui): harden retained session ownership
Amp-Thread-ID: https://ampcode.com/threads/T-019fe957-0e49-707f-859f-9600ef536125
* test(ui): scope retained session assertions
Amp-Thread-ID: https://ampcode.com/threads/T-019fe957-0e49-707f-859f-9600ef536125
* fix(ui): align generated image preview checks
* fix(ui): preserve early transcript reading position
Amp-Thread-ID: https://ampcode.com/threads/T-019fe957-0e49-707f-859f-9600ef536125
* fix(ui): adopt latest-navigation-wins router
Amp-Thread-ID: https://ampcode.com/threads/T-019fe957-0e49-707f-859f-9600ef536125
* fix(ui): restore retained pane reactivity
Amp-Thread-ID: https://ampcode.com/threads/T-019fe957-0e49-707f-859f-9600ef536125
* test(auto-reply): align item lifecycle expectations
* fix(ci): repair current-main validation gates
Amp-Thread-ID: https://ampcode.com/threads/T-019fe957-0e49-707f-859f-9600ef536125
---------
Co-authored-by: Amp <amp@ampcode.com >
2026-08-10 16:17:25 -07:00
Peter Steinberger
1ced7441eb
refactor(agents): move announce, completion, recovery, and registry families into concept directories ( #121553 )
...
* refactor(agents): move announce family into subagents/announce/
* refactor(agents): move completion and main-session recovery families
* refactor(agents): move registry family into subagents/registry
* refactor(agents): update registry state type imports
* style(agents): format moved subagent imports
* test(agents): preserve isolated registry test routing
* fix(scripts): recognize relocated subagent announce seams
2026-08-10 16:06:39 -07:00
Peter Steinberger
e63bd3e9a4
fix: make gateway stress results reflect real concurrency ( #121677 )
...
* fix(qa): preserve gateway rpc concurrency
Amp-Thread-ID: https://ampcode.com/threads/T-019fec02-d170-73eb-aec8-b364ab706745
Co-authored-by: Peter Steinberger <steipete@gmail.com >
* fix(agents): clean detached session lifecycle
Amp-Thread-ID: https://ampcode.com/threads/T-019fec02-d170-73eb-aec8-b364ab706745
Co-authored-by: Peter Steinberger <steipete@gmail.com >
* fix(gateway): classify metadata startup sequencing
Amp-Thread-ID: https://ampcode.com/threads/T-019fec02-d170-73eb-aec8-b364ab706745
Co-authored-by: Peter Steinberger <steipete@gmail.com >
* fix(types): heal main test typecheck
Amp-Thread-ID: https://ampcode.com/threads/T-019fec02-d170-73eb-aec8-b364ab706745
Co-authored-by: Peter Steinberger <steipete@gmail.com >
* fix(qa): type gateway rpc request mock
Amp-Thread-ID: https://ampcode.com/threads/T-019fec02-d170-73eb-aec8-b364ab706745
Co-authored-by: Peter Steinberger <steipete@gmail.com >
* fix(qa): preserve terminal transport state
Amp-Thread-ID: https://ampcode.com/threads/T-019fec02-d170-73eb-aec8-b364ab706745
Co-authored-by: Peter Steinberger <steipete@gmail.com >
* test(gateway): allow qa transport owner
Amp-Thread-ID: https://ampcode.com/threads/T-019fec02-d170-73eb-aec8-b364ab706745
Co-authored-by: Peter Steinberger <steipete@gmail.com >
* test(ui): isolate attachment handoff lifecycle
Amp-Thread-ID: https://ampcode.com/threads/T-019fec02-d170-73eb-aec8-b364ab706745
Co-authored-by: Peter Steinberger <steipete@gmail.com >
---------
Co-authored-by: Amp <amp@ampcode.com >
2026-08-10 19:54:55 +00:00
Peter Steinberger
8a5978154f
fix(ui): handle keyboard context menu shortcuts ( #121628 )
...
* fix(ui): handle keyboard context menu shortcuts
* fix(ci): repair shared validation regressions
* fix(ci): repair setup admission lint
* fix(ci): settle setup admission tests
2026-08-10 12:39:22 -07:00
Peter Steinberger
896592b747
test(vitest): give config creators nameable return types
...
A vitest/vite type bump made inferred creator return types reach
vite-internal names (TS4058/TS4082), failing check-test-types repo-wide.
Annotate the scoped/extension config roots and the spread-rebuilding
creators with ViteUserConfig; also drop an unused workflow read, mutating
sorts, and an untyped record index left by 1f591bba56 .
2026-08-10 09:35:51 -07:00
Peter Steinberger
188a248449
fix(test): restore root-matrix unit-fast cleanup ( #121356 )
2026-08-09 19:44:44 -07:00
Peter Steinberger
f44c5e2e5e
fix(plugins): surface manifest-only bundled capabilities ( #121354 )
...
Use a manifest-first inventory with independent coverage for manifest-only bundled capabilities.
Retire the undocumented thread-ownership plugin while Doctor removes stale references.
Document Talk voice and persist only provider-scoped voice selection.
Closes #121353
2026-08-09 19:43:49 -07:00
Peter Steinberger
1c95854163
refactor(media): fold per-kind alias shells into per-concern modules ( #121302 )
...
* refactor(media): fold per-kind alias shells into per-concern modules
* test(ci): retarget media test inventories after shell fold
2026-08-09 18:19:38 -07:00
Peter Steinberger
bd6c6aaef2
refactor(ws): consolidate raw WebSocket payload decoding ( #121268 )
...
* refactor(ws): consolidate raw data conversion
* fix(scripts): keep gateway client source-loadable
* refactor(ws): share plugin frame decoding
2026-08-09 16:32:18 -07:00
Peter Steinberger
ce53f7e82e
refactor(agents)!: remove the session write lease ( #121113 )
...
* refactor(agents): remove session write lease
* refactor(plugin-sdk): deprecate session write lease
* refactor(doctor): remove session lock checks
* test(agents): remove session lease fixtures
* test(agents): align writer rebound assertion
* refactor(infra): remove retired session lock exports
* test(tooling): preserve embedded abort race shard
2026-08-09 15:30:48 -07:00
Peter Steinberger
0ef798d28d
fix(gateway): keep hello authorization aligned with RPC access ( #120888 )
...
* fix(gateway): separate socket and device token scopes
* chore(i18n): refresh native source baseline
* style(ios): keep gateway channel within lint limit
* refactor(gateway): simplify scope metadata decoding
* ci(ui): isolate real-gateway e2e suites
* docs(ci): align runner table formatting
* chore(plugin-sdk): refresh api baseline
* ci(ui): route real-gateway retries to hosted runners
* chore(plugin-sdk): repair generated api baseline
* test(ui): select Labs toggles by title
* fix(gateway): preserve stored scopes without wire metadata
2026-08-09 14:50:07 -07:00
Peter Steinberger
c70aee247e
refactor(scripts): migrate JavaScript tools to TypeScript ( #121005 )
...
* refactor(scripts): migrate JavaScript tools to TypeScript
* fix(ci): keep changed-scope preflight zero-install
* fix(ci): preserve zero-install script owners
* fix(ci): complete script migration follow-through
* fix(release): keep stable closeout zero-install
* fix(scripts): preserve standalone execution boundaries
* fix(scripts): repair standalone loader boundaries
* fix(scripts): normalize gateway observation ids
* fix(scripts): keep Docker packager standalone
* test(scripts): preserve rebase cleanup helpers
* test(sessions): use tracked temp directory
2026-08-09 07:21:35 -07:00
Peter Steinberger
8b0735e89f
refactor(memory)!: remove the QMD backend; builtin is the only memory engine ( #120936 )
...
* refactor(memory): remove qmd backend
Make builtin the sole memory-core engine, rename the retained session helper barrel, retire QMD config with doctor migrations, and remove QMD runtime/UI/policy surfaces.
* docs(memory): remove qmd backend guidance
Delete the QMD concept page, rewrite memory documentation for builtin retrieval, and remove QMD from navigation and taxonomy source.
* refactor(memory): remove qmd-only leftovers
* refactor(memory): finish qmd integration cleanup
* build(deps): align root string-width types
* build(deps): model root string-width tooling
* refactor(memory): align qmd removal ui and docs
* fix(memory): preserve qmd external paths in doctor
* test(memory): remove obsolete backend probe case
* test(plugin-sdk): refresh private type baseline
2026-08-09 03:05:47 -07:00
Peter Steinberger
5ea44f5916
refactor(ui): remove dead Control UI weight ( #120870 )
...
* refactor(ui): remove dead Control UI weight
* test(ui): trim redundant preview fixture
* fix(ui): preserve agent file preview behavior
2026-08-08 22:22:32 -07:00
Josh Avant
a345ede685
fix(codex): preserve configured MCP tools in scheduled turns ( #120366 )
2026-08-08 19:25:39 -05:00
Vincent Koc
a901261754
fix(test): keep fork E2E setup builds observable ( #120653 )
...
* fix(test): stream E2E setup build progress
* fix(test): keep E2E setup builds in runner group
* fix(test): own E2E setup streams and signals
* test(ci): route E2E setup regression correctly
2026-08-09 02:53:38 +08:00
Peter Steinberger
40385bb5c1
test(e2e): isolate shared build artifacts ( #120628 )
2026-08-08 09:21:50 -07:00
joshavant
07680362ff
Revert "refactor(agents): propagate exact attribution across runtimes"
...
This reverts commit df31882c38 .
2026-08-07 18:40:17 -05:00
joshavant
d4c9a4d8f1
Revert "feat(audit): preserve exact agent execution provenance"
...
This reverts commit 79b8775bc9 .
2026-08-07 18:40:17 -05:00
Vincent Koc
79b8775bc9
feat(audit): preserve exact agent execution provenance
2026-08-07 15:27:14 +08:00
Vincent Koc
df31882c38
refactor(agents): propagate exact attribution across runtimes
2026-08-07 13:44:39 +08:00
Peter Steinberger
6e4d387fed
fix(test): keep TUI PTY suites in their owner lane ( #119787 )
2026-08-05 18:28:17 -07:00
Peter Steinberger
b5d41f9005
fix(test): bound direct gateway server runs ( #119184 )
2026-08-04 03:38:39 -07:00
Vincent Koc
4bdf9ca789
fix(tui): block terminal controls in system messages ( #118998 )
...
* fix(tui): sanitize rendered system messages
* test(tui): keep PTY safety proof within lint budget
* test(tui): clarify terminal safety PTY proof
* test(tui): de-churn terminal safety harness
* fix(tui): sanitize connection status output
* test(tui): split PTY harness support
* fix(tui): sanitize selector and footer output
* fix(tui): harden terminal display boundaries
* fix(tui): harden terminal display boundaries
* fix(tui): harden terminal output boundaries
* test(tui): repair terminal safety proof
* test(tui): harden terminal safety oracle
* test(tui): type OSC terminator candidates
* fix(tui): authenticate current terminal rendering
* fix(tui): harden terminal output safety evidence
* test(tui): keep PTY cell type internal
* test(tui): reject literal tabs in PTY oracle
* test(tui): reject literal backspace in PTY oracle
2026-08-04 16:35:41 +08:00
Vincent Koc
45643863d7
fix(test): isolate shared state between test files ( #118781 )
...
* fix(test): isolate session suspension state
* fix(test): isolate nonzero worker exit coverage
* fix(test): keep suspension reset generations monotonic
* fix(test): isolate archived session UI mocks
* fix(deps): patch fast-uri and undici advisories
* fix(test): isolate stateful UI suites
2026-08-04 15:26:22 +08:00
Peter Steinberger
4553fada9c
fix(test): keep ui-e2e global setup lint-clean ( #118763 )
2026-08-03 09:55:37 -07:00
Peter Steinberger
73535e4ede
improve(ui): cut E2E shard runtime by reusing the bundle ( #118697 )
...
* test(ui): reuse bundled runtime across e2e files
* test(ui): isolate bundled E2E build output
* test(ui): align bundled E2E output paths
* test(ui): register E2E setup entrypoints
* test(ui): preserve bundled E2E gateway semantics
---------
Co-authored-by: Peter Steinberger <steipete@mac-studio-sf2.local >
2026-08-03 08:01:44 -07:00
Peter Steinberger
c40faefcf5
fix(test): wait for gateway readiness and isolate reset-heavy suite ( #117725 )
...
* fix(ci): isolate gateway readiness and subagent reset tests
* fix(ci): isolate gateway readiness and subagent reset tests
* fix(test): wait for gateway readiness in shared fixture
* test(agents): isolate announce loop guard suite
* fix(test): observe gateway exit during readiness
* test: narrow gateway readiness process contract
2026-08-03 00:12:34 -07:00
Peter Steinberger
7aaf3023fc
fix(agents): make subagent restart recovery deterministic
...
Make subagent restart recovery registry-owned, durable before side effects, generation-fenced, and deterministic across cold restarts.
2026-08-03 11:57:51 +08:00
Peter Steinberger
0a1d103189
refactor(test): consolidate extension vitest configs ( #118366 )
2026-08-02 19:55:36 -07:00