Commit Graph

7494 Commits

Author SHA1 Message Date
Barron Roth
bf59917cd1 fix: add Google Gemini TTS provider (#67515) (thanks @barronlroth)
* Add Google Gemini TTS provider

* Remove committed planning artifact

* Explain Google media provider type shape

* google: distill Gemini TTS provider

* fix: add Google Gemini TTS provider (#67515) (thanks @barronlroth)

* fix: honor cfg-backed Google TTS selection (#67515) (thanks @barronlroth)

* fix: narrow Google TTS directive aliases (#67515) (thanks @barronlroth)

---------

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-04-16 11:54:35 +05:30
Subash Natarajan
6f5459364a fix: restore Ollama chat model IDs (#67457) (thanks @suboss87)
* fix(ollama): strip provider prefix from model ID in chat requests

buildOllamaChatRequest passed params.modelId directly to the Ollama API
without stripping the "ollama/" provider prefix. The embedding provider
already handles this (normalizeEmbeddingModel at line 100), but the chat
stream path did not. When setup writes the primary model as
"ollama/<model>" or the model ID flows through without normalization,
the Ollama API rejects it with a 404.

Closes #67435

* ollama: guard chat fetch and streamline tests

* fix: restore Ollama chat model IDs (#67457) (thanks @suboss87)

* fix: preserve Ollama default chat fallback (#67457) (thanks @suboss87)

---------

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-04-16 11:15:37 +05:30
OwenYWT
b878d50e0e fix(whatsapp): write creds.json atomically (#63577)
Merged via squash.

Prepared head SHA: 70ef5b379f
Co-authored-by: OwenYWT <103073962+OwenYWT@users.noreply.github.com>
Co-authored-by: mcaxtr <7562095+mcaxtr@users.noreply.github.com>
Reviewed-by: @mcaxtr
2026-04-16 02:44:46 -03:00
Omar Shahine
4af7641350 BlueBubbles/catchup: per-message retry cap for wedged messages (#66870) (#67426)
Merged via squash.

Prepared head SHA: 39e3cf1df5
Co-authored-by: omarshahine <10343873+omarshahine@users.noreply.github.com>
Co-authored-by: omarshahine <10343873+omarshahine@users.noreply.github.com>
Reviewed-by: @omarshahine
2026-04-15 22:23:27 -07:00
Neerav Makwana
405c63fb32 fix: flush creds queue before reconnect socket open (#67464) (thanks @neeravmakwana)
* WhatsApp: flush creds queue before reconnect socket open

* fix: flush creds queue before reconnect socket open (#67464) (thanks @neeravmakwana)

---------

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-04-16 10:16:00 +05:30
Peter Steinberger
c56b56e514 fix(msteams): harden security-sensitive flows (#65841)
* fix(msteams): validate participant graph params

* fix(msteams): restore media fetch ip guard

* fix(msteams): open delegated auth urls without shell
2026-04-15 22:30:23 -05: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
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
Peter Steinberger
943cb47274 fix(qa): use exported runner sdk seam 2026-04-15 20:26:12 +01: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
4efd3c3d74 test: harden beta release gates 2026-04-15 19:28:49 +01:00
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
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
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
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
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
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
b9d0fc5630 fix(qa-matrix): remove unused scenario import 2026-04-15 13:08:36 +01:00
Gustavo Madeira Santana
963ad1df06 QA: extend Matrix live contract coverage 2026-04-15 07:36:35 -04:00
Vincent Koc
b855b1d047 fix(ci): clear extension lint regressions 2026-04-15 12:08:33 +01:00
Vincent Koc
c727388f93 fix(plugins): localize bundled runtime deps to extensions (#67099)
* fix(plugins): localize bundled runtime deps to extensions

* fix(plugins): move staged runtime deps out of root

* fix(packaging): harden prepack and runtime dep staging

* fix(packaging): preserve optional runtime dep staging

* Update CHANGELOG.md

* fix(packaging): harden runtime staging filesystem writes

* fix(docker): ship preinstall warning in bootstrap layers

* fix(packaging): exclude staged plugin node_modules from npm pack
2026-04-15 12:04:31 +01:00
Mason Huang
edfa074e0f Tests: align pnpm test expectations with main (#67001)
Merged via squash.

Prepared head SHA: 29c8068053
Co-authored-by: hxy91819 <8814856+hxy91819@users.noreply.github.com>
Co-authored-by: hxy91819 <8814856+hxy91819@users.noreply.github.com>
Reviewed-by: @hxy91819
2026-04-15 18:31:23 +08:00
Pengfei Ni
88d3620a85 feat(github-copilot): add embedding provider for memory search (#61718)
Merged via squash.

Prepared head SHA: 05a78ce7f2
Co-authored-by: feiskyer <676637+feiskyer@users.noreply.github.com>
Co-authored-by: vincentkoc <25068+vincentkoc@users.noreply.github.com>
Reviewed-by: @vincentkoc
2026-04-15 10:39:28 +01:00
Xin Sun
df918c4de5 feat(memory-lancedb): add cloud storage support to memory-lancedb (#63502)
* feat(memory-lancedb): add cloud storage support to memory-lancedb

- Pass storageOptions to LanceDB connection

# Conflicts:
#	extensions/memory-lancedb/index.ts

# Conflicts:
#	extensions/memory-lancedb/config.ts

* support env var

* make storageOptions sensitive
2026-04-15 16:07:49 +08:00
Peter Steinberger
7fc5a18d89 test(qa-matrix): isolate flaky beta scenarios 2026-04-15 06:10:37 +01:00
Gustavo Madeira Santana
7d7dc7510e QA: speed up Matrix live lane 2026-04-15 00:16:23 -04:00
xinmotlanthua
90c06c04c8 fix: guard against undefined event.content in cron agentTurn payload (#66302)
* fix: remove documentation fences from HEARTBEAT.md template

The HEARTBEAT.md template wrapped its content in markdown code fences
and a doc heading for display purposes. Since loadTemplate() only strips
YAML front matter, these artifacts leaked into generated workspace files,
causing isHeartbeatContentEffectivelyEmpty() to consider them non-empty
and triggering unnecessary API calls.

Remove the markdown fences and doc heading so the template produces
clean content after front-matter stripping.

Closes #66284

* fix: guard against undefined event.content in cron agentTurn payload

When a cron job fires with agentTurn payload, event.content is undefined.
parseFaceTags(undefined) returned undefined, which propagated to
userContent.startsWith("/") causing a TypeError crash.

- Fix parseFaceTags and filterInternalMarkers to return "" for falsy input
  instead of returning the falsy value itself
- Add null coalescing fallback at the gateway call site
- Add unit tests for undefined/null/empty string inputs

Closes #66283

* fix: address review — remove redundant guards, casts, and unrelated HEARTBEAT.md change

* fix: guard against undefined event.content in cron agentTurn payload (#66302) (thanks @xinmotlanthua)

---------

Co-authored-by: khanhkhanhlele <namkhanh2172@gmail.com>
Co-authored-by: sliverp <870080352@qq.com>
2026-04-15 11:47:21 +08:00
Gustavo Madeira Santana
fb92ca1a4d QA: genericize mock streaming fixtures 2026-04-14 23:44:41 -04:00
Gustavo Madeira Santana
5042b8b8e3 QA: split Matrix contract runtime 2026-04-14 23:44:41 -04:00
Mr.NightQ
b1d03b4057 fix: keep Telegram command sync process-local (#66730) (thanks @nightq)
* fix: use process-scoped cache for Telegram command sync to fix missing menu after restart

Fixes openclaw#66714, openclaw#66682

Root cause: The command hash cache was persisted to disk across gateway
restarts. When the hash matched (commands unchanged), setMyCommands was
skipped entirely. But Telegram bot commands can be cleared by external
factors, so the cached state becomes stale after restart.

Fix: Replace file-based hash cache with a process-scoped Map. This preserves
the rapid-restart rate-limit protection within a single process, but ensures
commands are always re-registered after a gateway restart.

* fix(telegram): drop stale async command cache calls

* fix: keep Telegram command sync process-local (#66730) (thanks @nightq)

---------

Co-authored-by: nightq <zengwei@nightq.cn>
Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-04-15 08:02:23 +05:30
Omar Shahine
6f1d321aab feat(bluebubbles): replay missed webhook messages after gateway restart (#66857)
Adds an in-process startup catchup pass to the BlueBubbles channel that
queries BB Server for messages delivered since a persisted per-account
cursor and re-feeds each through the existing processMessage pipeline.

Fixes the missed-message hole documented in #66721: BB's WebhookService
is fire-and-forget on POST failure, and MessagePoller only re-fires
webhooks on BB-side reconnection events, not on webhook-receiver
recovery.

- New extensions/bluebubbles/src/catchup.ts with singleflight per
  accountId, cursor persistence via the canonical state-paths
  resolver, bounded query (perRunLimit + maxAgeMinutes), failure-held
  cursor, truncation-aware page-boundary advancement, future-cursor
  recovery, isFromMe filter (pre- and post-normalization).
- monitor.ts fires catchup as a background task after the webhook
  target registers.
- config-schema.ts adds optional catchup block; accounts.ts adds
  catchup to nestedObjectKeys for deep-merge per-account overrides.
- Dedupes against #66816's persistent inbound GUID cache.
- 22 scoped tests; full BB suite 411/411; pnpm check green; live E2E
  on macOS 26.3 / BB Server 1.9.x recovered 3/3 missed messages.

Closes #66721.

Co-authored-by: Omar Shahine <omar@shahine.com>
2026-04-14 19:20:42 -07:00
Gustavo Madeira Santana
3c03d41f13 QA: split Matrix scenario leaf types 2026-04-14 21:16:48 -04:00
Gustavo Madeira Santana
9463f1c498 QA: expand Matrix config scenario coverage 2026-04-14 21:07:31 -04:00
François Martin
734bb9c2e7 Telegram/documents: sanitize binary payloads to prevent prompt input inflation (#66877)
Merged via squash.

Prepared head SHA: 09a87c184f
Co-authored-by: martinfrancois <14319020+martinfrancois@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-04-14 20:53:00 -04:00
Gustavo Madeira Santana
0c4e0d7030 memory: block dreaming self-ingestion (#66852)
Merged via squash.

Prepared head SHA: 4742656a0d
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-14 20:29:12 -04:00
Gustavo Madeira Santana
3aae0fb16d QA: tighten Matrix substrate coverage 2026-04-14 20:06:08 -04:00
Gustavo Madeira Santana
874eebe539 QA: extract Matrix event modules 2026-04-14 20:06:07 -04:00
Peter Steinberger
81b66e5bf3 test(qa-matrix): type provisioned topology fixture 2026-04-15 00:50:27 +01:00
Gustavo Madeira Santana
778ac4330a QA: finish Matrix P1 harness coverage 2026-04-14 19:42:17 -04:00
Gustavo Madeira Santana
5e77cbd9ec QA: add Matrix transport substrate 2026-04-14 19:42:17 -04:00
Vincent Koc
97ee0c6fd3 perf(migrations): trim legacy migration and bind cold paths 2026-04-15 00:38:45 +01:00
Josh Avant
1769fb2aa1 fix(secrets): align SecretRef inspect/strict behavior across preload/runtime paths (#66818)
* Config: add inspect/strict SecretRef string resolver

* CLI: pass resolved/source config snapshots to plugin preload

* Slack: keep HTTP route registration config-only

* Providers: normalize SecretRef handling for auth and web tools

* Secrets: add Exa web search target to registry and docs

* Telegram: resolve env SecretRef tokens at runtime

* Agents: resolve custom provider env SecretRef ids

* Providers: fail closed on blocked SecretRef fallback

* Telegram: enforce env SecretRef policy for runtime token refs

* Status/Providers/Telegram: tighten SecretRef preload and fallback handling

* Providers: enforce env SecretRef policy checks in fallback auth paths

* fix: add SecretRef lifecycle changelog entry (#66818) (thanks @joshavant)
2026-04-14 17:59:28 -05:00
Gustavo Madeira Santana
95be2c1605 QA: replace qa-lab-runtime with qa-runtime
Introduce a tiny generic qa-runtime seam for shared live-lane helpers and
repoint qa-matrix to it. This keeps the qa-lab host split while removing
the host-owned runtime name from runner code.

Drop the old qa-lab-runtime shim/export now that nothing consumes it and
keep the plugin-sdk surface aligned with the new seam.
2026-04-14 18:53:25 -04:00
Omar Shahine
58742acaab fix(bluebubbles): dedupe inbound webhooks across restarts (#19176, #12053) (#66816)
BlueBubbles MessagePoller replays its ~1-week lookback window as new-message
webhooks after BB Server restart or reconnect. Add a persistent file-backed
GUID dedupe (TTL=7d) at the top of processMessage using createClaimableDedupe
from the Plugin SDK. Claim/finalize/release semantics ensure transient delivery
failures release the GUID so a later replay can retry.

Fixes #19176, #12053.

Co-authored-by: Omar Shahine <omar@shahine.com>
2026-04-14 15:45:05 -07:00
Vincent Koc
2d26929ff1 test(slack): harden thread context fixture cleanup 2026-04-14 23:11:43 +01:00
Gustavo Madeira Santana
5977579da4 QA: drop qa-channel install metadata
Remove the stale install metadata from the private qa-channel package.
The runner still loads from the repo checkout, but it should not
advertise an npm install path we do not support.
2026-04-14 17:59:37 -04:00