Skip to content

fix(feishu): disable block streaming to prevent silent reply drops#38422

Merged
Takhoffman merged 2 commits intoopenclaw:mainfrom
xinhuagu:fix/feishu-block-streaming-no-reply
Mar 7, 2026
Merged

fix(feishu): disable block streaming to prevent silent reply drops#38422
Takhoffman merged 2 commits intoopenclaw:mainfrom
xinhuagu:fix/feishu-block-streaming-no-reply

Conversation

@xinhuagu
Copy link
Copy Markdown
Contributor

@xinhuagu xinhuagu commented Mar 7, 2026

Problem

When blockStreamingDefault is "on" (the default after setup), the block streaming pipeline delivers chunks with kind: "block" to Feishu's deliver(), which silently drops them for plain-text content in "auto" render mode. Because the pipeline still sets didStream = true, the final reply is also suppressed — resulting in zero output reaching the user.

Fix

Set disableBlockStreaming: true in Feishu's replyOptions, same pattern used by IRC, Nextcloud Talk, BlueBubbles, and Mattermost. The existing Feishu-native streaming card path (onPartialReply) is unaffected.

Changes

  • reply-dispatcher.ts: one line — disableBlockStreaming: true
  • reply-dispatcher.test.ts: new test verifying the property is set

Closes #38258

@openclaw-barnacle openclaw-barnacle bot added channel: feishu Channel integration: feishu size: XS labels Mar 7, 2026
@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps bot commented Mar 7, 2026

Greptile Summary

This PR fixes a silent reply-drop bug in the Feishu extension by setting disableBlockStreaming: true in the dispatcher's replyOptions. When blockStreamingDefault is "on", the pipeline was delivering kind: "block" chunks to Feishu's deliver(), which silently discards them for plain-text / "auto" render-mode content; because didStream was still set to true, the final reply was also suppressed — leaving users with no output at all.

Key points:

  • The one-line fix in reply-dispatcher.ts places disableBlockStreaming: true after the ...replyOptions spread, so it unconditionally overrides any caller-supplied value — correct and intentional.
  • The get-reply-directives logic maps disableBlockStreaming: trueresolvedBlockStreaming: "off"blockStreamingEnabled: false, which is exactly the behaviour needed.
  • Feishu's own Feishu-native streaming card path (onPartialReply) is completely separate and unaffected.
  • The fix matches the identical pattern already used by IRC, Nextcloud Talk, BlueBubbles, Mattermost, and the WhatsApp web path.
  • The new unit test mirrors the contract test pattern used for WhatsApp and directly asserts the property is present and true.

Confidence Score: 5/5

  • This PR is safe to merge — it is a single, well-understood, backwards-compatible flag addition backed by a new unit test and consistent with the established pattern across five other integrations.
  • The change is minimal (one line of production code, one test), the root cause is clearly identified and reproduced, the fix matches a proven pattern used by multiple other extensions, the flag placement ensures it cannot be overridden by callers, and the onPartialReply streaming path is untouched. No regressions are expected.
  • No files require special attention.

Last reviewed commit: b9350e0

xinhuagu and others added 2 commits March 6, 2026 22:26
When blockStreamingDefault is 'on' (the default), the block streaming
pipeline calls feishu's deliver with kind 'block'. Feishu's deliver
silently drops these chunks when renderMode is 'auto' and text has no
code blocks/tables. The pipeline then marks didStream=true (no error
was thrown), so the final reply is also suppressed — resulting in zero
replies delivered.

Set disableBlockStreaming: true in replyOptions so the agent bypasses
the block streaming pipeline entirely for Feishu. Streaming cards via
onPartialReply remain unaffected.

Closes openclaw#38258
@Takhoffman Takhoffman force-pushed the fix/feishu-block-streaming-no-reply branch from b9350e0 to 826973a Compare March 7, 2026 04:33
@Takhoffman Takhoffman merged commit 024af2b into openclaw:main Mar 7, 2026
9 of 11 checks passed
mrosmarin added a commit to mrosmarin/openclaw that referenced this pull request Mar 7, 2026
* main: (45 commits)
  chore: update dependencies except carbon
  test(memory): make mcporter EINVAL retry test deterministic
  refactor(extensions): reuse shared helper primitives
  refactor(core): extract shared dedup helpers
  fix(ci): re-enable detect-secrets on main
  docs: reorder 2026.3.7 changelog highlights
  chore: bump version to 2026.3.7
  fix(android): align run command with app id
  docs: add changelog entry for Android package rename (openclaw#38712)
  fix(android): rename app package to ai.openclaw.app
  fix(gateway): stop stale-socket restarts before first event (openclaw#38643)
  fix(gateway): skip stale-socket restarts for Telegram polling (openclaw#38405)
  fix(gateway): invalidate bootstrap cache on session rollover (openclaw#38535)
  docs: update changelog for reply media delivery (openclaw#38572)
  fix: contain final reply media normalization failures
  fix: contain block reply media failures
  fix: normalize reply media paths
  Fix owner-only auth and overlapping skill env regressions (openclaw#38548)
  fix(feishu): disable block streaming to prevent silent reply drops (openclaw#38422)
  fix: suppress ACP NO_REPLY fragments in console output (openclaw#38436)
  ...
mcaxtr pushed a commit to mcaxtr/openclaw that referenced this pull request Mar 7, 2026
…penclaw#38422)

Verified:
- pnpm build
- pnpm check
- pnpm test:macmini

Co-authored-by: xinhuagu <[email protected]>
Co-authored-by: Tak Hoffman <[email protected]>
joshavant pushed a commit that referenced this pull request Mar 7, 2026
…38422)

Verified:
- pnpm build
- pnpm check
- pnpm test:macmini

Co-authored-by: xinhuagu <[email protected]>
Co-authored-by: Tak Hoffman <[email protected]>
vincentkoc pushed a commit to BryanTegomoh/openclaw-fork that referenced this pull request Mar 8, 2026
…penclaw#38422)

Verified:
- pnpm build
- pnpm check
- pnpm test:macmini

Co-authored-by: xinhuagu <[email protected]>
Co-authored-by: Tak Hoffman <[email protected]>
Saitop pushed a commit to NomiciAI/openclaw that referenced this pull request Mar 8, 2026
…penclaw#38422)

Verified:
- pnpm build
- pnpm check
- pnpm test:macmini

Co-authored-by: xinhuagu <[email protected]>
Co-authored-by: Tak Hoffman <[email protected]>
jenawant pushed a commit to jenawant/openclaw that referenced this pull request Mar 10, 2026
…penclaw#38422)

Verified:
- pnpm build
- pnpm check
- pnpm test:macmini

Co-authored-by: xinhuagu <[email protected]>
Co-authored-by: Tak Hoffman <[email protected]>
dhoman pushed a commit to dhoman/chrono-claw that referenced this pull request Mar 11, 2026
…penclaw#38422)

Verified:
- pnpm build
- pnpm check
- pnpm test:macmini

Co-authored-by: xinhuagu <[email protected]>
Co-authored-by: Tak Hoffman <[email protected]>
senw-developers pushed a commit to senw-developers/va-openclaw that referenced this pull request Mar 17, 2026
…penclaw#38422)

Verified:
- pnpm build
- pnpm check
- pnpm test:macmini

Co-authored-by: xinhuagu <[email protected]>
Co-authored-by: Tak Hoffman <[email protected]>
V-Gutierrez pushed a commit to V-Gutierrez/openclaw-vendor that referenced this pull request Mar 17, 2026
…penclaw#38422)

Verified:
- pnpm build
- pnpm check
- pnpm test:macmini

Co-authored-by: xinhuagu <[email protected]>
Co-authored-by: Tak Hoffman <[email protected]>
alexey-pelykh pushed a commit to remoteclaw/remoteclaw that referenced this pull request Mar 20, 2026
…penclaw#38422)

Verified:
- pnpm build
- pnpm check
- pnpm test:macmini

Co-authored-by: xinhuagu <[email protected]>
Co-authored-by: Tak Hoffman <[email protected]>
(cherry picked from commit 024af2b)
alexey-pelykh pushed a commit to remoteclaw/remoteclaw that referenced this pull request Mar 20, 2026
…penclaw#38422)

Verified:
- pnpm build
- pnpm check
- pnpm test:macmini

Co-authored-by: xinhuagu <[email protected]>
Co-authored-by: Tak Hoffman <[email protected]>
(cherry picked from commit 024af2b)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

channel: feishu Channel integration: feishu size: XS

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Feishu: messages not delivered when blockStreamingDefault is "on" (queuedFinal=false, replies=0)

2 participants