Peter Steinberger
10a1a43f4b
fix(zalo): keep packaged setup wizard loadable ( #122902 )
...
* fix(zalo): package setup runtime surface
* fix(tooling): track setup surface artifacts
2026-08-12 18:49:41 -07:00
Peter Steinberger
d003e08756
refactor(plugin-sdk): remove final test-only facades ( #122844 )
2026-08-12 15:28:22 -07:00
Peter Steinberger
5fda9d09f0
feat(deploy): add experimental Cloudflare deployment template ( #122768 )
...
* feat(deploy): add experimental Cloudflare template
* fix(deploy): keep container SSH debug access opt-in
* fix(deploy): satisfy scripts tsgo lane and model wrangler entrypoint in knip
* fix(deploy): model wrangler-consumed exports and isolated dependency in knip
The Worker default export and Durable Object class are instantiated by
wrangler from wrangler.jsonc, and @cloudflare/containers lives in the
template's isolated package.json — modeled per the deadcode checks' own
guidance rather than root-manifest changes.
* docs(deploy): align SSH bootstrap flow with the disabled-by-default policy
2026-08-12 14:07:48 -07:00
Peter Steinberger
79380000e0
refactor(plugin-sdk): remove test-only facades ( #122807 )
2026-08-12 13:57:07 -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
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
8d3f3377da
fix(ci): make Control UI artifact validation consistent ( #122086 )
2026-08-12 00:11:22 +08:00
Peter Steinberger
1ccd701808
chore(deadcode): remove stale Knip scaffolding ( #122069 )
2026-08-11 08:15:11 -07:00
Peter Steinberger
226c699a23
feat(ai): add provider video input contract ( #121887 )
...
* feat(llm): add user video input contract
* fix(ai): preserve structured tool results
* refactor(ai): isolate provider video input types
* style(ai): format provider transform imports
* chore(ai): register provider type entrypoint
2026-08-11 03:08:27 -07:00
Peter Steinberger
fada067277
feat(browser): add zero-click Chrome extension bootstrap ( #121586 )
...
* feat(browser): add zero-click extension bootstrap
Pre-register deterministic path-derived extension IDs and install a strict native messaging host.
Keep the popup and options UI minimal while removing the obsolete copilot and page-share flows.
* fix(browser): satisfy native bootstrap CI guards
* test(browser): isolate native bootstrap Chrome roots
* test(browser): flush native bootstrap profile before status
* test(browser): seed Linux native bootstrap identity
* fix(browser): preserve native bootstrap upgrade safety
Allow immutable root-owned package inputs while keeping mutable state, manifests, and launchers user-owned. Preserve all retired copilot keys whenever active or unrecognized recovery custody remains.
* fix(browser): preserve pending copilot custody
Retired cleanup now removes copilot state only when the durable registry is exactly empty. Any session, archive, malformed value, future shape, or read failure preserves every retired key.
* fix(browser): guard native bootstrap upgrades
Fail closed while retired copilot custody remains and make discard durable across partial failures.
Require exact launcher-embedded origins and repair full launcher drift without accepting mismatched registrations.
* fix(browser): remove stale layout export
* chore(release): leave changelog to release flow
2026-08-10 19:31:13 -07:00
Peter Steinberger
9175530fc1
fix(ci): heal skills reconciliation fallout ( #121751 )
...
* test(skills): cover collection review through scheduler
* test(skills): preserve scheduler failure signals
2026-08-10 16:34:03 -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
db879e73fa
fix(ci): heal dead-export scan and refresh plugin-sdk baseline
...
collection-rollback's directory helper lost its external caller in
bdf202ccc8 — make it local; register collection-review's focused-test
seam per the knip ignoreIssues convention; regenerate the API baseline
after recent harness/channel contract drift.
2026-08-10 14:34:54 -07:00
Peter Steinberger
3b3c540896
refactor: remove dead branches and test-only helpers ( #121345 )
...
* refactor: remove dead branches and test-only helpers
* fix: preserve codex cleanup error causes
* fix: preserve gateway error code compatibility
* chore: update plugin sdk api baseline
* docs: fix live cache runner path
2026-08-10 06:47:43 -07:00
Ayaan Zaidi
4b0151682e
refactor(commitments): remove inferred follow-up subsystem
...
Remove hidden follow-up extraction, heartbeat delivery, CLI, docs, and supporting tests/tooling. Existing commitment records remain inert pending separately approved cleanup.
Co-authored-by: Ayaan Zaidi <hi@obviy.us >
2026-08-10 13:48:32 +05:30
Peter Steinberger
145ec3778f
refactor(agents): consolidate failover classification into one substrate ( #121341 )
...
* refactor(agents): consolidate failover classification substrate
* chore(agents): align failover refactor guards
* fix(agents): preserve leading 429 status handling
* perf(agents): retain lazy failover hook gating
* chore(agents): refresh failover guard artifacts
2026-08-09 23:58:44 -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
b61bc5cd8d
fix: sync Cloud Worker workspaces from macOS gateways ( #121027 )
...
* fix(cloud-workers): support Apple openrsync receivers
* build: register worker receiver entry
* fix(cloud-workers): narrow receiver invocation types
* test(cloud-workers): resolve real rsync before wrapping
2026-08-09 03:51:24 -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
Vincent Koc
a3b0982148
perf(tasks): benchmark durable task registration churn ( #119828 )
...
* perf(tasks): add durable registry churn benchmark
* test(tasks): cover registry churn benchmark contract
* chore(tasks): wire registry churn benchmark
2026-08-06 18:37:30 +08:00
Vincent Koc
b4e82951e7
perf(agents): isolate concurrency benchmark workers ( #119749 )
2026-08-06 06:49:36 +08:00
Peter Steinberger
3ec8af66d1
refactor(openai): simplify ChatGPT OAuth credential flow ( #119628 )
2026-08-05 08:51:41 -07:00
Heming Zeng
9bfe292c86
fix(sessions): keep gateway responsive while large transcript archives are built ( #112424 )
...
* fix(sessions): keep gateway responsive during transcript archiving
* test(sessions): strengthen archive worker coverage
* fix(sessions): bound archive worker concurrency
* test(sessions): normalize rollback paths on Windows
* fix(sessions): load source archive worker on node 22
* fix(sessions): align archive fencing with session windows
* test(sessions): adapt cleanup race to archive worker
* fix(sessions): harden archive worker lifecycle
* style(sessions): format archive lifecycle tests
* fix(sessions): release writer lane during archive work
---------
Co-authored-by: Josh Lehman <josh@martian.engineering >
2026-08-04 14:40:59 -07:00
Vincent Koc
1d446ad2cc
fix(plugins): remove stale load paths during uninstall ( #118930 )
...
* test(qa): prove marketplace plugin updates
* fix(plugins): clean exact install load paths on uninstall
* fix(ci): register marketplace lifecycle assertions
2026-08-03 21:57:54 +00:00
Peter Steinberger
ecc49b5a87
refactor(tts): absorb speech core package ( #118513 )
...
* refactor(tts): absorb speech core package
* fix(tts): preserve runtime SDK exports
* refactor(tts): remove private package exports
* test(tts): align canonical runtime mocks
* test(tts): complete canonical settings mocks
* chore(plugin-sdk): regenerate API baseline for #118513
2026-08-03 02:25:48 -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
9b8e50b9f6
refactor(scripts): consolidate redundant tooling paths ( #118259 )
2026-08-02 16:20:09 -07:00
Vincent Koc
b35b8e286d
fix(plugins): unblock prerelease validation ( #118103 )
...
* fix(plugins): align compatibility registry identity
* fix(slack): compact response URL native fallbacks
* test(plugins): stabilize prerelease runtime checks
* fix(packaging): include CUA driver in root package
* fix(packaging): declare CUA runtime dependency
* fix(cua): defer native driver loading
2026-08-03 04:48:05 +08:00
Peter Steinberger
4b26a15a1f
refactor: remove dead internal exports ( #117819 )
2026-08-01 22:01:38 -07:00
Peter Steinberger
8a36e0470c
Build export HTML vendor assets from pinned dependencies ( #117583 )
...
* build: generate export html vendor assets
* build: declare marked generator contract
* fix(build): preserve export asset working root
* fix(build): preserve postbuild root ownership
* test(build): update Docker TypeScript step count
2026-08-01 15:03:35 -07:00
Peter Steinberger
9e43844264
build: generate native Canvas resources on demand ( #117424 )
2026-08-01 08:16:56 -07:00
Peter Steinberger
e4d1b7e0d3
refactor(plugins): move plugin contributions into the registry bundle ( #117372 )
...
* refactor(plugins): move plugin contributions into the registry bundle
* fix(plugins): guard embedding owner union and drop unused test-util imports
* fix(plugins): break registry facade import cycles
* fix(plugins): remove obsolete registry snapshot seams
* test(gateway): preserve plugin runtime mock exports
* test(auto-reply): install builder registry in diagnostics fixture
* test(plugins): activate registry-backed capability fixtures
2026-08-01 06:57:01 -07:00
Peter Steinberger
b5a59e0a7d
refactor(docker): consolidate E2E scenario helpers ( #117359 )
...
* refactor(docker): consolidate E2E scenario helpers
* fix(ci): retain release harness entry
* test(docker): complete package helper fixture
2026-08-01 05:48:28 -07:00
Peter Steinberger
bc4221a07e
fix(docker): keep custom-port containers healthy ( #116639 )
...
* fix(docker): probe the active gateway port
* fix(docker): register the healthcheck runtime boundary
2026-07-30 20:47:03 -07:00
WhatsSkiLL
e5cee36b46
fix(memory): retry failed queued session targets ( #115923 )
...
* fix(memory): retain failed queued sync targets
* fix(memory): drain retained targets on idle sync
* test(memory): prove idle queued sync recovery
* fix(memory): preserve queued sync ownership
* fix(memory): avoid queued sync self-deadlock
* fix(memory): stop queued recovery during close
* fix(memory): clear retained sync state on close
* test(memory): prove live queued rejection transition
* fix(memory): enforce sync repro invariants
* test(memory): bound archive recovery proof
* test(memory): seed archive proof transcript
* test(memory): exercise archived transcript recovery
* chore(knip): register memory sync repro
* fix(memory): reject blank queries before settings
* style(memory): satisfy queue recovery lint
* test(memory): align doctor migration expectations
* test(memory): insert explicit provenance fixture
---------
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-30 02:47:59 -07:00
WhatsSkiLL
c63fdc631f
fix(sessions): release closed SQLite entry caches ( #115794 )
...
* fix(sessions): release closed sqlite entry caches
* chore(ci): register sqlite cache lifetime proof
---------
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com >
2026-07-30 02:06:44 -07:00
Josh Lehman
6beaff450e
fix(codex): avoid transcript mirror snapshot churn ( #115070 )
2026-07-29 11:59:14 -07:00
Vincent Koc
7e08953401
Merge pull request #115839 from openclaw/refactor/status-summary-owner
...
refactor(status): own summary preparation
2026-07-29 22:07:31 +08:00
Peter Steinberger
4c4aa2ed12
feat(gateway): manage audio and video attachments end to end ( #115842 )
...
* feat(gateway): manage audio and video attachments
* feat(gateway): preserve generated media metadata
* fix(gateway): align seeded managed media
* fix(gateway): scope pending media trust by URL
* fix(gateway): split managed media by trust
* fix(gateway): require terminal media trust unanimity
* fix(gateway): align managed media metadata types
* fix(gateway): refresh managed media contracts
* chore(ci): model managed media test seams
* test(sessions): expect canonical media kinds
2026-07-29 07:27:36 -04:00
Vincent Koc
b335c337bf
fix(status): preserve summary facade
2026-07-29 18:22:31 +08:00
Kevin Lin
8704d3d83f
fix(gateway): prevent model owner mismatch after plugin activation ( #115747 )
...
* fix(gateway): publish plugin runtime config at startup
* chore: allow gateway startup test seam
2026-07-29 01:33:02 -07:00
Vincent Koc
9daa60961c
fix(agents): serialize sandbox provisioning ( #115645 )
...
* fix(agents): serialize sandbox provisioning
* test(docker): add sandbox browser sidecar e2e
* fix(ci): register sandbox browser e2e entrypoint
* fix(ci): restore code mode matrix checks
2026-07-29 14:50:15 +08:00
Peter Steinberger
053384fa01
refactor(ui): adopt @lit/task for async data lifecycle ( #115131 )
...
* refactor(ui): adopt @lit/task for async data lifecycle
- migrate chat diff/discussion, new-session discovery, and MCP app setup reads
- migrate usage, plugins, transcript/checkpoint, worktree, memory-import, and model-setup reads
- delete read-lane request counters, abort-controller epochs, and current-request predicates while retaining mutation epochs and keyed caches
* chore(ui): drop dead plugin search helper (knip)
* chore(deps): allowlist @lit/task as root UI-workspace dependency in knip
* fix(ui): preserve usage refresh lifecycle
* test(ui): source workboard fixture copy from en locale (raw-copy gate)
* test(ui): read workboard fixture copy via t() (typed locale access)
* style: format test-support imports
2026-07-28 08:37:47 -04:00
Peter Steinberger
a1e0c9ea09
refactor(packages): DM-policy contract suite, dead routes, package folds ( #114776 )
...
* test(channels): share DM policy contract suite
* refactor(memory): remove dead host CLI routes
* refactor(acp): use canonical normalization helpers
* refactor(web): fold provider runtime into core
* refactor(packages): remove dead runtime exports
* chore(knip): drop retired ACP entry roots
2026-07-27 20:20:13 -04:00
Peter Steinberger
7e8afba703
feat(plugins): mirror local coding sessions to a remote Beam receiver ( #114735 )
...
* feat(plugins): mirror local coding sessions to a remote Beam receiver
* fix(plugins): satisfy static gates for the Beam mirror seam
* fix(plugins): import the config type from the narrow contracts subpath
* fix(plugins): require catalog consent and loopback-only plaintext for the Beam mirror
2026-07-27 17:31:34 -04:00
Peter Steinberger
3807591ff4
build(lint): adopt stylelint for Control UI css templates and stylesheets ( #113971 )
2026-07-25 19:13:46 -07:00
Peter Steinberger
bde7033ac4
feat(models): dynamic model catalogs via hosted refresh overlay ( #113660 )
...
* feat(models): add remote catalog core
* feat(config): add model catalog refresh settings
* feat(models): wire remote catalog refresh
* ci(models): publish hosted catalog
* docs(models): document catalog refresh
* test(models): allow catalog count growth
* refactor(models): preserve safe catalog merge
* ci(models): publish catalog through GitHub
* docs(models): link public catalog history
* fix(model-catalog): enforce Kysely store access
* fix(model-catalog): trim unused catalog exports
* docs(models): refresh generated docs map
2026-07-25 12:15:05 -07:00
Peter Steinberger
3d1369ff4f
test(telegram): consolidate bot test harness ( #113571 )
...
* test(telegram): consolidate bot test harness
* test(plugin-sdk): expose isolated test state
Promote the isolated OpenClaw test-state lifecycle through a narrow published Plugin SDK subpath so extension tests no longer import private core helpers. This intentional SDK surface addition is maintainer-approved.
* test(telegram): use public test-state seam
* test(plugin-sdk): keep test state local-only
Match the existing channel test-helper boundary: bundled extension tests can import the focused SDK source entrypoint, while ordinary builds and the published npm package exclude it. The earlier public classification existed only on this unmerged PR branch and was never a shipped contract.
* test(plugins): map test-state in package boundaries
2026-07-25 05:28:26 -07:00
joshavant
f153858045
fix(onepassword): make SecretRef setup production-safe
2026-07-25 06:03:30 -05:00