Vincent Koc
ba1a6722bb
feat(plugins): externalize Vydra provider ( #116813 )
2026-07-31 20:35:43 +08:00
Peter Steinberger
c52bc53745
fix(plugins): clean up partial service startup once ( #116804 )
...
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-07-31 04:57:29 -07: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
wangyan2026
d865c9b8f5
fix(build): fail closed on symlinked build output roots ( #116705 )
...
Reject symlinked generated-output roots before build and postbuild mutation paths can recurse into unrelated targets. Cover aggregate, UI, export-template, bundled-plugin, Docker-prune, and plugin-runtime entry points with regression tests and migration guidance.
Closes #116498
Co-authored-by: WangYan <wang.yan29@xydigit.com >
2026-07-31 19:37:05 +08:00
Peter Steinberger
4e4f76f151
fix(cli): make status and provider diagnostics complete ( #116776 )
...
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-07-31 04:10:36 -07:00
Vincent Koc
6830820755
feat(plugins): externalize DuckDuckGo search ( #116740 )
2026-07-31 18:49:07 +08:00
Vincent Koc
58580fff2f
fix(plugins): require explicit source external startup ( #116759 )
2026-07-31 18:18:51 +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
877ba9eb7b
perf(cli): trim status cold imports ( #116668 )
2026-07-31 13:56:50 +08:00
Vincent Koc
ed0dae17bc
fix(plugins): remove managed peers after npm override errors ( #116675 )
...
* fix(plugins): retry npm override cleanup on uninstall
* fix(plugins): satisfy uninstall cleanup checks
2026-07-31 13:32:51 +08:00
Vincent Koc
b3ce00b480
refactor(schema): share config validation runtime ( #116622 )
2026-07-31 12:40:48 +08:00
Vincent Koc
b015925bc3
test(core): remove dead and duplicate coverage ( #116641 )
...
* test(markdown): make code table style coverage assertive
* test(core): remove duplicate regression coverage
2026-07-31 11:48:46 +08:00
Peter Steinberger
29a92e98ac
fix(plugins): recheck cached tool availability ( #116625 )
2026-07-30 19:51:18 -07:00
Vincent Koc
3a6ee79a72
fix(plugins): keep registry sqlite root consistent ( #116427 )
2026-07-31 08:51:09 +08:00
Benjamin Badejo
505d7b9f52
fix(state): preserve doctor import TTL
2026-07-30 16:07:51 -05:00
Josh Avant
ce67ffb70e
feat(agents): add tool-free isolated completion ( #114343 )
...
* feat: add isolated pure-inference completion
* fix(google): block ambient system prompt writes
* docs: refresh generated map
2026-07-30 13:24:45 -05:00
Vincent Koc
ca1328dddb
Merge pull request #116285 from openclaw/fix/control-ui-session-dedupe
...
* origin/fix/control-ui-session-dedupe:
chore: leave release notes to release flow
fix(ui): deduplicate gateway-native session hosts
2026-07-30 22:53:53 +08:00
Omar Shahine
b82a59a798
feat(cli): add openclaw automations alias and reword cron display prose ( #114854 )
...
* feat(cli): add openclaw automations alias and reword cron display prose
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WhJ8EiMXue6ADLmHfb7FL6
* test(doctor): update cron doctor prose assertions for automations wording
* fix(plugins): include command aliases in plugin CLI collision detection
Codex review finding on the automations alias: plugin CLI registration
seeded existingCommands from command names only, so a plugin exposing a
top-level command matching an alias-only root name (automations, terminal,
chat) would crash Commander at startup instead of being skipped. Seed from
names plus aliases; regression test covers the alias path.
* fix(cli): rename residual cron prose in CLI and gateway RPC errors
Found in combined dev-gateway E2E: automation not found / unknown automation
id errors, add/edit prose, docs tip, skills-cli mention, and the gateway RPC
not-found message. The CLI missing-get matcher accepts both message forms so
older gateways keep resolving name lookups.
* fix(gateway): keep cron.get missing wording as a wire contract for older CLI matchers
ClawSweeper rank-up: shipped CLI matchers parse 'cron job not found: <id>'
before the name-lookup fallback; the rename stays CLI-display only. Adds a
regression pinning the exact wire form.
* fix(cli): rename doctor and task-summary cron prose flagged in review
Repair-plan advisories, session-registry task summary, and the heartbeat
migration health check now say automations; recreate hints use the
openclaw automations CLI form.
---------
Co-authored-by: Omar Shahine <10343873+omarshahine@users.noreply.github.com >
Co-authored-by: Claude Fable 5 <noreply@anthropic.com >
2026-07-30 07:16:57 -07: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
Peter Steinberger
a4c6efc998
fix(cli): preserve installed plugins in agent exec ( #116336 )
2026-07-30 03:00:17 -07:00
Vincent Koc
6e4f67f084
Merge remote-tracking branch 'origin/main' into fix/control-ui-session-dedupe
...
* origin/main: (25 commits)
fix(qqbot): use Gateway timezone for reminders (#116294 )
test(openai): cover out-of-order named mark acks
docs(openai): clarify cumulative playback marks
test(openai): cover sustained unnamed mark acknowledgements
fix(openai): preserve playback acknowledgement order
test(openai): verify bounded playback acknowledgements
fix(openai): bound realtime playback marks
test(agents): mock incremental registry persistence (#116307 )
fix(memory-core): MEMORY.md compaction deletes user notes written under a promotion-style heading (#116180 )
feat(reply): annotate recent history images (#100866 )
chore(ios): refresh native i18n inventory
fix(ios): isolate capability router handlers
docs(ios): cut 2026.7.22 release notes
docs(hooks): document validation responses
test(qa): assert hook account rejection reasons
fix(gateway): validate hook delivery accounts
perf(gateway): bound prepared runtime startup work (#116261 )
fix(agents): prevent registry stalls during large fan-outs (#116286 )
fix(sqlite): preserve replaced snapshot targets on Windows (#116284 )
fix(ci): load frozen shard runner without repository fetch (#116273 )
...
2026-07-30 16:37:47 +08:00
joshavant
54a6dba0d3
fix(gateway): validate hook delivery accounts
2026-07-30 02:59:06 -05:00
Jason (Json)
a67ad03eea
perf(gateway): bound prepared runtime startup work ( #116261 )
2026-07-30 01:41:35 -06:00
Vincent Koc
bb68389a66
fix(ui): deduplicate gateway-native session hosts
2026-07-30 15:22:37 +08:00
Peter Steinberger
ea42a4612a
fix(plugins): plugin install survives pnpm-only overrides ( #116245 )
...
* fix(plugins): preserve compatible npm overrides on retry
* fix(plugins): keep npm compatibility type internal
* fix(plugins): bound managed override retries
2026-07-29 22:43:34 -07:00
Vincent Koc
814d1fdf1a
fix(test): review Codex runtime scan chunks ( #116212 )
...
* fix(test): review Codex runtime scan chunks
* fix(test): count reviewed scan findings
2026-07-30 13:02:57 +08:00
Sergio Cadavid
42e21ad13b
fix(plugins): keep run context available after registration ( #107028 )
2026-07-30 07:07:33 +08:00
Vincent Koc
8530edb057
fix(plugins): deliver subagent completion to current requester ( #116091 )
...
* fix(plugins): deliver subagent completion to requester
Co-authored-by: ambitioncn <36698505+ambitioncn@users.noreply.github.com >
* test(qa): register current-requester plugin fixture
* fix(plugins): scope requester authority per hook
---------
Co-authored-by: ambitioncn <36698505+ambitioncn@users.noreply.github.com >
2026-07-30 07:06:17 +08:00
Adam Kalsey
e85e1dba3f
fix(plugins): keep next-turn injections callable after register ( #111131 )
...
Co-authored-by: guptaishaan <guptaishaan@users.noreply.github.com >
2026-07-30 05:47:00 +08:00
Frank Yang
511ecd9dba
fix(plugins): expose inbound message id before dispatch ( #112359 )
...
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-07-30 04:26:28 +08:00
mikasa
d2f2123da5
fix #95351 : [Feature]: Generic JSONL line-parsing hook for CliBackendPlugin (native tool-card support beyond claude-stream-json) ( #95386 )
...
* feat(plugin-sdk): add CLI backend JSONL parser hook
* fix(test): isolate non-git workspace fixtures
---------
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-07-30 03:37:39 +08:00
Stellar鱼
42e23c11e0
feat(plugins): allow per-turn tool narrowing in prompt hooks ( #114151 )
...
* feat(plugins): allow per-turn tool narrowing in prompt hooks
* fix(hooks): keep prompt tool policy baseline internal
* fix(test): track active tools in embedded session fixture
* test(agents): preserve active tool fixture state
---------
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-07-30 03:28:45 +08:00
Josh Lehman
6beaff450e
fix(codex): avoid transcript mirror snapshot churn ( #115070 )
2026-07-29 11:59:14 -07:00
Vincent Koc
fa570d8ed3
test(plugins): include dreaming sidecar in startup expectation ( #116018 )
...
(cherry picked from commit cbb3c420db )
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-30 01:52:25 +08:00
Naka Masato
68dbf92281
fix(plugins): scope Codex relay with tool matchers ( #109603 )
...
* fix(plugins): scope Codex relay matchers
Co-authored-by: Masato Naka <masatonaka1989@gmail.com >
* fix(plugins): reject sparse tool hook matchers
* test(plugins): cover mixed relay matcher scopes
* fix(plugins): fail closed on invalid policy matchers
* test(plugins): prove composed relay policy scope
* fix(plugins): keep matcher scope internal
* fix(plugins): satisfy matcher static checks
* fix(plugins): enforce canonical tool hook matchers
* fix(codex): project native hook matcher aliases
* fix(plugins): scope Codex relay with tool matchers
* chore: keep release changelog maintainer-owned
---------
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-07-30 01:39:08 +08:00
Vincent Koc
877fa6178a
fix(test): isolate plugin install fixtures ( #116008 )
2026-07-30 01:28:19 +08:00
ljy-1351
0ef7b4581f
fix(plugins): remove incorrect modifying hook timeout fallback in getClaimingHookTimeoutMs ( #107996 )
...
* fix(plugins): keep claiming hook timeouts explicit
Co-authored-by: ljy-1351 <lin.jingya@xydigit.com >
* fix(plugins): keep claiming hook timeouts explicit
Co-authored-by: ljy-1351 <lin.jingya@xydigit.com >
---------
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-07-30 01:03:34 +08:00
Gorkem Erdogan
5cf756e258
fix(plugins): prevent prompt-build hook reentrancy ( #102554 )
...
* fix(agents): prevent prompt hook reentrancy
Co-authored-by: Gorkem <gorkem.erdogan@outlook.com >
* fix(agents): prevent prompt hook reentrancy
Move the reentrancy invariant to the plugin hook runner so every caller is protected while sibling hook families and independent runners remain active.
Co-authored-by: Gorkem Erdogan <29964484+gorkem2020@users.noreply.github.com >
* test(plugins): type prompt hook reentrancy event
Co-authored-by: Gorkem Erdogan <29964484+gorkem2020@users.noreply.github.com >
---------
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
Co-authored-by: Gorkem Erdogan <29964484+gorkem2020@users.noreply.github.com >
2026-07-30 01:00:52 +08:00
Peter Steinberger
6dc13c63b6
fix(memory-core): adopt legacy dreaming jobs ( #115986 )
2026-07-29 12:26:43 -04:00
Peter Steinberger
5bfc65d7f4
refactor: remove 3,543 lines of redundant runtime and tests ( #115961 )
...
* refactor: remove 3,543 lines of redundant runtime and tests
* refactor: ratchet production environment variable budget
2026-07-29 11:43:41 -04:00
Vincent Koc
41f118cec3
fix(plugins): forward tool cancellation to hooks ( #115817 )
...
* fix(plugins): forward tool cancellation to hooks
* test(plugins): prove hook cancellation propagation
2026-07-29 22:54:01 +08:00
Peter Steinberger
17a8961a6a
fix(active-memory): inject cold first-turn memory in QA-channel DMs ( #115936 )
...
* fix(active-memory): prewarm trigger recall for channel turns
* test(active-memory): satisfy timing test lint
* test(plugins): declare active-memory prewarm hook
2026-07-29 10:38:42 -04:00
Peter Steinberger
adf3178ae6
feat(gateway): expose MCP tool identity in effective tools ( #115870 )
...
* feat(gateway): expose MCP tool identity in effective-tools catalog
* docs(agents): comment utility-tool pass gate invariant
2026-07-29 08:41:04 -04:00
Peter Steinberger
40dafc5c33
refactor: replace context-engine retry proxy with declared params ( #115872 )
...
* refactor(context-engine): remove legacy host-key retry proxy
* refactor(context-engine): declare accepted host parameters
* fix(context-engine): preserve engine adapter receivers
* refactor(plugins): tighten context-engine compat record
* refactor(context-engine): inline compat window lookup
* docs(plugins): align context-engine removal diagnostic
* test(context-engine): declare harness proof parameters
2026-07-29 08:37:08 -04:00
chenyangjun-xy
431562e775
fix: reject malformed UTF-8 in hosted official plugin catalog feed responses ( #111768 )
...
Add { fatal: true } to TextDecoder in readHostedCatalogResponseText so
invalid UTF-8 bytes throw a TypeError before the text is JSON.parsed,
instead of silently becoming U+FFFD inside field values.
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-29 08:36:12 -04:00
Peter Steinberger
5de970c1cc
refactor: correct SDK compatibility removal metadata ( #115862 )
...
* refactor(plugin-sdk): correct compat removal metadata
* test(plugins): align boundary report compat counts
2026-07-29 08:18:52 -04:00
zhanxingxin1998
943ebc012e
fix(plugins): validate constrained empty config schemas ( #109569 )
...
Route pattern, dependency, and active conditional schemas through the real plugin config validator while keeping standalone conditional annotations on the empty-config path.
Co-authored-by: Claude <noreply@anthropic.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-29 07:20:52 -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
Hannes Rudolph
6dc55fa65e
fix(plugins): recover user turns with scoped reply hooks ( #114836 )
...
Allow before_agent_reply plugins to declare host-enforced trigger eligibility so scheduled-only hooks do not block interrupted user-turn recovery. Keep omitted and malformed scopes fail-closed, scope both memory-core maintenance hooks, and cover three runner reload cycles through the public registration contract.
Refs: #111442
Source: #114836
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-07-29 17:22:16 +08:00