Skip to content

fix(feishu): fall back from missing thread replies#80306

Merged
clawsweeper[bot] merged 8 commits into
mainfrom
fix/feishu-thread-reply-fallback-79349
May 10, 2026
Merged

fix(feishu): fall back from missing thread replies#80306
clawsweeper[bot] merged 8 commits into
mainfrom
fix/feishu-thread-reply-fallback-79349

Conversation

@steipete

Copy link
Copy Markdown
Contributor

Summary:

Verification:

  • pnpm test extensions/feishu/src/send.reply-fallback.test.ts -- --reporter=verbose
  • pnpm test:changed
  • node scripts/run-oxlint.mjs --tsconfig config/tsconfig/oxlint.extensions.json extensions/feishu/src/send.ts extensions/feishu/src/send.reply-fallback.test.ts
  • git diff --check
  • pnpm check:changelog-attributions

Fixes #79349

@steipete

Copy link
Copy Markdown
Contributor Author

@clawsweeper automerge

@openclaw-barnacle openclaw-barnacle Bot added channel: feishu Channel integration: feishu size: S maintainer Maintainer-authored PR labels May 10, 2026
@clawsweeper clawsweeper Bot added the clawsweeper:automerge Maintainer opted this PR into bounded ClawSweeper-reviewed automerge label May 10, 2026
@steipete steipete added the proof: override Maintainer override for the external PR real behavior proof gate. label May 10, 2026
@clawsweeper

clawsweeper Bot commented May 10, 2026

Copy link
Copy Markdown
Contributor

🦞✅
ClawSweeper merged this PR after the passing review.

Source: clawsweeper[bot]
Feedback: structured ClawSweeper verdict: pass (sha=93146f9d1357636d5f6493bdc6ce4b547f015331)
Merge status: merged by ClawSweeper automerge
Merged at: 2026-05-10T16:41:51Z
Merge commit: f9c0dc2d2b9e

What merged:

  • The branch adds an opt-in Feishu top-level group-send fallback for withdrawn or missing normal quoted thread replies, plus regression coverage, a changelog entry, and CI/lint typing and baseline refreshes.
  • Reproducibility: yes. at source level. Current main hard-errors withdrawn/not-found Feishu reply targets when replyInThread is true, and the existing regression test asserts that no top-level create fallback occurs.

Automerge notes:

  • PR branch already contained follow-up commit before automerge: fix(feishu): fall back from missing thread replies
  • PR branch already contained follow-up commit before automerge: fix(clawsweeper): address review for automerge-openclaw-openclaw-8030…
  • PR branch already contained follow-up commit before automerge: fix(clawsweeper): reconcile automerge-openclaw-openclaw-80306 with ma…
  • PR branch already contained follow-up commit before automerge: fix(ci): satisfy stricter lint and test types
  • PR branch already contained follow-up commit before automerge: fix(ci): align Node 24 test typing

The automerge loop is complete.

Automerge progress:

  • 2026-05-10 16:07:50 UTC review passed 8f24be7cfd6e (structured ClawSweeper verdict: pass (sha=8f24be7cfd6e2d77411e729783884d716cdad...)
  • 2026-05-10 15:00:53 UTC review queued 64e848dfd722 (queued)
  • 2026-05-10 16:22:37 UTC review passed 64e848dfd722 (structured ClawSweeper verdict: pass (sha=64e848dfd7228661cff99ec0b3c764000d380...)
  • 2026-05-10 16:32:55 UTC review passed e4bb50e30d89 (structured ClawSweeper verdict: pass (sha=e4bb50e30d898edf78e8554723ed39d712f77...)
  • 2026-05-10 16:40:18 UTC review passed 93146f9d1357 (structured ClawSweeper verdict: pass (sha=93146f9d1357636d5f6493bdc6ce4b547f015...)
  • 2026-05-10 16:41:53 UTC merged 93146f9d1357 (merged by ClawSweeper automerge)

@clawsweeper

clawsweeper Bot commented May 10, 2026

Copy link
Copy Markdown
Contributor

Codex review: passed.

Summary
The branch adds an opt-in Feishu top-level group-send fallback for withdrawn or missing normal quoted thread replies, plus regression coverage, a changelog entry, and CI/lint typing and baseline refreshes.

Reproducibility: yes. at source level. Current main hard-errors withdrawn/not-found Feishu reply targets when replyInThread is true, and the existing regression test asserts that no top-level create fallback occurs.

Real behavior proof
Override: The PR has proof: override, so external after-fix real behavior proof is intentionally bypassed and no contributor proof action is needed.

Next step before merge
No repair lane is needed; there are no blocking findings, proof is overridden, and automerge should be gated by exact-head CI plus mergeability.

Security
Cleared: The diff does not add dependencies, lifecycle hooks, workflow permissions, secret handling, or downloaded code execution; the security-tooling edit is a small deterministic compile-rule cleanup.

Review details

Best possible solution:

Land this PR after exact-head CI and mergeability gates pass, keeping fallback limited to normal quoted group replies while preserving strict native topic and unrelated Feishu API failure behavior.

Do we have a high-confidence way to reproduce the issue?

Yes, at source level. Current main hard-errors withdrawn/not-found Feishu reply targets when replyInThread is true, and the existing regression test asserts that no top-level create fallback occurs.

Is this the best way to solve the issue?

Yes. The PR’s dispatcher-scoped opt-in is narrower than unconditional thread fallback and keeps native topic replies plus non-withdrawn API failures strict.

What I checked:

  • Current main failure path: Current main still constructs a hard error whenever replyInThread is true, so withdrawn/not-found Feishu reply targets do not fall through to direct group create fallback. (extensions/feishu/src/send.ts:163, 93ba92462f87)
  • Current main regression expectation: The current test suite explicitly expects thread replies to reject and createMock not to be called for withdrawn targets, matching the reported loss path. (extensions/feishu/src/send.reply-fallback.test.ts:214, 93ba92462f87)
  • Documented behavior surface: Feishu docs list inline replies, thread replies, and thread-aware media replies as supported send behavior, so this is broken existing behavior rather than a new channel mode. Public docs: docs/channels/feishu.md. (docs/channels/feishu.md:474, 93ba92462f87)
  • PR fallback implementation: The PR changes sendReplyOrFallbackDirect so withdrawn/not-found reply failures may fall back only when allowTopLevelReplyFallback is explicitly true; non-withdrawn API failures remain hard errors. (extensions/feishu/src/send.ts:161, 93146f9d1357)
  • PR dispatcher scope: The dispatcher enables top-level fallback only for effective thread replies with a distinct root and reply target, which matches normal quoted group replies while preserving native topic/root behavior. (extensions/feishu/src/reply-dispatcher.ts:147, 93146f9d1357)
  • Adjacent routing contract: Current Feishu bot tests distinguish normal group quoted replies (replyToMessageId is the triggering message, rootId is the original message) from topic-mode replies (replyToMessageId equals rootId). (extensions/feishu/src/bot.test.ts:2719, 8694a6a7447c)

Likely related people:

  • steipete: Prior merged commits by Peter Steinberger touch Feishu target routing, reply fallback, and channel fallback behavior in the central send/thread area; this PR author also appears in that prior merged history, not only as the proposer here. (role: recent Feishu send/thread contributor; confidence: high; commits: 2a252a14cc9f, 6ea3a47dae5a, 9ece252a65af; files: extensions/feishu/src/send.ts, extensions/feishu/src/reply-dispatcher.ts, extensions/feishu/src/bot.ts)
  • m1heng: The Feishu package metadata identifies the plugin as community maintained by @m1heng, making them a relevant reviewer for Feishu behavior decisions. (role: Feishu plugin community owner; confidence: medium; files: extensions/feishu/package.json)
  • Madoka: A prior merged commit added the comprehensive Feishu reply mechanism, outbound replyToId forwarding, and topic-aware reply targeting adjacent to this fallback boundary. (role: reply routing feature contributor; confidence: medium; commits: 63ce7c74bdc0; files: extensions/feishu/src/send.ts, extensions/feishu/src/reply-dispatcher.ts, extensions/feishu/src/bot.ts)
  • kcinzgg: A prior merged commit introduced the Feishu replyInThread configuration family involved in this failure mode. (role: replyInThread feature contributor; confidence: medium; commits: 89669a33bd67; files: extensions/feishu/src/config-schema.ts, extensions/feishu/src/send.ts)

Codex review notes: model gpt-5.5, reasoning high; reviewed against 93ba92462f87.

Re-review progress:

@clawsweeper
clawsweeper Bot force-pushed the fix/feishu-thread-reply-fallback-79349 branch from 0d7c9a4 to 062282d Compare May 10, 2026 15:29
@openclaw-barnacle openclaw-barnacle Bot added channel: discord Channel integration: discord channel: googlechat Channel integration: googlechat channel: line Channel integration: line channel: slack Channel integration: slack channel: telegram Channel integration: telegram extensions: memory-core Extension: memory-core extensions: codex channel: synology-chat size: M and removed size: S labels May 10, 2026
@clawsweeper
clawsweeper Bot force-pushed the fix/feishu-thread-reply-fallback-79349 branch from 062282d to de76d23 Compare May 10, 2026 15:46
@openclaw-barnacle openclaw-barnacle Bot added channel: nextcloud-talk Channel integration: nextcloud-talk channel: irc channel: qqbot gateway Gateway runtime cli CLI command changes security Security documentation commands Command implementations agents Agent runtime and tooling and removed size: M labels May 10, 2026
@openclaw-barnacle openclaw-barnacle Bot added channel: zalo Channel integration: zalo and removed channel: qqbot extensions: lmstudio labels May 10, 2026
@steipete
steipete force-pushed the fix/feishu-thread-reply-fallback-79349 branch from e4bb50e to 93146f9 Compare May 10, 2026 16:35
@openclaw-barnacle openclaw-barnacle Bot removed the channel: zalo Channel integration: zalo label May 10, 2026
@clawsweeper
clawsweeper Bot merged commit f9c0dc2 into main May 10, 2026
190 checks passed
@clawsweeper
clawsweeper Bot deleted the fix/feishu-thread-reply-fallback-79349 branch May 10, 2026 16:41
greench-ai pushed a commit to greench-ai/nexisclaw that referenced this pull request May 12, 2026
Summary:
- The branch adds an opt-in Feishu top-level group-send fallback for withdrawn or missing normal quoted thread replies, plus regression coverage, a changelog entry, and CI/lint typing and baseline refreshes.
- Reproducibility: yes. at source level. Current main hard-errors withdrawn/not-found Feishu reply targets when `replyInThread` is true, and the existing regression test asserts that no top-level create fallback occurs.

Automerge notes:
- PR branch already contained follow-up commit before automerge: fix(feishu): fall back from missing thread replies
- PR branch already contained follow-up commit before automerge: fix(clawsweeper): address review for automerge-openclaw-openclaw-8030…
- PR branch already contained follow-up commit before automerge: fix(clawsweeper): reconcile automerge-openclaw-openclaw-80306 with ma…
- PR branch already contained follow-up commit before automerge: fix(ci): satisfy stricter lint and test types
- PR branch already contained follow-up commit before automerge: fix(ci): align Node 24 test typing

Validation:
- ClawSweeper review passed for head 93146f9d1357636d5f6493bdc6ce4b547f015331.
- Required merge gates passed before the squash merge.

Prepared head SHA: 93146f9d1357636d5f6493bdc6ce4b547f015331
Review: openclaw/openclaw#80306 (comment)

Co-authored-by: Peter Steinberger <[email protected]>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
markfietje pushed a commit to markfietje/openclaw that referenced this pull request May 20, 2026
Summary:
- The branch adds an opt-in Feishu top-level group-send fallback for withdrawn or missing normal quoted thread replies, plus regression coverage, a changelog entry, and CI/lint typing and baseline refreshes.
- Reproducibility: yes. at source level. Current main hard-errors withdrawn/not-found Feishu reply targets when `replyInThread` is true, and the existing regression test asserts that no top-level create fallback occurs.

Automerge notes:
- PR branch already contained follow-up commit before automerge: fix(feishu): fall back from missing thread replies
- PR branch already contained follow-up commit before automerge: fix(clawsweeper): address review for automerge-openclaw-openclaw-8030…
- PR branch already contained follow-up commit before automerge: fix(clawsweeper): reconcile automerge-openclaw-openclaw-80306 with ma…
- PR branch already contained follow-up commit before automerge: fix(ci): satisfy stricter lint and test types
- PR branch already contained follow-up commit before automerge: fix(ci): align Node 24 test typing

Validation:
- ClawSweeper review passed for head 93146f9d1357636d5f6493bdc6ce4b547f015331.
- Required merge gates passed before the squash merge.

Prepared head SHA: 93146f9d1357636d5f6493bdc6ce4b547f015331
Review: openclaw/openclaw#80306 (comment)

Co-authored-by: Peter Steinberger <[email protected]>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
markfietje pushed a commit to markfietje/openclaw that referenced this pull request May 20, 2026
Summary:
- The branch adds an opt-in Feishu top-level group-send fallback for withdrawn or missing normal quoted thread replies, plus regression coverage, a changelog entry, and CI/lint typing and baseline refreshes.
- Reproducibility: yes. at source level. Current main hard-errors withdrawn/not-found Feishu reply targets when `replyInThread` is true, and the existing regression test asserts that no top-level create fallback occurs.

Automerge notes:
- PR branch already contained follow-up commit before automerge: fix(feishu): fall back from missing thread replies
- PR branch already contained follow-up commit before automerge: fix(clawsweeper): address review for automerge-openclaw-openclaw-8030…
- PR branch already contained follow-up commit before automerge: fix(clawsweeper): reconcile automerge-openclaw-openclaw-80306 with ma…
- PR branch already contained follow-up commit before automerge: fix(ci): satisfy stricter lint and test types
- PR branch already contained follow-up commit before automerge: fix(ci): align Node 24 test typing

Validation:
- ClawSweeper review passed for head 93146f9d1357636d5f6493bdc6ce4b547f015331.
- Required merge gates passed before the squash merge.

Prepared head SHA: 93146f9d1357636d5f6493bdc6ce4b547f015331
Review: openclaw/openclaw#80306 (comment)

Co-authored-by: Peter Steinberger <[email protected]>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request May 24, 2026
Summary:
- The branch adds an opt-in Feishu top-level group-send fallback for withdrawn or missing normal quoted thread replies, plus regression coverage, a changelog entry, and CI/lint typing and baseline refreshes.
- Reproducibility: yes. at source level. Current main hard-errors withdrawn/not-found Feishu reply targets when `replyInThread` is true, and the existing regression test asserts that no top-level create fallback occurs.

Automerge notes:
- PR branch already contained follow-up commit before automerge: fix(feishu): fall back from missing thread replies
- PR branch already contained follow-up commit before automerge: fix(clawsweeper): address review for automerge-openclaw-openclaw-8030…
- PR branch already contained follow-up commit before automerge: fix(clawsweeper): reconcile automerge-openclaw-openclaw-80306 with ma…
- PR branch already contained follow-up commit before automerge: fix(ci): satisfy stricter lint and test types
- PR branch already contained follow-up commit before automerge: fix(ci): align Node 24 test typing

Validation:
- ClawSweeper review passed for head 93146f9.
- Required merge gates passed before the squash merge.

Prepared head SHA: 93146f9
Review: openclaw#80306 (comment)

Co-authored-by: Peter Steinberger <[email protected]>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
jameslcowan pushed a commit to jameslcowan/openclaw that referenced this pull request Jun 2, 2026
Summary:
- The branch adds an opt-in Feishu top-level group-send fallback for withdrawn or missing normal quoted thread replies, plus regression coverage, a changelog entry, and CI/lint typing and baseline refreshes.
- Reproducibility: yes. at source level. Current main hard-errors withdrawn/not-found Feishu reply targets when `replyInThread` is true, and the existing regression test asserts that no top-level create fallback occurs.

Automerge notes:
- PR branch already contained follow-up commit before automerge: fix(feishu): fall back from missing thread replies
- PR branch already contained follow-up commit before automerge: fix(clawsweeper): address review for automerge-openclaw-openclaw-8030…
- PR branch already contained follow-up commit before automerge: fix(clawsweeper): reconcile automerge-openclaw-openclaw-80306 with ma…
- PR branch already contained follow-up commit before automerge: fix(ci): satisfy stricter lint and test types
- PR branch already contained follow-up commit before automerge: fix(ci): align Node 24 test typing

Validation:
- ClawSweeper review passed for head 93146f9.
- Required merge gates passed before the squash merge.

Prepared head SHA: 93146f9
Review: openclaw#80306 (comment)

Co-authored-by: Peter Steinberger <[email protected]>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
sablehead pushed a commit to sablehead/openclaw that referenced this pull request Jun 10, 2026
Summary:
- The branch adds an opt-in Feishu top-level group-send fallback for withdrawn or missing normal quoted thread replies, plus regression coverage, a changelog entry, and CI/lint typing and baseline refreshes.
- Reproducibility: yes. at source level. Current main hard-errors withdrawn/not-found Feishu reply targets when `replyInThread` is true, and the existing regression test asserts that no top-level create fallback occurs.

Automerge notes:
- PR branch already contained follow-up commit before automerge: fix(feishu): fall back from missing thread replies
- PR branch already contained follow-up commit before automerge: fix(clawsweeper): address review for automerge-openclaw-openclaw-8030…
- PR branch already contained follow-up commit before automerge: fix(clawsweeper): reconcile automerge-openclaw-openclaw-80306 with ma…
- PR branch already contained follow-up commit before automerge: fix(ci): satisfy stricter lint and test types
- PR branch already contained follow-up commit before automerge: fix(ci): align Node 24 test typing

Validation:
- ClawSweeper review passed for head 93146f9.
- Required merge gates passed before the squash merge.

Prepared head SHA: 93146f9
Review: openclaw#80306 (comment)

Co-authored-by: Peter Steinberger <[email protected]>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

app: web-ui App: web-ui channel: discord Channel integration: discord channel: feishu Channel integration: feishu channel: googlechat Channel integration: googlechat channel: irc channel: line Channel integration: line channel: slack Channel integration: slack channel: synology-chat channel: telegram Channel integration: telegram clawsweeper:automerge Maintainer opted this PR into bounded ClawSweeper-reviewed automerge cli CLI command changes commands Command implementations extensions: codex extensions: memory-core Extension: memory-core maintainer Maintainer-authored PR proof: override Maintainer override for the external PR real behavior proof gate. security Security documentation size: L

Projects

None yet

Development

Successfully merging this pull request may close these issues.

飞书群聊线程消息回复被静默丢弃

1 participant