Skip to content

Cherry-pick batch: Channel adapter bug fixes (11 of 30 commits)#1846

Merged
alexey-pelykh merged 13 commits intomainfrom
staging/cherry-pick-1824
Mar 23, 2026
Merged

Cherry-pick batch: Channel adapter bug fixes (11 of 30 commits)#1846
alexey-pelykh merged 13 commits intomainfrom
staging/cherry-pick-1824

Conversation

@alexey-pelykh
Copy link
Copy Markdown

Cherry-pick batch from upstream

Issue: #1824
Commits: 11 cherry-picked, 1 fix commit, 19 skipped (conflicts)

Successfully picked

# Hash Subject Status
8 7e49e98f7 fix(telegram): validate webhook secret before reading request body RESOLVED
14 c6e32835d fix(feishu): clear stale streamingStartPromise on card creation failure RESOLVED
15 983fecc10 fix(feishu): preserve non-ASCII filenames in file uploads (openclaw#33912) RESOLVED
18 496ca3a63 fix(feishu): fail closed on webhook signature checks PICKED
19 223ae42c7 fix(feishu): harden webhook signature compare RESOLVED
20 a5ceb62d4 fix(whatsapp): trim leading whitespace in direct outbound sends (openclaw#43539) PICKED
21 843e3c1ef fix(whatsapp): restore append recency filter lost in extensions refactor (openclaw#42588) RESOLVED
22 abd948f2b fix(whatsapp): preserve watchdog message age across reconnects RESOLVED
23 10ef58dd6 fix(whatsapp): restore implicit reply mentions for LID identities (openclaw#48494) RESOLVED
26 78b9384aa fix(discord): add missing autoThread to DiscordGuildChannelConfig type (openclaw#35608) RESOLVED
27 e8a162d3d fix(mattermost): prevent duplicate messages with block streaming + threading (openclaw#41362) RESOLVED

Skipped (conflicts beyond CHANGELOG.md)

# Hash Subject Conflict Files
1 e37e1ed24 fix(telegram): prevent duplicate messages with slow LLM providers (openclaw#41932) lane-delivery-text-deliverer.ts, lane-delivery.test.ts, send.ts
2 daf8afc95 fix(telegram): clear stale retain before transient final fallback (openclaw#41763) bot-message-dispatch.test.ts
3 a2e30824e fix(telegram): fall back on ambiguous first preview sends lane-delivery-text-deliverer.ts, lane-delivery.test.ts
4 70abee69e fix(telegram): avoid polling restart hang after stall detection polling-session.ts
5 f417d78ee fix(config): add missing editMessage/createForumTopic to Telegram actions schema (openclaw#35498) config.schema-regressions.test.ts
6 4e45a663e fix(telegram): prevent silent wrong-bot routing when accountId not in config token.test.ts (deleted in fork)
7 ac5e97097 fix(telegram): normalize topic-edit targets send.test.ts, send.ts
9 a90c5092f fix(telegram): default fresh setups to mention-gated groups setup-surface.ts (deleted in fork)
10 8139f8317 fix(telegram): persist sticky IPv4 fallback across polling restarts (openclaw#48177) bot.ts, monitor.ts
11 80110c550 fix(telegram): warn when setup leaves dmPolicy as pairing without allowFrom (openclaw#50710) setup-surface.ts (deleted in fork)
12 8b438a308 fix(telegram): keep silent error fallback replies quiet bot-message-dispatch.test.ts, bot-message-dispatch.ts
13 f4a2bbe0c fix(feishu): add early event-level dedup to prevent duplicate replies (openclaw#43762) bot.ts, monitor.reaction.test.ts
16 8a607d755 fix(feishu): fetch thread context so AI can see bot replies (openclaw#45254) bot.test.ts, send.ts, types.ts, bundle-a2ui.sh
17 e5a42c0be fix(feishu): keep sender-scoped thread bootstrap across id types (openclaw#46651) bot.test.ts, bot.ts
24 487a3ba8c fix(discord): enforce users/roles allowlist in reaction ingress listeners.ts
25 432e8943a fix(discord): dedupe inbound message deliveries (openclaw#51950) message-handler.ts
28 c965049dc fix(mattermost): pass mediaLocalRoots through reply delivery (openclaw#44021) monitor.ts
29 0c926a2c5 fix(mattermost): carry thread context to non-inbound reply paths (openclaw#44283) dispatch-from-config.ts/test.ts
30 de3e6a8c5 fix(routing): require ids for slack and msteams allowlists msteams.md, policy.ts

Fix commit

  • Removed 2 cherry-picked test files with missing fork dependencies (webhook-e2e, append-upsert)

🤖 Generated with Claude Code

hydro13 and others added 12 commits March 23, 2026 10:13
Fixes openclaw#43322

* fix(feishu): clear stale streamingStartPromise on card creation failure

When FeishuStreamingSession.start() throws (HTTP 400), the catch block
sets streaming = null but leaves streamingStartPromise dangling. The
guard in startStreaming() checks streamingStartPromise first, so all
future deliver() calls silently skip streaming - the session locks
permanently.

Clear streamingStartPromise in the catch block so subsequent messages
can retry streaming instead of dropping all future replies.

Fixes openclaw#43322

* test(feishu): wrap push override in try/finally for cleanup safety

(cherry picked from commit c6e3283)
…3912) (openclaw#34262)

* fix(feishu): preserve non-ASCII filenames in file uploads (openclaw#33912)

* style(feishu): format media test file

* fix(feishu): preserve UTF-8 filenames in file uploads (openclaw#34262) thanks @fabiaodemianyang

---------

Co-authored-by: Robin Waslander <[email protected]>
(cherry picked from commit 983fecc)
…claw#43539)

Trim leading whitespace from direct WhatsApp text and media caption sends.

Also guard empty text-only web sends after trimming.

(cherry picked from commit a5ceb62)
…tor, handle Long timestamps (openclaw#42588)

Merged via squash.

Prepared head SHA: 8ce59bb
Co-authored-by: MonkeyLeeT <[email protected]>
Co-authored-by: scoootscooob <[email protected]>
Reviewed-by: @scoootscooob

(cherry picked from commit 843e3c1)
…enclaw#48494)

Threads selfLid from the Baileys socket through the inbound WhatsApp
pipeline and adds LID-format matching to the implicit mention check
in group gating, so reply-to-bot detection works when WhatsApp sends
the quoted sender in @lid format.

Also fixes the device-suffix stripping regex (was a silent no-op).

Closes openclaw#23029

Co-authored-by: sparkyrider <[email protected]>
Reviewed-by: @ademczuk
(cherry picked from commit 10ef58d)
openclaw#35608)

Merged via squash.

Prepared head SHA: e62b88b
Co-authored-by: ingyukoh <[email protected]>
Co-authored-by: altaywtf <[email protected]>
Reviewed-by: @altaywtf

(cherry picked from commit 78b9384)
…reading are active (openclaw#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 openclaw#41219

Co-Authored-By: Claude Opus 4.6 <[email protected]>

* 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 <[email protected]>

* Replies: keep block-pipeline reply targets distinct

* Tests: cover block reply target-aware dedupe

* Update CHANGELOG.md

---------

Co-authored-by: Claude Opus 4.6 <[email protected]>
Co-authored-by: Vincent Koc <[email protected]>
(cherry picked from commit e8a162d)
These tests reference modules (monitor.test-mocks, monitor-inbox.test-harness,
inbound) and import paths (openclaw/plugin-sdk/feishu) that don't exist in
the fork — they depend on upstream infrastructure not present here.

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
@alexey-pelykh alexey-pelykh enabled auto-merge (squash) March 23, 2026 09:16
Cast api.runtime.tts to TelephonyTtsRuntime at the call site and add
missing ttsProviders param to the type — the core textToSpeechTelephony
signature diverged from the extension's type after the RemoteClawConfig
rename.

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
@alexey-pelykh alexey-pelykh merged commit 2340dd1 into main Mar 23, 2026
7 checks passed
@alexey-pelykh alexey-pelykh deleted the staging/cherry-pick-1824 branch March 23, 2026 09:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants