Vincent Koc
5707038e6c
fix(memory): preserve qmd query semantics and collection recovery ( #58183 )
...
* fix(memory): preserve qmd search queries and repair collection rebuilds
* fix(qmd): cover null-byte rebuild cycle
2026-03-31 17:07:35 +09:00
Vincent Koc
075645f5cb
fix(memory): use explicit qmd snippet line metadata ( #58181 )
...
* fix(memory): preserve qmd snippet line metadata
* Memory/QMD: preserve snippet span with partial line metadata
2026-03-31 17:05:53 +09:00
Vincent Koc
34ae78bfee
fix(tests): reduce matrix extension import churn
2026-03-31 16:59:38 +09:00
Vincent Koc
dfc124c772
fix(matrix): reduce extension test import churn
2026-03-31 16:54:04 +09:00
Vincent Koc
6eb42593fa
fix(slack): restore plugin approval auth
2026-03-31 16:45:46 +09:00
sudie-codes
4e67e7c02c
msteams: add member-info action via Graph API ( #57528 )
2026-03-31 02:24:33 -05:00
Vincent Koc
5ec362fe0b
feat(slack): add native exec approvals ( #58155 )
...
* feat(slack): add native exec approvals
* feat(slack): wire native exec approvals
* Update CHANGELOG.md
* fix(slack): gate native approvals by request filters
* fix(slack): keep local approval prompt path
2026-03-31 16:20:57 +09:00
Vincent Koc
8dfbcaa200
fix(ci): default local low-memory checks
2026-03-31 15:05:04 +09:00
Josh Avant
81b777c768
fix(config): harden SecretRef round-trip handling in Control UI and RPC writes ( #58044 )
...
* Config: harden SecretRef round-trip handling
* Gateway: test SecretRef preflight on config writes
* Agents: align skill loader with upstream Skill type
* Docs: align SecretRef write semantics with Control UI and RPC behavior
* Config: add UI and gateway regression evidence for SecretRef hardening
* Config: add token SecretRef restore regression and skill sourceInfo compat
* UI: scope structured-value lockout to SecretRef fields
* Agents: remove out-of-scope skill loader compat edits
* UI: reduce app-render churn to rawAvailable-only changes
* Gateway: scope SecretRef preflight to submitted config
* Docs: clarify config write SecretRef preflight scope
* changelog
Signed-off-by: joshavant <830519+joshavant@users.noreply.github.com>
---------
Signed-off-by: joshavant <830519+joshavant@users.noreply.github.com>
2026-03-30 23:55:03 -05:00
Gabriel M.
f7ced438f7
fix: restore Telegram forum-topic routing ( #56060 ) (thanks @one27001)
...
* feat(telegram): add child thread-binding placement via createForumTopic
Enable ACP subagent spawn on Telegram by adding "child" placement
support to the thread-bindings adapter. When a child binding is
requested, the adapter creates a new forum topic via the Telegram
Bot API and binds the subagent session to it using the canonical
chatId:topic:topicId conversation ID format.
When the ACP spawn context provides only a topic ID (not a full
group chat ID), the adapter resolves the group from the configured
Telegram groups in openclaw.json.
This mirrors the Discord adapter's child placement behavior
(thread creation + session binding) and unblocks the orchestrator
pattern on Telegram forum-enabled groups.
Closes #5737
Ref #23414
* fix(telegram): return null with warning instead of silent group fallback for bare topic IDs in child bind
* telegram: fix ACP child thread spawn with group chat ID from agentGroupId
* telegram: scope agentGroupId substitution to telegram channel only
* Telegram: fix forum topic replies routing to root chat instead of topic thread
* fix: clean up dead guard in child bind + add explicit threadId override test
- Simplify bare-topic-ID guards in thread-bindings.ts: split into
separate !chatId and !chatId.startsWith("-") checks, removing
unreachable second condition
- Add regression test confirming explicit turnSourceThreadId overrides
session lastThreadId on same channel
* fix: guard threadId fallback against shared-session race
Codex review P1: when turnSourceTo differs from the session's stored
to, the session threadId may belong to a different chat/topic. Only
fall back to context.threadId when the destination also matches.
* fix(telegram): enable ACP spawn from forum topics without thread binding
extractExplicitGroupId returned topic-qualified IDs (-100...:topic:1264)
instead of bare group chat IDs, breaking agentGroupId resolution.
agentGroupId was also never wired in the inline actions path.
For Telegram forum topics, skip thread binding entirely — the delivery
plan already routes correctly via requester origin (to + threadId).
Creating new forum topics per child session is unnecessary; output goes
back to the same topic the user asked from.
* fix(acp): bind Telegram forum sessions to current topic
* fix: restore Telegram forum-topic routing (#56060 ) (thanks @one27001)
---------
Co-authored-by: openclaw <mgabrie.dev@gmail.com>
Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-03-31 10:18:09 +05:30
Neerav Makwana
54c69414ad
fix: normalize xai tool result image replay ( #58017 ) (thanks @neeravmakwana)
...
* fix(xai): normalize image tool results for responses
* fix(xai): handle reviewed tool result payload cases
* fix: normalize xai tool result image replay (#58017 ) (thanks @neeravmakwana)
---------
Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-03-31 10:10:51 +05:30
Neerav Makwana
763d5cea44
fix: hydrate WhatsApp participating groups on connect ( #58007 ) (thanks @neeravmakwana)
...
* Web: hydrate participating groups on connect
* Web: avoid blocking inbox listeners during group hydration
2026-03-31 10:09:18 +05:30
ToToKr
e89bd883d8
fix: allow Telegram RFC2544 media downloads ( #57624 ) (thanks @MoerAI)
...
* fix(telegram): allow RFC 2544 benchmark IPs in media download SSRF policy (#57452 )
Telegram CDN file servers may resolve to IPs in the RFC 2544 benchmark range (198.18.0.0/15). The SSRF policy blocked these downloads while Discord and Slack correctly allowed them. Set allowRfc2544BenchmarkRange to true to match other channel plugins.
* fix: note Telegram media RFC2544 CDN downloads (#57624 ) (thanks @MoerAI)
---------
Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-03-31 09:53:31 +05:30
Gustavo Madeira Santana
28ede9a23e
Matrix: isolate verification events hotspot
2026-03-31 00:00:25 -04:00
Gustavo Madeira Santana
1346e6668e
Matrix: trim file sync store imports
2026-03-31 00:00:25 -04:00
Gustavo Madeira Santana
57003ffddf
Matrix: narrow client auth imports
2026-03-31 00:00:25 -04:00
Josh Avant
44674525f2
feat(tts): add structured provider diagnostics and fallback attempt analytics ( #57954 )
...
* feat(tts): add structured fallback diagnostics and attempt analytics
* docs(tts): document attempt-detail and provider error diagnostics
* TTS: harden fallback loops and share error helpers
* TTS: bound provider error-body reads
* tts: add double-prefix regression test and clean baseline drift
* tests(tts): satisfy error narrowing in double-prefix regression
* changelog
Signed-off-by: joshavant <830519+joshavant@users.noreply.github.com>
---------
Signed-off-by: joshavant <830519+joshavant@users.noreply.github.com>
2026-03-30 22:55:28 -05:00
Gustavo Madeira Santana
329d4bf1a8
Matrix: trim sdk test import churn
2026-03-30 23:25:39 -04:00
Josh Avant
c918ab4faf
fix(tts): restore 3.28 schema compatibility and fallback observability ( #57953 )
...
* fix(tts): restore legacy config compatibility and fallback observability
* fix(tts): surface fallback attempts in status and telephony
* test(tts): cover /tts audio to /tts status fallback flow
* docs(tts): align migration and fallback observability guidance
* TTS: redact fallback logs and scope legacy plugin migration
* Infra: dedupe UV_EXTRA_INDEX_URL in host env policy
* Docs: scope doctor TTS migration to voice-call
* voice-call: restore strict known TTS provider validation
2026-03-30 22:05:03 -05:00
Teconomix
697dddbeb6
feat(matrix): thread-isolated sessions and per-chat-type threadReplies ( #57995 )
...
Merged via squash.
Prepared head SHA: 9ed96dd063
Co-authored-by: teconomix <6959299+teconomix@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-03-30 22:45:32 -04:00
Gustavo Madeira Santana
d859746862
tests: fix matrix test typing
2026-03-30 22:39:25 -04:00
Gustavo Madeira Santana
b3f894ea7e
fix(matrix): repair fresh invited DMs ( #58024 )
...
Merged via squash.
Prepared head SHA: 69b5229632
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-03-30 22:30:47 -04:00
jlxyfll
1c95c41c37
fix(acpx): retain named sessions on queue owner unavailable ( #56232 ) thanks @jlxyfll
...
Co-authored-by: jl <jlxyfllz@gmail.com>
Co-authored-by: sallyom <somalley@redhat.com>
2026-03-30 22:14:59 -04:00
Vincent Koc
67bb3454ee
fix(openshell): support remote fs read mutation in tests
2026-03-31 10:30:37 +09:00
Peter Steinberger
f7285e0a9e
test: speed up extension suites
2026-03-31 02:25:02 +01:00
Shakker
020858647d
test: fix qmd and discord ci regressions
2026-03-31 01:40:55 +01:00
Shakker
ab0af5997d
test: isolate browser snapshot navigation from proxy env
2026-03-31 01:40:55 +01:00
Gustavo Madeira Santana
8d4040af58
fix(tests): align matrix verification DM fixtures
2026-03-30 20:32:49 -04:00
scoootscooob
eba41dae4f
fix(exec): dedupe Discord approval delivery ( #58002 )
...
* fix(exec): dedupe Discord approval delivery
* Update extensions/discord/src/approval-native.ts
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
---------
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2026-03-30 17:27:34 -07:00
Gustavo Madeira Santana
7b7d7cc743
Matrix: short-circuit aborted monitor startup
2026-03-30 20:13:33 -04:00
Gustavo Madeira Santana
61ae6d7201
Matrix: trim shared test import churn
2026-03-30 20:13:32 -04:00
Gustavo Madeira Santana
f96e5bec39
Diffs: normalize viewer payload languages
2026-03-30 20:12:19 -04:00
Gustavo Madeira Santana
bd957a3a8b
Matrix: trim test import breadth
2026-03-30 19:54:40 -04:00
end
2b2edaa01d
fix(matrix): correct DM classification with three-tier is_direct logic and 2-member guard ( #57124 )
...
Merged via squash.
Prepared head SHA: e2ff0d5e96
Co-authored-by: w-sss <204439273+w-sss@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-03-30 18:56:00 -04:00
scoootscooob
9ff57ac479
refactor(exec): unify channel approvals and restore routing/auth ( #57838 )
...
* fix(exec): add shared approval runtime
* fix(exec): harden shared approval runtime
* fix(exec): guard approval expiration callbacks
* fix(exec): handle approval runtime races
* fix(exec): clean up failed approval deliveries
* fix(exec): restore channel approval routing
* fix(exec): scope telegram legacy approval fallback
* refactor(exec): centralize native approval delivery
* fix(exec): harden approval auth and account routing
* test(exec): align telegram approval auth assertions
* fix(exec): align approval rebase followups
* fix(exec): clarify plugin approval not-found errors
* fix(exec): fall back to session-bound telegram accounts
* fix(exec): detect structured telegram approval misses
* test(exec): align discord approval auth coverage
* fix(exec): ignore discord dm origin channel routes
* fix(telegram): skip self-authored message echoes
* fix(exec): keep implicit approval auth non-explicit
2026-03-30 15:49:02 -07:00
Gustavo Madeira Santana
b9f5d02f04
fix(matrix): restore E2EE for one-off CLI sends ( #57936 )
...
Merged via squash.
Prepared head SHA: 4b79fbea22
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-03-30 17:28:33 -04:00
Gustavo Madeira Santana
9a94578d47
Diffs: fall back on invalid language hints ( #57902 )
...
Merged via squash.
Prepared head SHA: 567ca3a56f
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-03-30 16:30:05 -04:00
Gustavo Madeira Santana
66777e140e
Diffs: return schema-shaped plugin config ( #57904 )
...
Merged via squash.
Prepared head SHA: df95f53aaa
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-03-30 16:27:11 -04:00
Gustavo Madeira Santana
07900facf6
Diffs: skip unused render targets ( #57909 )
...
Merged via squash.
Prepared head SHA: 9972f3029f
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-03-30 16:21:08 -04:00
Agustin Rivera
30a1690323
fix(diffs): harden viewer proxy access ( #57912 )
...
* fix(diffs): harden viewer proxy access
* fix(diffs): restore mapped loopback access
2026-03-30 14:17:27 -06:00
Altay
910134b702
fix(memory): stabilize qmd collection scoping
2026-03-30 22:41:21 +03:00
Altay
9c25544e6c
test(ci): fix stale regression expectations ( #57899 )
2026-03-30 22:31:13 +03:00
Gustavo Madeira Santana
4a6267bfe1
Diffs: preserve base paths for viewer assets
2026-03-30 15:28:16 -04:00
chain710
943163a419
feat(matrix): add group chat history context for agent triggers ( #57022 )
...
Merged via squash.
Prepared head SHA: b6f88b72e8
Co-authored-by: chain710 <486539+chain710@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-03-30 15:10:43 -04:00
Jacob Tomlinson
8deb9522f3
Guard marketplace and Ollama network requests ( #57850 )
...
* Plugins: guard marketplace and Ollama fetches
* Ollama: pin guarded host allowlist
2026-03-30 20:08:38 +01:00
Jacob Tomlinson
cfe1445953
Sandbox: sanitize SSH subprocess env ( #57848 )
...
* Sandbox: sanitize SSH subprocess env
* Sandbox: add sanitize env undefined test
2026-03-30 20:05:57 +01:00
Jacob Tomlinson
ad77666054
fix(voice-call): canonicalize Telnyx replay request keys ( #57829 )
2026-03-30 20:01:43 +01:00
Devin Robison
8c83128fc3
Discord: fix Group DM component interaction routing and auth ( #57763 )
...
* Discord: fix Group DM component interaction routing and auth
* Update tests
2026-03-30 11:17:53 -06:00
Devin Robison
8fdb19676a
Fix Discord native commands bypassing group DM channel allowlist ( #57735 )
...
* Fix Discord native commands bypassing group DM channel allowlist
* Fix linting
* Update tests
2026-03-30 11:17:36 -06:00
Gustavo Madeira Santana
dd17dae3e5
Matrix: drop unused MatrixClient constructor params
2026-03-30 13:17:02 -04:00