Peter Steinberger
ac28f4d558
fix: release channel delivery resources reliably ( #117855 )
...
* fix(channels): consolidate delivery lifecycle ownership
* test(msteams): match release mock contract
* test(plugin-sdk): satisfy promise executor lint
* chore(plugin-sdk): regenerate API baseline for delivery-correlation + fetch-runtime exports
2026-08-02 00:24:47 -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
385f1dee16
docs: generate docs map at publish time ( #117398 )
...
* docs: generate docs map at publish time
* fix: canonicalize Docker pack entry path
* fix: preserve package lifecycle ownership
2026-08-01 07:01:43 -07:00
Sasan
6938f7dddb
fix: allow gateway service commands for named profiles ( #116314 )
...
* fix: gateway service commands refuse a named profile or relocated OPENCLAW_HOME
- Resolve the default install identity against the canonical state directory
for the active OpenClaw home and profile instead of the unprofiled OS
account default.
- `--profile <name>` / `--dev` project `.openclaw-<profile>` state and config
paths, so every named profile was classified as isolated state and refused
`install`, `start`, `stop`, `restart`, `uninstall`, Doctor service repair,
and self-update service handling.
- `OPENCLAW_HOME` relocates all OpenClaw path defaults and is documented for
running as a dedicated service user; a relocated home is now an install
identity. `HOME` alone still is not.
- An `OPENCLAW_STATE_DIR` or `OPENCLAW_CONFIG_PATH` pointing outside those
canonical paths is still treated as isolated state.
- Recovery guidance in the refusal message now names the paths that must match.
Verified: focused vitest shards for the changed suites plus the daemon, CLI,
and doctor suites that consume the identity check; tsgo core and core-test
lanes; oxlint; docs format, MDX, link, and map checks.
* fix(gateway): keep relocated homes isolated
* fix(config): validate service profile identity
* fix(daemon): enforce named-profile service ownership
* fix(update): reject drifted service selectors before probes
* test(windows): prove scheduled task lifecycle
* test(windows): harden scheduled task proof cleanup
* test(windows): bind lifecycle proof to checkout
* test(windows): normalize cleanup exit status
* test(windows): verify effective task privilege
* test(windows): protect scheduled task proof roots
* test(windows): prove listener-owned task lifecycle
* test(windows): fix scheduled task proof contracts
* test(windows): remove redundant mock coercions
* test(windows): measure fallback before task probes
* test(windows): prove scheduled task process origin
* fix(gateway): preserve unmanaged restart fallback
* test(gateway): cover denied restart ownership
* test(gateway): keep restart helper types private
* test(gateway): classify lifecycle helpers as test code
---------
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-08-01 11:28:39 +08:00
Vincent Koc
89aadef6ef
feat(plugins): externalize iMessage channel ( #117101 )
2026-08-01 08:01:18 +08:00
Vincent Koc
61fb29e90a
feat(plugins): externalize OpenCode Go provider ( #117064 )
2026-08-01 06:31:19 +08:00
Vincent Koc
e73250f54b
feat(plugins): externalize OpenCode provider ( #117035 )
...
* feat(plugins): externalize OpenCode provider
* docs: refresh OpenCode provider map
2026-08-01 05:07:35 +08:00
Vincent Koc
e84e2a49fc
feat(plugins): externalize NovitaAI provider ( #117007 )
2026-08-01 03:53:46 +08:00
Vincent Koc
8b93fd963c
feat(plugins): externalize Mistral provider ( #116919 )
...
* feat(plugins): externalize Mistral provider
* fix(update): preserve external provider models during repair
* chore(release): keep Mistral note in PR body
2026-08-01 03:04:12 +08:00
Vincent Koc
a1026663ae
feat(plugins): externalize ComfyUI provider ( #116888 )
2026-07-31 23:26:51 +08:00
Vincent Koc
e93de36081
feat(plugins): externalize BytePlus provider ( #116866 )
2026-07-31 22:37:47 +08:00
Vincent Koc
c2e5b3a67c
feat(ci): add workload-aware Crabbox routing
2026-07-31 22:28:20 +08:00
Vincent Koc
fab2c33cad
feat(plugins): externalize Xiaomi provider ( #116861 )
2026-07-31 22:02:07 +08:00
Vincent Koc
b2b62b2e1e
feat(plugins): externalize Volcengine provider ( #116854 )
2026-07-31 21:28:01 +08:00
Vincent Koc
ba1a6722bb
feat(plugins): externalize Vydra provider ( #116813 )
2026-07-31 20:35:43 +08:00
Vincent Koc
eb55c8ea8f
feat(plugins): externalize Voyage embeddings ( #116785 )
...
* feat(voyage): externalize embedding provider
* fix(voyage): drop stale bundled description
2026-07-31 19:52:33 +08:00
Vincent Koc
6830820755
feat(plugins): externalize DuckDuckGo search ( #116740 )
2026-07-31 18:49:07 +08:00
Vincent Koc
a550827dad
feat(plugins): externalize Synthetic provider ( #116720 )
2026-07-31 17:19:43 +08:00
Vincent Koc
fa4cc51a87
feat(plugins): externalize Teams and Zoom meetings ( #116682 )
2026-07-31 14:10:46 +08:00
Vincent Koc
c892a712e6
feat(plugins): externalize Cohere and Meta providers ( #116662 )
...
* feat(plugins): externalize Cohere and Meta providers
* docs(changelog): note provider externalization
* chore: keep changelog release-owned
2026-07-31 12:53:01 +08:00
Vincent Koc
d5ab7d7d03
fix(ci): run fs-safe removal Windows coverage ( #116510 )
...
* test(ci): run fs-safe remove suite on Windows
* test(infra): correct Windows rebind race expectation
* test(infra): exercise Windows rebind hook
2026-07-31 09:58:34 +08:00
Vincent Koc
3b355879b8
test(infra): run exec allowlist suite on Windows ( #116492 )
2026-07-31 01:46:19 +08:00
Vincent Koc
26f107071e
test(agents): run exec preflight suite on Windows ( #116469 )
2026-07-31 00:57:04 +08:00
Vincent Koc
85466bd89e
test(mxc): run Windows-only suites in CI ( #116451 )
2026-07-31 00:10:22 +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
Vincent Koc
8a3f5c862b
fix(plugin-sdk): ship documented public typings ( #116345 )
...
* fix(plugin-sdk): ship documented public typings
* fix(plugin-sdk): refresh public contract artifacts
2026-07-30 18:20:07 +08:00
pash-openai
e52354ea13
fix(build): pin typebox to a published release ( #116333 )
2026-07-30 09:58:51 +00:00
Josh Lehman
6beaff450e
fix(codex): avoid transcript mirror snapshot churn ( #115070 )
2026-07-29 11:59:14 -07:00
Vincent Koc
951e7a39bd
fix(protocol): make Swift model checks non-mutating ( #115793 )
...
* fix(protocol): make Swift drift checks non-mutating
* test(protocol): cover core Swift gateway frames
* docs(protocol): clarify Swift model update flow
2026-07-29 18:17:36 +08: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
e8524a5839
feat: add Fish Audio S2.1 and local MLX speech ( #115790 )
...
* feat: add Fish Audio speech support
* chore: remove unused speech exports
* chore: keep Fish API constant private
* test: remove stale code mode import
* style: use bracket access for Fish voice ids
* test: restore QA evidence validator import
2026-07-29 05:15:33 -04: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
Vincent Koc
1c36054494
feat(agents): add code mode model acceptance matrix ( #115305 )
...
* feat(agents): add code mode model acceptance matrix
* fix(qa): emit canonical Code Mode matrix evidence
* fix(qa): reserve code mode matrix output safely
* fix(qa): require fresh matrix builds
* fix(qa): protect matrix evidence paths
2026-07-29 14:12:20 +08:00
Manan Bansal
ec56892b74
fix(infra): resolve ssh client from trusted system dirs ( #83289 ) ( #93030 )
...
resolveSshConfig and startSshPortForward spawned a hard-coded /usr/bin/ssh,
so SSH config discovery and gateway tunneling failed wherever the system ssh
client lives elsewhere: Windows (built-in OpenSSH under System32\OpenSSH) and
NixOS (/run/current-system/sw/bin).
Route both helpers through the existing resolveSystemBin("ssh", { trust:
"strict" }) resolver, and add the Windows built-in OpenSSH directory to the
resolver's trusted Windows locations (it had System32 but not the
System32\OpenSSH subdirectory where ssh.exe actually ships). Fail closed with
a clear diagnostic when no system ssh client is present.
Closes #83289 .
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-28 18:35:58 -04: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
ToToKr
d57e228c3a
docs(mistral): fix broken adjustable reasoning docs URL ( #114867 )
...
* docs(mistral): fix broken adjustable reasoning docs URL
The linked Mistral page 404s; the reasoning docs now live one path segment up. Verified: old URL returns HTTP 404, new URL returns HTTP 200 and documents reasoning_effort. oxfmt --check passed on the changed file.
* fix(ci): audit links inside docs components
* test(cli): isolate root help exit fixture
* test(ci): split embedded agent shard
* fix(ci): harden docs link projection
* test(ci): satisfy docs audit strict types
* test(ci): isolate incomplete-turn harness
* test(cli): document root help fixture boundary
* test(ci): isolate overflow compaction harness
* test(ci): isolate contaminated agent model tests
* test(ci): update isolated prefix routing
* test(ci): bound loaded streaming HTTP cases
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-28 06:55:02 -04:00
Chris M.
37bddc75cc
fix(android): finish Wear OS release readiness [AI-assisted] ( #110425 )
...
* fix(android): harden Wear release quality
* fix(android): use Wear minimum touch targets
Co-authored-by: Chris Mish <chrism@promethean-dynamic.com >
* fix(android): localize Wear accessibility actions
Co-authored-by: Chris Mish <chrism@promethean-dynamic.com >
* fix(android): preserve dictation without live voice
Co-authored-by: Chris Mish <chrism@promethean-dynamic.com >
* fix(android): isolate Wear locale source changes
Co-authored-by: Chris Mish <chrism@promethean-dynamic.com >
* fix(android): keep Wear dictate preview exclusive
Co-authored-by: Chris Mish <chrism@promethean-dynamic.com >
* fix(android): separate large-font Wear hit targets
Co-authored-by: Chris Mish <chrism@promethean-dynamic.com >
* test(pr): isolate review artifact ripgrep fixture
* ci: extend embedded-agent fork watchdog
* refactor(android): clarify Wear voice action availability
* style(android): preserve Wear locale source lines
* chore(i18n): refresh native source inventory
* style(android): restore Wear label indentation
---------
Co-authored-by: Chris Mish <chrism@promethean-dynamic.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-28 05:41:53 -04:00
Vincent Koc
9d5bec8487
fix(deps): remediate tar and Hono advisories ( #115029 )
2026-07-28 16:48:04 +08: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
d5e46646f2
refactor(gateway-protocol): derive schema registries from owner fragments ( #114817 )
...
* refactor(protocol): share schema owner barrel
* refactor(protocol): extract ordered schema fragments
* refactor(protocol): compose public schema registry
* docs(protocol): document schema fragments
* ci(protocol): guard schema registry structure
* style(protocol): satisfy registry guard lint
2026-07-27 21:08:20 -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
d9e6d00261
fix(agents): safely parse Code Mode module boundaries ( #114651 )
2026-07-27 13:50:40 -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
Patrick Erichsen
aa0d3192d2
feat(channels): add Buzz channel plugin
2026-07-26 14:09:23 +01:00
Peter Steinberger
f6131a4fbf
build(deps): remove npm shrinkwrap; mirror pnpm lock into transient package locks ( #114006 )
...
* build(deps): remove npm shrinkwrap; mirror pnpm lock into transient package locks
npm 12 removed shrinkwrap (command + tarball/root loading). Delete all 82
committed npm-shrinkwrap.json files and stop publishing lockfiles; keep
pnpm-lock.yaml as the single reviewed dependency boundary. The generator
becomes scripts/generate-npm-package-lock.mjs and feeds plugin bundling via
a transient package-lock.json + npm ci (works on npm 11 and 12). Tarball
validation treats the published 2026.7.2 beta train as a shrinkwrap
transition; self-update npm detection now uses install topology instead of
the shipped shrinkwrap.
* fix(deps): repair lint, deadcode, and test-type lanes for the npm 12 migration
- sort integrity comparisons with an explicit comparator (oxlint)
- keep resolveBunGlobalNodeModules module-local (knip unused-export gate)
- model npm pack --json as npm<=11 array / npm 12 name-keyed object
- default calver destructuring in the tarball test fixture
2026-07-26 01:29:55 -04:00
Peter Steinberger
511a76b23b
build: pin stylelint toolchain dev-dependencies exactly
...
The direct dependency pin guard fails on main since #113971 added four
caret-ranged devDependencies; resolved versions equal the range minimums,
so this only normalizes the specs in package.json and the lockfile
specifier fields.
2026-07-25 20:02:29 -07: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
4859d524ed
refactor(tasks): classify harness-owned subagent rows without plugin ids ( #113964 )
...
* refactor(tasks): classify harness-owned subagent rows without plugin ids
* refactor(plugin-sdk): require taskKind for harness-owned subagent runtimes
* docs(tasks): record harness-ownership invariant at the predicate
* test(plugin-sdk): declare harness task kind in scope fixtures
2026-07-25 18:41:13 -07:00
Peter Steinberger
d5a3740707
fix(package): prevent installs from deleting required runtime modules ( #113821 )
...
* fix(package): preserve imported runtime chunks after install
* fix(package): isolate public build from private QA
* test(package): prove installed postinstall dependency graph
2026-07-25 14:05:41 -07:00