Peter Steinberger
853999fd7f
refactor: dedupe synology chat client webhook payloads
2026-03-13 21:54:39 +00:00
Peter Steinberger
f5b9095108
refactor: share zalo send result handling
2026-03-13 21:54:39 +00:00
Peter Steinberger
a6375a2094
refactor: share zalouser account resolution
2026-03-13 21:40:54 +00:00
Peter Steinberger
4ec0a120df
test: share zalo api request assertion
2026-03-13 21:40:54 +00:00
Peter Steinberger
83571fdb93
refactor: dedupe agent list filtering
2026-03-13 21:40:53 +00:00
Peter Steinberger
4269ea4e8d
test: share slack config snapshot helper
2026-03-13 21:40:53 +00:00
Peter Steinberger
71639d1744
test: share lobster windows spawn assertions
2026-03-13 21:40:53 +00:00
Peter Steinberger
12432ca138
test: share googlechat webhook routing helpers
2026-03-13 21:40:53 +00:00
Peter Steinberger
d4d0091760
test: share msteams safe fetch assertions
2026-03-13 21:40:53 +00:00
Peter Steinberger
9ecd1898d0
refactor: share telegram channel test harnesses
2026-03-13 21:40:53 +00:00
Peter Steinberger
3ffb9f19cb
test: reduce feishu reply dispatcher duplication
2026-03-13 21:40:53 +00:00
Peter Steinberger
d347a4426d
refactor: share twitch outbound target assertions
2026-03-13 21:40:53 +00:00
Peter Steinberger
aa551e5a9c
refactor: share acpx process env test helper
2026-03-13 21:40:53 +00:00
Peter Steinberger
65cf2cea9d
refactor: share matrix monitor test helpers
2026-03-13 21:40:53 +00:00
Peter Steinberger
b5010719d6
test: dedupe telnyx webhook test fixtures
2026-03-13 21:40:53 +00:00
Peter Steinberger
d5d2fe1b0e
test: reduce webhook auth test duplication
2026-03-13 21:40:53 +00:00
Peter Steinberger
de9ea76b6c
refactor: dedupe feishu send reply fallback helpers
2026-03-13 21:40:53 +00:00
Peter Steinberger
6ecc184637
refactor: share googlechat api fetch handling
2026-03-13 21:40:53 +00:00
Peter Steinberger
eca22c0cc7
test: share bluebubbles attachment fixtures
2026-03-13 21:40:53 +00:00
Peter Steinberger
89e0e80db3
test: share bluebubbles removal reaction helper
2026-03-13 21:40:53 +00:00
Peter Steinberger
143ae5a5b0
refactor: share feishu chunked reply delivery
2026-03-13 21:40:53 +00:00
Peter Steinberger
6756e376f3
refactor: share bluebubbles response and tapback helpers
2026-03-13 21:40:53 +00:00
Peter Steinberger
867dc6a185
test: share twitch send success mocks
2026-03-13 21:40:53 +00:00
Peter Steinberger
a8508f2b31
test: share voice webhook reaper harness
2026-03-13 21:40:53 +00:00
Peter Steinberger
534e4b1418
refactor: share synology chat raw config fields
2026-03-13 21:40:52 +00:00
Peter Steinberger
1cea43d349
test: share zalouser group policy resolver
2026-03-13 21:40:52 +00:00
Vincent Koc
a976cc2e95
Slack: add opt-in interactive reply directives ( #44607 )
...
* Reply: add Slack interactive directive parser
* Reply: wire Slack directives into normalization
* Reply: cover Slack directive parsing
* Reply: test Slack directive normalization
* Slack: hint interactive reply directives
* Config: add Slack interactive reply capability type
* Config: validate Slack interactive reply capability
* Reply: gate Slack directives behind capability
* Slack: gate interactive reply hints by capability
* Tests: cover Slack interactive reply capability gating
* Changelog: note opt-in Slack interactive replies
* Slack: fix interactive reply review findings
* Slack: harden interactive reply routing and limits
* Slack: harden interactive reply trust and validation
2026-03-13 14:08:04 -07:00
Peter Steinberger
b84c7037de
fix: repair ci audit and type drift
2026-03-13 21:02:19 +00:00
Vincent Koc
ffee3dfef0
Plugins: resolve local openclaw peer for audits
2026-03-13 13:55:28 -07:00
Peter Steinberger
bf631b5872
refactor: share voice restore test setup
2026-03-13 20:37:53 +00:00
Peter Steinberger
ba2d57d024
refactor: share mattermost test harnesses
2026-03-13 20:37:53 +00:00
Peter Steinberger
48853f875b
refactor: share test request helpers
2026-03-13 20:37:53 +00:00
Peter Steinberger
784020f71e
docs: trim duplicated plugin and open prose guides
2026-03-13 20:19:39 +00:00
Peter Steinberger
d53d4dc22f
refactor: share zalouser group gating helpers
2026-03-13 20:19:39 +00:00
Peter Steinberger
2dd180472f
refactor: share mattermost interaction test helpers
2026-03-13 20:19:39 +00:00
Peter Steinberger
a5f0f66427
refactor: share zalouser group auth setup
2026-03-13 20:19:38 +00:00
Peter Steinberger
985be2a864
refactor: share acpx ensure install checks
2026-03-13 20:19:38 +00:00
Peter Steinberger
41c9e3ead0
refactor: share cron and zalo monitor test helpers
2026-03-13 18:38:12 +00:00
Peter Steinberger
6464149031
refactor: share feishu webhook monitor harness
2026-03-13 18:38:12 +00:00
Peter Steinberger
369430f9ab
refactor: share tlon upload test mocks
2026-03-13 17:29:59 +00:00
Peter Steinberger
e358d57fb5
refactor: share feishu reply fallback flow
2026-03-13 16:51:59 +00:00
Peter Steinberger
a14a32695d
refactor: share feishu reaction client setup
2026-03-13 16:51:59 +00:00
Peter Steinberger
acfb95e2c6
refactor: share tlon channel put requests
2026-03-13 16:51:59 +00:00
Peter Steinberger
fb40b09157
refactor: share feishu media client setup
2026-03-13 16:51:59 +00:00
Peter Steinberger
6b04ab1e35
refactor: share teams drive upload flow
2026-03-13 16:51:59 +00:00
Peter Steinberger
a4525b721e
refactor: deduplicate nextcloud send context
2026-03-13 16:51:59 +00:00
Peter Steinberger
6b07604d64
refactor: share nextcloud target normalization
2026-03-13 16:51:59 +00:00
Peter Steinberger
ef8cc3d0fb
refactor: share tlon inline text rendering
2026-03-13 16:51:59 +00:00
Peter Steinberger
261a40dae1
fix: narrow acpx health failure handling
2026-03-13 16:30:27 +00:00
Peter Steinberger
3f37afd18c
refactor: extract acpx event builders
2026-03-13 16:30:27 +00:00
Peter Steinberger
f4ed317083
refactor: deduplicate acpx availability checks
2026-03-13 16:30:27 +00:00
Peter Steinberger
16ececf0a6
chore: bump version to 2026.3.13
2026-03-13 04:38:32 +00:00
Peter Steinberger
496ca3a637
fix(feishu): fail closed on webhook signature checks
2026-03-13 03:13:56 +00:00
Peter Steinberger
de3e6a8c5b
fix(routing): require ids for slack and msteams allowlists
2026-03-13 01:44:42 +00:00
Peter Steinberger
88244c0942
refactor(zalouser): reuse shared name matching helper
2026-03-13 01:44:42 +00:00
Peter Steinberger
c25e46a433
chore: prepare 2026.3.12 release
2026-03-13 01:38:20 +00:00
Peter Steinberger
b14a5c6713
fix(zalouser): require ids for group allowlist auth
2026-03-13 01:31:17 +00:00
Peter Steinberger
87ad1ce9b1
refactor: add non-interactive provider plugin setup
2026-03-13 01:19:35 +00:00
Vincent Koc
fed24a1311
build: sync bundled plugin versions
2026-03-12 21:06:12 -04:00
Peter Steinberger
4dd4e36450
build: update deps and fix vitest 4 regressions
2026-03-13 01:02:00 +00:00
Peter Steinberger
86a3149b2e
fix: harden windows npm runtime path
2026-03-12 23:03:19 +00:00
Vincent Koc
92191fcd68
deps: bump openclaw to 2026.3.11
...
Raise internal OpenClaw constraints to 2026.3.11 and regenerate pnpm lockfile to remove the vulnerable 2026.3.8 resolution.
2026-03-12 19:00:49 -04:00
Peter Steinberger
212afb6950
refactor: clarify pairing setup auth labels
2026-03-12 22:46:28 +00:00
Peter Steinberger
1c7ca391a8
refactor: trim bootstrap token metadata
2026-03-12 22:46:28 +00:00
Peter Steinberger
d83491e751
feat: modularize provider plugin architecture
2026-03-12 22:24:35 +00:00
Peter Steinberger
bf89947a8e
fix: switch pairing setup codes to bootstrap tokens
2026-03-12 22:23:07 +00:00
Vincent Koc
f96ba87f03
Zalo: rate limit invalid webhook secret guesses before auth ( #44173 )
...
* Zalo: rate limit webhook guesses before auth
* Tests: cover pre-auth Zalo webhook rate limiting
* Changelog: note Zalo pre-auth rate limiting
* Zalo: preserve auth-before-content-type response ordering
* Tests: cover auth-before-content-type webhook ordering
* Zalo: split auth and unauth webhook rate-limit buckets
* Tests: cover auth bucket split for Zalo webhook rate limiting
* Zalo: use trusted proxy client IP for webhook rate limiting
* Tests: cover trusted proxy client IP rate limiting for Zalo
2026-03-12 12:30:50 -04:00
Vincent Koc
7844bc89a1
Security: require Feishu webhook encrypt key ( #44087 )
...
* Feishu: require webhook encrypt key in schema
* Feishu: cover encrypt key webhook validation
* Feishu: enforce encrypt key at startup
* Feishu: add webhook forgery regression test
* Feishu: collect encrypt key during onboarding
* Docs: require Feishu webhook encrypt key
* Changelog: note Feishu webhook hardening
* Docs: clarify Feishu encrypt key screenshot
* Feishu: treat webhook encrypt key as secret input
* Feishu: resolve encrypt key only in webhook mode
2026-03-12 11:01:00 -04:00
Vincent Koc
3e730c0332
Security: preserve Feishu reaction chat type ( #44088 )
...
* Feishu: preserve looked-up chat type
* Feishu: fail closed on ambiguous reaction chats
* Feishu: cover reaction chat type fallback
* Changelog: note Feishu reaction hardening
* Feishu: fail closed without resolved chat type
* Feishu: normalize reaction chat type at runtime
2026-03-12 10:53:40 -04:00
Lyle
c965049dc6
fix(mattermost): pass mediaLocalRoots through reply delivery ( #44021 )
...
Merged via squash.
Prepared head SHA: 856f11f129
Co-authored-by: LyleLiu666 <31182860+LyleLiu666@users.noreply.github.com>
Co-authored-by: mukhtharcm <56378562+mukhtharcm@users.noreply.github.com>
Reviewed-by: @mukhtharcm
2026-03-12 20:13:51 +05:30
Teconomix
171d2df9e0
feat(mattermost): add replyToMode support (off | first | all) ( #29587 )
...
Merged via squash.
Prepared head SHA: 4a67791f53
Co-authored-by: teconomix <6959299+teconomix@users.noreply.github.com>
Co-authored-by: mukhtharcm <56378562+mukhtharcm@users.noreply.github.com>
Reviewed-by: @mukhtharcm
2026-03-12 18:03:12 +05:30
Nimrod Gutman
4f620bebe5
fix(doctor): canonicalize gateway service entrypoint paths ( #43882 )
...
Merged via squash.
Prepared head SHA: 9f530d2a86
Co-authored-by: ngutman <1540134+ngutman@users.noreply.github.com>
Co-authored-by: ngutman <1540134+ngutman@users.noreply.github.com>
Reviewed-by: @ngutman
2026-03-12 12:39:22 +02:00
Ayaan Zaidi
783a0d540f
fix: add zalouser outbound chunker
2026-03-12 15:47:12 +05:30
darkamenosa
a6711afdc2
feat(zalouser): add markdown-to-Zalo text style parsing ( #43324 )
...
* feat(zalouser): add markdown-to-Zalo text style parsing
Parse markdown formatting (bold, italic, strikethrough, headings, lists,
code blocks, blockquotes, custom color/style tags) into Zalo native
TextStyle ranges so outbound messages render with rich formatting.
- Add text-styles.ts with parseZalouserTextStyles() converter
- Wire markdown mode into send pipeline (sendMessageZalouser)
- Export TextStyle enum and Style type from zca-client
- Add textMode/textStyles to ZaloSendOptions
- Pass textStyles through sendZaloTextMessage to zca-js API
- Enable textMode:"markdown" in outbound sendText/sendMedia and monitor
- Add comprehensive tests for parsing, send, and channel integration
* fix(zalouser): harden markdown text parsing
* fix(zalouser): mirror zca-js text style types
* fix(zalouser): support tilde fenced code blocks
* fix(zalouser): handle quoted fenced code blocks
* fix(zalouser): preserve literal quote lines in code fences
* fix(zalouser): support indented quoted fences
* fix(zalouser): preserve quoted markdown blocks
* fix(zalouser): rechunk formatted messages
* fix(zalouser): preserve markdown structure across chunks
* fix(zalouser): honor chunk limits and CRLF fences
2026-03-12 16:24:15 +07:00
Xaden Ryan
658bd54ecf
feat(llm-task): add thinking override
...
Co-authored-by: Xaden Ryan <165437834+xadenryan@users.noreply.github.com>
2026-03-12 19:21:35 +11:00
Vincent Koc
4dfd8eea90
BlueBubbles: require confirmed outbound for self-chat cache
2026-03-12 03:22:57 -04:00
Mathias Nagler
e8a162d3d8
fix(mattermost): prevent duplicate messages when block streaming + threading are active ( #41362 )
...
* fix(mattermost): prevent duplicate messages when block streaming + threading are active
Remove replyToId from createBlockReplyPayloadKey so identical content is
deduplicated regardless of threading target. Add explicit threading dock
to the Mattermost plugin with resolveReplyToMode reading from config
(default "all"), and add replyToMode to the Mattermost config schema.
Fixes #41219
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix(mattermost): address PR review — per-account replyToMode and test clarity
Read replyToMode from the merged per-account config via
resolveMattermostAccount so account-level overrides are honored in
multi-account setups. Add replyToMode to MattermostAccountConfig type.
Rename misleading test to clarify it exercises shouldDropFinalPayloads
short-circuit, not payload key dedup.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Replies: keep block-pipeline reply targets distinct
* Tests: cover block reply target-aware dedupe
* Update CHANGELOG.md
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-03-12 03:15:17 -04:00
Vincent Koc
241e8cc553
fix(bluebubbles): dedupe reflected self-chat duplicates ( #38442 )
...
* BlueBubbles: drop reflected self-chat duplicates
* Changelog: add BlueBubbles self-chat echo dedupe entry
* BlueBubbles: gate self-chat cache and expand coverage
* BlueBubbles: require explicit sender ids for self-chat dedupe
* BlueBubbles: harden self-chat cache
* BlueBubbles: move self-chat cache identity into cache
* BlueBubbles: gate self-chat cache to confirmed outbound sends
* Update CHANGELOG.md
* BlueBubbles: bound self-chat cache input work
* Tests: cover BlueBubbles cache cap under cleanup throttle
* BlueBubbles: canonicalize self-chat DM scope
* Tests: cover BlueBubbles mixed self-chat scope aliases
2026-03-12 03:11:43 -04:00
Peter Steinberger
ce5dd742f8
build: sync versions to 2026.3.11
2026-03-12 04:01:57 +00:00
Peter Steinberger
0e397e62b7
chore: bump version to 2026.3.10
2026-03-11 23:29:53 +00:00
Peter Steinberger
9c81c31232
chore: refresh dependencies except carbon
2026-03-11 20:10:33 +00:00
ademczuk
8618a711ff
fix(voice-call): add speed and instructions to OpenAI TTS config schema ( #39226 )
...
Merged via squash.
Prepared head SHA: 775e3063b5
Co-authored-by: ademczuk <5212682+ademczuk@users.noreply.github.com>
Co-authored-by: obviyus <22031114+obviyus@users.noreply.github.com>
Reviewed-by: @obviyus
2026-03-11 23:15:48 +05:30
Ayaan Zaidi
bf70a333fa
fix: clear pnpm prod audit vulnerabilities
2026-03-11 09:33:45 +05:30
Peter Steinberger
f4a4b50cd5
refactor: compile allowlist matchers
2026-03-11 00:07:47 +00:00
Josh Avant
36d2ae2a22
SecretRef: harden custom/provider secret persistence and reuse ( #42554 )
...
* Models: gate custom provider keys by usable secret semantics
* Config: project runtime writes onto source snapshot
* Models: prevent stale apiKey preservation for marker-managed providers
* Runner: strip SecretRef marker headers from resolved models
* Secrets: scan active agent models.json path in audit
* Config: guard runtime-source projection for unrelated configs
* Extensions: fix onboarding type errors in CI
* Tests: align setup helper account-enabled expectation
* Secrets audit: harden models.json file reads
* fix: harden SecretRef custom/provider secret persistence (#42554 ) (thanks @joshavant)
2026-03-10 23:55:10 +00:00
Peter Steinberger
201420a7ee
fix: harden secret-file readers
2026-03-10 23:40:10 +00:00
Peter Steinberger
bc1cc2e50f
refactor: share telegram payload send flow
2026-03-10 22:18:04 +00:00
Peter Steinberger
a455c0cc3d
refactor: share passive account lifecycle helpers
2026-03-10 22:18:04 +00:00
Peter Steinberger
50ded5052f
refactor: share channel config schema fragments
2026-03-10 22:18:04 +00:00
Peter Steinberger
4a8e039a5f
refactor: share channel config security scaffolding
2026-03-10 22:18:04 +00:00
Peter Steinberger
725958c66f
refactor: share onboarding secret prompt flows
2026-03-10 22:18:03 +00:00
Peter Steinberger
00170f8e1a
refactor: share scoped account config patching
2026-03-10 22:18:03 +00:00
Rodrigo Uroz
ff2e7a2945
fix(acp): strip provider auth env for child ACP processes (openclaw#42250)
...
Verified:
- pnpm build
- pnpm check
- pnpm test:macmini
Co-authored-by: rodrigouroz <384037+rodrigouroz@users.noreply.github.com>
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>
2026-03-10 16:50:10 -05:00
Peter Steinberger
f209a9be80
test: extract sendpayload outbound contract suite
2026-03-10 20:35:03 +00:00
Peter Steinberger
0976317f96
test: deduplicate diffs extension fixtures
2026-03-10 20:22:56 +00:00
Echo
bda63c3c7f
fix(mattermost): preserve markdown formatting and native tables ( #18655 )
...
Merged via squash.
Prepared head SHA: d30fff1776
Co-authored-by: echo931 <259437483+echo931@users.noreply.github.com>
Co-authored-by: mukhtharcm <56378562+mukhtharcm@users.noreply.github.com>
Reviewed-by: @mukhtharcm
2026-03-10 17:40:01 +05:30
Pejman Pour-Moezzi
aca216bfcf
feat(acp): add resumeSessionId to sessions_spawn for ACP session resume ( #41847 )
...
* feat(acp): add resumeSessionId to sessions_spawn for ACP session resume
Thread resumeSessionId through the ACP session spawn pipeline so agents
can resume existing sessions (e.g. a prior Codex conversation) instead
of starting fresh.
Flow: sessions_spawn tool → spawnAcpDirect → initializeSession →
ensureSession → acpx --resume-session flag → agent session/load
- Add resumeSessionId param to sessions-spawn-tool schema with
description so agents can discover and use it
- Thread through SpawnAcpParams → AcpInitializeSessionInput →
AcpRuntimeEnsureInput → acpx extension runtime
- Pass as --resume-session flag to acpx CLI
- Error hard (exit 4) on non-existent session, no silent fallback
- All new fields optional for backward compatibility
Depends on acpx >= 0.1.16 (openclaw/acpx#85, merged, pending release).
Tests: 26/26 pass (runtime + tool schema)
Verified e2e: Discord → sessions_spawn(resumeSessionId) → Codex
resumed session and recalled stored secret.
🤖 AI-assisted
* fix: guard resumeSessionId against non-ACP runtime
Add early-return error when resumeSessionId is passed without
runtime="acp" (mirrors existing streamTo guard). Without this,
the parameter is silently ignored and the agent gets a fresh
session instead of resuming.
Also update schema description to note the runtime=acp requirement.
Addresses Greptile review feedback.
* ACP: add changelog entry for session resume (#41847 ) (thanks @pejmanjohn)
---------
Co-authored-by: Pejman Pour-Moezzi <481729+pejmanjohn@users.noreply.github.com>
Co-authored-by: Onur <onur@textcortex.com>
2026-03-10 10:36:13 +01:00
Bob
c2eb12bbc5
ACPX: bump bundled acpx to 0.1.16 ( #41975 )
...
* ACPX: bump bundled acpx to 0.1.16
* fix: bump acpx pin to 0.1.16 (#41975 ) (thanks @dutifulbob)
---------
Co-authored-by: Onur <2453968+osolmaz@users.noreply.github.com>
2026-03-10 10:18:09 +01:00
Teconomix
6d0547dc2e
mattermost: fix DM media upload for unprefixed user IDs ( #29925 )
...
Merged via squash.
Prepared head SHA: 5cffcb072c
Co-authored-by: teconomix <6959299+teconomix@users.noreply.github.com>
Co-authored-by: mukhtharcm <56378562+mukhtharcm@users.noreply.github.com>
Reviewed-by: @mukhtharcm
2026-03-10 14:22:24 +05:30
Brad Groux
568b0a22bb
fix(msteams): use General channel conversation ID as team key for Bot Framework compatibility ( #41838 )
...
* fix(msteams): use General channel conversation ID as team key for Bot Framework compatibility
Bot Framework sends `activity.channelData.team.id` as the General channel's
conversation ID (e.g. `19:abc@thread.tacv2`), not the Graph API group GUID
(e.g. `fa101332-cf00-431b-b0ea-f701a85fde81`). The startup resolver was
storing the Graph GUID as the team config key, so runtime matching always
failed and every channel message was silently dropped.
Fix: always call `listChannelsForTeam` during resolution to find the General
channel, then use its conversation ID as the stored `teamId`. When a specific
channel is also configured, reuse the same channel list rather than issuing a
second API call. Falls back to the Graph GUID if the General channel cannot
be found (renamed/deleted edge case).
Fixes #41390
* fix(msteams): handle listChannelsForTeam failure gracefully
* fix(msteams): trim General channel ID and guard against empty string
* fix: document MS Teams allowlist team-key fix (#41838 ) (thanks @BradGroux)
---------
Co-authored-by: bradgroux <bradgroux@users.noreply.github.com>
Co-authored-by: Onur <onur@textcortex.com>
2026-03-10 09:13:41 +01:00
Daniel Hnyk
450d49ea52
fix(mattermost): read replyTo param in plugin handleAction send ( #41176 )
...
Merged via squash.
Prepared head SHA: 33cac4c33f
Co-authored-by: hnykda <2741256+hnykda@users.noreply.github.com>
Co-authored-by: mukhtharcm <56378562+mukhtharcm@users.noreply.github.com>
Reviewed-by: @mukhtharcm
2026-03-10 13:19:54 +05:30
Eugene
45b74fb56c
fix(telegram): move network fallback to resolver-scoped dispatchers ( #40740 )
...
Merged via squash.
Prepared head SHA: a4456d48b4
Co-authored-by: sircrumpet <4436535+sircrumpet@users.noreply.github.com>
Co-authored-by: obviyus <22031114+obviyus@users.noreply.github.com>
Reviewed-by: @obviyus
2026-03-10 11:28:51 +05:30
Ayane
391f9430ca
fix(feishu): pass mediaLocalRoots in sendText local-image auto-convert shim (openclaw#40623)
...
Verified:
- pnpm build
- pnpm check
- pnpm test:macmini
Co-authored-by: ayanesakura <40628300+ayanesakura@users.noreply.github.com>
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>
2026-03-09 22:26:06 -05:00
Ayaan Zaidi
e74666cd0a
build: raise extension openclaw peer floor
2026-03-10 08:47:56 +05:30
Harold Hunt
de49a8b72c
Telegram: exec approvals for OpenCode/Codex ( #37233 )
...
Merged via squash.
Prepared head SHA: f243379094
Co-authored-by: huntharo <5617868+huntharo@users.noreply.github.com>
Co-authored-by: huntharo <5617868+huntharo@users.noreply.github.com>
Reviewed-by: @huntharo
2026-03-09 23:04:35 -04:00
Xinhua Gu
4790e40ac6
fix(plugins): expose model auth API to context-engine plugins ( #41090 )
...
Merged via squash.
Prepared head SHA: ee96e96bb9
Co-authored-by: xinhuagu <562450+xinhuagu@users.noreply.github.com>
Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com>
Reviewed-by: @jalehman
2026-03-09 16:07:26 -07:00
Mariano
0c7f07818f
acp: add regression coverage and smoke-test docs ( #41456 )
...
Merged via squash.
Prepared head SHA: 514d587352
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com>
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com>
Reviewed-by: @mbelinky
2026-03-09 22:40:14 +01:00
Mariano
4aebff78bc
acp: forward attachments into ACP runtime sessions ( #41427 )
...
Merged via squash.
Prepared head SHA: f2ac51df2c
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com>
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com>
Reviewed-by: @mbelinky
2026-03-09 22:32:32 +01:00
Peter Steinberger
f6d0712f50
build: sync plugin versions for 2026.3.9
2026-03-09 08:39:52 +00:00
Peter Steinberger
5fca4c0de0
chore: prepare 2026.3.8-beta.1 release
2026-03-09 07:09:37 +00:00
Peter Steinberger
2e79d82198
build: update app deps except carbon
2026-03-09 06:09:33 +00:00
Peter Steinberger
88aee9161e
fix(msteams): enforce sender allowlists with route allowlists
2026-03-09 05:52:19 +00:00
Bronko
d4a960fcca
fix(matrix): restore robust DM routing without the memberCount heuristic ( #19736 )
...
* fix(matrix): remove memberCount heuristic from DM detection
The memberCount === 2 check in isDirectMessage() misclassifies 2-person
group rooms (admin channels, monitoring rooms) as DMs, routing them to
the main session instead of their room-specific session.
Matrix already distinguishes DMs from groups at the protocol level via
m.direct account data and is_direct member state flags. Both are already
checked by client.dms.isDm() and hasDirectFlag(). The memberCount
heuristic only adds false positives for 2-person groups.
Move resolveMemberCount() below the protocol-level checks so it is only
reached for rooms not matched by m.direct or is_direct. This narrows its
role to diagnostic logging for confirmed group rooms.
Refs: #19739
* fix(matrix): add conservative fallback for broken DM flags
Some homeservers (notably Continuwuity) have broken m.direct account
data or never set is_direct on invite events. With the memberCount
heuristic removed, these DMs are no longer detected.
Add a conservative fallback that requires two signals before classifying
as DM: memberCount === 2 AND no explicit m.room.name. Group rooms almost
always have explicit names; DMs almost never do.
Error handling distinguishes M_NOT_FOUND (missing state event, expected
for unnamed rooms) from network/auth errors. Non-404 errors fall through
to group classification rather than guessing.
This is independently revertable — removing this commit restores pure
protocol-based detection without any heuristic fallback.
* fix(matrix): add parentPeer for DM room binding support
Add parentPeer to DM routes so conversations are bindable by room ID
while preserving DM trust semantics (secure 1:1, no group restrictions).
Suggested by @KirillShchetinin.
* fix(matrix): override DM detection for explicitly configured rooms
Builds on @robertcorreiro's config-driven approach from #9106 .
Move resolveMatrixRoomConfig() before the DM check. If a room matches
a non-wildcard config entry (matchSource === "direct") and was
classified as DM, override the classification to group. This gives users
a deterministic escape hatch for misclassified rooms.
Wildcards are excluded from the override to avoid breaking DM routing
when a "*" catch-all exists. roomConfig is gated behind isRoom so DMs
never inherit group settings (skills, systemPrompt, autoReply).
This commit is independently droppable if the scope is too broad.
* test(matrix): add DM detection and config override tests
- 15 unit tests for direct.ts: all detection paths, priority order,
M_NOT_FOUND vs network error handling, edge cases (whitespace names,
API failures)
- 8 unit tests for rooms.ts: matchSource classification, wildcard
safety for DM override, direct match priority over wildcard
* Changelog: note matrix DM routing follow-up
* fix(matrix): preserve DM fallback and room bindings
---------
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>
2026-03-08 23:26:48 -05:00
Tak Hoffman
ef36cb8cbc
chore(acpx): move runtime test fixtures to test-utils (openclaw#40548)
...
Verified:
- pnpm install --frozen-lockfile
- pnpm build
- pnpm check
- pnpm test:macmini
2026-03-08 22:47:04 -05:00
Kyle
a438ff4397
fix(plugin-sdk): remove remaining bundled plugin src imports (openclaw#39638)
...
Verified:
- pnpm build
- pnpm check
- pnpm test:macmini
Co-authored-by: Kyle <3477429+kyledh@users.noreply.github.com>
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>
2026-03-08 22:32:45 -05:00
Peter Steinberger
141738f717
refactor: harden browser runtime profile handling
2026-03-09 00:25:43 +00:00
Peter Steinberger
936ac22ec2
refactor: share channel config adapter base
2026-03-08 23:38:24 +00:00
Peter Steinberger
5845b5bfba
refactor: share multi-account config schema fragments
2026-03-08 23:38:24 +00:00
Peter Steinberger
8d7778d1d6
refactor: dedupe plugin runtime stores
2026-03-08 23:38:24 +00:00
Peter Steinberger
64d4d9aabb
refactor: move bundled extension gap allowlists into manifests
2026-03-08 18:26:35 +00:00
darkamenosa
67b2e81360
Zalo: fix provider lifecycle restarts ( #39892 )
...
* Zalo: fix provider lifecycle restarts
* Zalo: add typing indicators, smart webhook cleanup, and API type fixes
* fix review
* add allow list test secrect
* Zalo: bound webhook cleanup during shutdown
* Zalo: bound typing chat action timeout
* Zalo: use plugin-safe abort helper import
2026-03-08 22:33:18 +07:00
Daniel Hnyk
9425209602
fix(mattermost): pass payload.replyToId as root_id for threaded replies ( #27744 )
...
Merged via squash.
Prepared head SHA: e029079872
Co-authored-by: hnykda <2741256+hnykda@users.noreply.github.com>
Co-authored-by: mukhtharcm <56378562+mukhtharcm@users.noreply.github.com>
Reviewed-by: @mukhtharcm
2026-03-08 14:13:13 +05:30
Peter Steinberger
05217845a7
build: bump version to 2026.3.8
2026-03-08 05:59:04 +00:00
Peter Steinberger
06ffef8465
fix(ci): repair zalouser CI failures
2026-03-08 05:09:12 +00:00
Peter Steinberger
fcdc1a13e1
fix: land #33992 from @darkamenosa
...
Co-authored-by: Tom <hxtxmu@gmail.com>
2026-03-08 04:49:04 +00:00
Peter Steinberger
f2a4bdf069
fix(ci): resolve current gate regressions
2026-03-08 03:34:36 +00:00
Peter Steinberger
ed437434af
refactor(voice-call): share tts deep merge
2026-03-08 03:22:55 +00:00
Peter Steinberger
5659d7f985
fix: land #39337 by @goodspeed-apps for acpx MCP bootstrap
...
Co-authored-by: Goodspeed App Studio <goodspeed-apps@users.noreply.github.com>
2026-03-08 03:16:26 +00:00
Peter Steinberger
f72114173c
fix(ci): resolve type regressions on main
2026-03-08 03:11:24 +00:00
Peter Steinberger
f6c7ff3e0e
refactor: preserve explicit mock voice-call values
2026-03-08 03:02:25 +00:00
Peter Steinberger
2646739d23
refactor: centralize strict numeric parsing
2026-03-08 03:02:25 +00:00
Peter Steinberger
3087893ef9
refactor: normalize voice-call runtime defaults
2026-03-08 03:02:25 +00:00
Peter Steinberger
56cd0084d9
test: fix gate regressions
2026-03-08 02:45:08 +00:00
Vincent Koc
244aabb0cb
Voice Call: read realtime STT internals in tests
2026-03-07 18:42:17 -08:00
Vincent Koc
b1f7cf46d8
Voice Call: read TTS internals in tests
2026-03-07 18:42:15 -08:00
Vincent Koc
b8b65692c0
Voice Call: allowlist realtime STT api key fixtures
2026-03-07 18:39:39 -08:00
Peter Steinberger
442f2c36b3
fix: honor explicit OpenAI TTS speed values
...
Landed from contributor PR #39318 by @ql-wade.
Co-authored-by: ql-wade <wade@openclaw.ai>
2026-03-08 02:38:44 +00:00
Peter Steinberger
28b72e5cb0
fix: honor zero-valued voice-call STT settings
...
Landed from contributor PR #39196 by @scoootscooob.
Co-authored-by: scoootscooob <zhentongfan@gmail.com>
2026-03-08 02:36:41 +00:00
Peter Steinberger
af9d76b79a
fix: honor explicit Synology Chat rate-limit env values
...
Landed from contributor PR #39197 by @scoootscooob.
Co-authored-by: scoootscooob <zhentongfan@gmail.com>
2026-03-08 02:34:19 +00:00
Peter Steinberger
9d7d961db8
fix: restore Telegram webhook-mode health after restarts
...
Landed from contributor PR #39313 by @fellanH.
Co-authored-by: Felix Hellström <30758862+fellanH@users.noreply.github.com>
2026-03-08 02:27:18 +00:00
Vincent Koc
d83f2c145a
Zalo User: use scoped plugin SDK imports
2026-03-07 16:27:00 -08:00
Vincent Koc
5b0fa341fb
Zalo: use scoped plugin SDK imports
2026-03-07 16:27:00 -08:00
Vincent Koc
b46ac250d1
WhatsApp: use scoped plugin SDK imports
2026-03-07 16:27:00 -08:00
Vincent Koc
e9cf3506fd
Telegram: use scoped plugin SDK imports
2026-03-07 16:27:00 -08:00
Vincent Koc
d899990b44
Slack: use scoped plugin SDK imports
2026-03-07 16:27:00 -08:00
Vincent Koc
4bcef8631c
Signal: use scoped plugin SDK imports
2026-03-07 16:27:00 -08:00
Vincent Koc
c7c5c0edaa
Nextcloud Talk: use scoped plugin SDK imports
2026-03-07 16:26:59 -08:00
Vincent Koc
6035677545
Teams: use scoped plugin SDK allowlist imports
2026-03-07 16:26:59 -08:00
Vincent Koc
6b2adf663e
Teams: use scoped plugin SDK channel imports
2026-03-07 16:26:59 -08:00
Vincent Koc
4cc619f06c
Mattermost: use scoped plugin SDK imports
2026-03-07 16:26:59 -08:00