Commit Graph

31557 Commits

Author SHA1 Message Date
Gustavo Madeira Santana
7fd57717a9 Docs: remove QA changelog entry 2026-04-15 22:02:36 -04:00
Gustavo Madeira Santana
d5933af80b QA: fix private runtime source loading (#67428)
Merged via squash.

Prepared head SHA: b8bf2b6be6
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-04-15 21:59:16 -04:00
Omar Shahine
489404d75e docs(gateway): correct protocol.md schema path, hello-ok example, auth precedence, and add client constants table (#67372)
Co-authored-by: Omar Shahine <10343873+omarshahine@users.noreply.github.com>
2026-04-15 17:41:32 -07:00
Gustavo Madeira Santana
4ffa6218c4 CI: pin Node 22 runners to 22.18.0 2026-04-15 20:33:12 -04:00
Omar Shahine
f2fdb9d125 models.authStatus: normalize provider ids + tighten env-backed escape hatch (#67253)
Fix false-positive "missing" alerts on the Model Auth status card:
- Normalize provider ids before expectsOAuth membership check (alias mismatch)
- Apply env-backed escape hatch to auth.profiles loop (not just models.providers)
- Check actual env var resolution for SecretRef apiKeys

Co-authored-by: Omar Shahine <10343873+omarshahine@users.noreply.github.com>
2026-04-15 15:29:26 -07:00
Vincent Koc
7694a926c4 Update CHANGELOG.md 2026-04-15 23:06:42 +01:00
Peter Steinberger
045ea7bf6a test(parallels): clean up npm update guard jobs 2026-04-15 22:43:28 +01:00
Gustavo Madeira Santana
b2974da33a Plugins: prefer scanDir override paths 2026-04-15 17:24:31 -04:00
mjamiv
8c392f0019 fix(dreaming): default storage.mode to "separate" so phase blocks stop polluting daily memory files (#66412)
Merged via squash.

Prepared head SHA: 4b1c8ac4ec
Co-authored-by: mjamiv <142179942+mjamiv@users.noreply.github.com>
Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com>
Reviewed-by: @jalehman
2026-04-15 13:49:18 -07:00
Josh Lehman
a1b01f0281 fix(memory-core): skip dreaming transcript ingestion via session store (#67315)
Merged via squash.

Prepared head SHA: 87c09b2a75
Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com>
Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com>
Reviewed-by: @jalehman
2026-04-15 13:09:07 -07:00
Josh Lehman
5dcf526a43 fix: dedupe replayed exec.finished node events (#67281)
* docs: add async exec duplicate completion investigation

Add an internal refactor note tracing the node exec completion to system event to heartbeat to transcript path for duplicate async exec injections. Document the most likely gateway-side gap as missing idempotency for replayed exec.finished events, and note why plain outbound delivery retry is a weaker fit for duplicate user turns.

Regeneration-Prompt: |
  Investigate a live duplicate async exec completion that appeared as two identical user turns in an OpenClaw session. Trace the completion path from exec producers into enqueueSystemEvent, heartbeat wake scheduling, prompt assembly, and embedded transcript persistence. Decide whether duplicate wake handling, outbound delivery retry, or duplicate completion event ingestion is the more likely cause, cite the exact code locations, and capture the smallest plausible fix seam without making runtime changes.

* fix: dedupe replayed exec finished node events

Add a narrow idempotency guard in the gateway node-event handler for repeated exec.finished events with the same canonical session key and runId. This blocks replayed async exec completions from being enqueued and heartbeated twice into the parent session. Also only request a heartbeat when the system event was actually queued, and add a regression test for duplicate runId injection.

Regeneration-Prompt: |
  Prevent duplicate async exec completion events from being injected twice into the parent session. Keep the scope tight around the highest-confidence path: node exec.finished events entering gateway server-node-events and becoming system-event-driven heartbeat prompts. Add a small idempotency guard keyed by canonical session plus exec runId, avoid broader delivery or retry changes unless needed, and add regression coverage that fails if the same exec.finished replay is enqueued and woken twice.

* fix: note exec finished replay dedupe
2026-04-15 13:06:18 -07:00
Peter Steinberger
a5dafa27b6 fix(release): allow legacy qa sidecar verification 2026-04-15 20:49:30 +01:00
dallylee
bd7418d4e9 fix(agents): classify connection-mismatch replay errors as replay-invalid (#66475)
Merged via squash.

Prepared head SHA: 97738583de
Co-authored-by: dallylee <132358482+dallylee@users.noreply.github.com>
Co-authored-by: altaywtf <9790196+altaywtf@users.noreply.github.com>
Reviewed-by: @altaywtf
2026-04-15 22:49:11 +03:00
Peter Steinberger
943cb47274 fix(qa): use exported runner sdk seam v2026.4.15-beta.1 2026-04-15 20:26:12 +01:00
Peter Steinberger
4caa882476 test: harden gateway live docker flake handling 2026-04-15 20:13:28 +01:00
Devin Robison
52ef42302e fix: tighten trusted tool media passthrough (#67303)
* fix: tighten trusted tool media passthrough

* changelog: tighten trusted tool media passthrough (#67303)

* address review: thread rawToolName into emitToolResultOutput and keep plugin-tool media passthrough

- Pass rawToolName through emitToolResultOutput params so the emit and
  collect calls no longer reference an out-of-scope identifier
  (ReferenceError on any verbose tool-output path).
- Widen builtinToolNames to all effective tool raw names for this run
  (core + bundled/trusted plugin tools), so plugin tools on the trusted
  media list still receive local MEDIA: passthrough. Admission-time
  client-tool conflict check keeps using the core-only set so unrelated
  plugin names do not spuriously reject client definitions; MEDIA
  passthrough is still gated by the raw-name set, so a client tool that
  normalize-collides with a plugin name cannot inherit its media trust.
- Add unit coverage for bundled-plugin raw-name passthrough and for
  case-variant plugin-name collisions.

* drop redundant String() casts flagged by oxlint no-useless-cast

The names from effectiveTools, client tool function names, and the
existingToolNames iterable are already typed as string, so wrapping them
in String(...) adds nothing and trips oxlint's no-useless-cast rule.
2026-04-15 13:12:44 -06:00
Bartok9
4de56b18ba fix(dreaming): use ingestion date for dayBucket instead of file date (#67091)
Merged via squash.

Prepared head SHA: 2df44e4d50
Co-authored-by: Bartok9 <259807879+Bartok9@users.noreply.github.com>
Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com>
Reviewed-by: @jalehman
2026-04-15 11:56:10 -07:00
Peter Steinberger
a177d8d454 build: refresh release baselines 2026-04-15 19:41:32 +01:00
Peter Steinberger
23dca0a089 test: fix upstream type drift 2026-04-15 19:31:10 +01:00
Peter Steinberger
4efd3c3d74 test: harden beta release gates 2026-04-15 19:28:49 +01:00
Peter Steinberger
41699cfc2d build: fix bundled channel smoke layout 2026-04-15 19:28:49 +01:00
Peter Steinberger
0a57279309 docs: update beta changelog 2026-04-15 19:28:49 +01:00
Pavan Kumar Gondhi
1470de5d3e fix(webchat): reject remote-host file:// URLs in media embedding path [AI-assisted] (#67293)
* fix: address issue

* fix: address PR review feedback

* fix: address PR review feedback

* docs: add changelog entry for PR merge
2026-04-15 23:58:01 +05:30
Gustavo Madeira Santana
84185cb3eb docs: clean up clawtributors generator 2026-04-15 14:20:32 -04:00
hcl
be7f4a2342 fix(terminal): tolerate undefined path in formatDocsLink (#67076, #67074) (#67086)
formatDocsLink called path.trim() unconditionally. The typed contract
says 'docsPath: string' (required on ChannelMeta), but a handful of
channel plugins and catalog rows leave it unset at runtime, so
onboarding flows that call formatChannelSelectionLine(entry.meta, ...)
hit a TypeError on the first meta without a docsPath:

  TypeError: Cannot read properties of undefined (reading 'trim')

Symptom: 'openclaw onboard --install-daemon' and the 'Select channel
(QuickStart)' -> 'Skip for now' path both crash on 2026.4.12 and
2026.4.14.

Fix: widen formatDocsLink's path parameter to 'string | undefined |
null' and fall back to the docs root when path is missing. The single
call site that guards with 'if (params.docsPath)' stays fine; the
unguarded channel-selection path now degrades gracefully.

Fixes #67076
Fixes #67074
2026-04-15 23:40:52 +05:30
Gustavo Madeira Santana
2bfd808a83 fix(matrix): skip pairing-store reads for room auth (#67325)
Merged via squash.

Prepared head SHA: 121ff3b38c
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-04-15 14:08:43 -04:00
Tak Hoffman
4f00b76925 fix(context-window): Tighten context limits and bound memory excerpts (#67277)
* Tighten context limits and bound memory excerpts

* Align startup context defaults in config docs

* Align qmd memory_get bounds with shared limits

* Preserve qmd partial memory reads

* Fix shared memory read type import

* Add changelog entry for context bounds
2026-04-15 13:06:02 -05:00
Peter Steinberger
89d2c145df test: harden gateway live docker test assertions 2026-04-15 18:47:40 +01:00
Gustavo Madeira Santana
4dfcc030ae fix(release): ignore leaf test filenames 2026-04-15 13:38:38 -04:00
Peter Steinberger
893d0635b6 test(parallels): harden smoke harness progress and gateway startup 2026-04-15 18:33:05 +01:00
Pavan Kumar Gondhi
6e58f1f9f5 fix(gateway): enforce localRoots containment on webchat audio embedding path [AI-assisted] (#67298)
* fix: address issue

* fix: address review feedback

* fix: address PR review feedback

* docs: add changelog entry for PR merge
2026-04-15 22:54:06 +05:30
Gustavo Madeira Santana
7c6f2c0a5a Build: prune packaged runtime test cargo (#67275)
Merged via squash.

Prepared head SHA: 403f8e5749
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-04-15 13:18:03 -04:00
Pavan Kumar Gondhi
f8705f512b fix(matrix): block DM pairing-store entries from authorizing room control commands [AI-assisted] (#67294)
* fix: address issue

* fix: address review feedback

* docs: add changelog entry for PR merge
2026-04-15 22:45:14 +05:30
Gustavo Madeira Santana
ed28df48a4 test(matrix): fix bootstrap password mock typing 2026-04-15 13:09:00 -04:00
Peter Steinberger
229eb72cf6 build: exclude private QA from npm package 2026-04-15 09:39:51 -07:00
Gustavo Madeira Santana
78ac118427 fix(plugins): stabilize bundled setup runtimes (#67200)
Merged via squash.

Prepared head SHA: e8d6738fd0
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-04-15 12:35:18 -04:00
neo1027144
ee6b7daca3 fix(cron): suppress trailing NO_REPLY in announce delivery path [AI-assisted] (#65004)
Merged via squash.

Prepared head SHA: b7f1996d60
Co-authored-by: neo1027144-creator <267440006+neo1027144-creator@users.noreply.github.com>
Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com>
Reviewed-by: @jalehman
2026-04-15 09:31:35 -07:00
Shadow
32222812ea Revise contribution process for new features 2026-04-15 11:04:30 -05:00
saram ali
b2753fd0de fix(matrix): fix E2EE SSSS bootstrap for passwordless token-auth bots (#66228)
Merged via squash.

Prepared head SHA: c62cebf7c3
Co-authored-by: SARAMALI15792 <140950904+SARAMALI15792@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-04-15 11:48:29 -04:00
Gustavo Madeira Santana
568df95736 fix: move Docker changelog entry to unreleased 2026-04-15 11:43:15 -04:00
ly85206559
3e60eaa884 fix(docker): verify matrix-sdk-crypto native addon without hardcoded pnpm path (#65608) (#67143)
Merged via squash.

Prepared head SHA: 325e97ead5
Co-authored-by: ly85206559 <12526624+ly85206559@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-04-15 11:37:14 -04:00
Peter Steinberger
8f4331e3b4 docs: clarify test-only vulnerability scope 2026-04-15 07:23:07 -07:00
Peter Steinberger
0149ca0669 fix(ci): make non-root installer smoke expect npm latest 2026-04-15 15:21:21 +01:00
Mason Huang
dc86349c02 fix(test): stop overriding host-aware vitest scheduling in prepare gates (#67213)
The hardcoded `OPENCLAW_VITEST_MAX_WORKERS=4` default in gates.sh
short-circuits the host-aware scheduling introduced in c247e366.
`resolveLocalVitestScheduling` sees the explicit override and returns
maxWorkers=4, which falls below the >= 5 threshold required by
`shouldUseLargeLocalFullSuiteProfile`, so every machine—regardless of
resources—gets the DEFAULT profile (4 shard parallelism) instead of
the LARGE profile (10 shard parallelism).

Drop the hardcoded default so `test-projects.mjs` can detect actual
host resources and pick the appropriate profile automatically. When
the user explicitly sets OPENCLAW_VITEST_MAX_WORKERS, forward it as
before.
2026-04-15 22:06:41 +08:00
Peter Steinberger
69ba56d2c8 build(config): refresh generated schema version for 2026.4.15-beta.1 2026-04-15 15:06:13 +01:00
Peter Steinberger
b3fa5880dd build(extensions): bump bundled plugin versions to 2026.4.15-beta.1 2026-04-15 15:06:13 +01:00
Peter Steinberger
cb790c858b build(release): bump core app versions to 2026.4.15-beta.1 2026-04-15 15:06:13 +01:00
Peter Steinberger
ef98bcf630 fix(discord): raise carbon slow listener threshold 2026-04-15 06:40:14 -07:00
Ayaan Zaidi
33154ce745 fix: simplify ollama onboarding (#67005)
* feat(ollama): split interactive cloud and local setup

* test(ollama): cover cloud onboarding flow

* docs(ollama): simplify provider setup docs

* docs(onboarding): update ollama wizard copy

* fix(ollama): restore web search auth helper

* fix(ollama): harden setup auth and ssrf handling

* fix(ollama): address review regressions

* fix(ollama): scope ssrf hardening to ollama

* feat(ollama): add hybrid onboarding mode

* fix(ollama): tighten cloud credential setup

* refactor(ollama): distill host-backed setup modes

* fix(ollama): preserve cloud api key in config

* fix: simplify ollama onboarding (#67005)
2026-04-15 19:06:21 +05:30
Peter Steinberger
20cce166ef test: isolate Docker live profile-key auth 2026-04-15 06:31:20 -07:00