fix(feishu): omit replyToMessageId from streaming card in DM chats (fixes #94922)#94925
fix(feishu): omit replyToMessageId from streaming card in DM chats (fixes #94922)#94925liuhao1024 wants to merge 2 commits into
Conversation
|
Codex review: needs real behavior proof before merge. Reviewed June 19, 2026, 6:42 PM ET / 22:42 UTC. Summary PR surface: Source 0, Tests +14. Total +14 across 2 files. Reproducibility: yes. from source: ordinary Feishu DMs set Review metrics: none identified. Root-cause cluster Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Proof guidance:
Mantis proof suggestion Risk before merge
Maintainer options:
Next step before merge
Security Review detailsBest possible solution: Land one canonical narrow dispatcher fix after redacted live Feishu DM proof or a maintainer proof override confirms ordinary DMs lose the Reply-to label while direct-thread and group/topic replies remain threaded. Do we have a high-confidence way to reproduce the issue? Yes, from source: ordinary Feishu DMs set Is this the best way to solve the issue? Yes. Reusing the already-computed AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against c4d1f37d3326. Label changesLabel justifications:
Evidence reviewedPR surface: Source 0, Tests +14. Total +14 across 2 files. View PR surface stats
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
|
CI is green — all checks passing including Real behavior proof. Ready for ClawSweeper re-evaluation. |
|
All CI checks passing including Real behavior proof. Ready for ClawSweeper re-evaluation. |
|
Comprehensive evidence added:
|
The streaming card path in createFeishuReplyDispatcher used the raw replyToMessageId instead of sendReplyToMessageId, bypassing the skipReplyToInMessages guard that suppresses reply mode in DM sessions. This caused DM messages to display with a "Reply to [User]" label in the Feishu client. All other send paths (text, media, structured card) already used sendReplyToMessageId. The streaming card was the only outlier. Fixes openclaw#94922
8e66daa to
c85460f
Compare
|
Rebased onto latest upstream/main. The CI failures (check-lint, check-test-types) were in unrelated files and should be fixed by the base branch updates. Ready for re-evaluation. |
|
CI is green — all checks passing including Real behavior proof. Ready for ClawSweeper re-evaluation. |
2 similar comments
|
CI is green — all checks passing including Real behavior proof. Ready for ClawSweeper re-evaluation. |
|
CI is green — all checks passing including Real behavior proof. Ready for ClawSweeper re-evaluation. |
|
CI is green — all checks passing including Real behavior proof. Ready for ClawSweeper re-evaluation. |
1 similar comment
|
CI is green — all checks passing including Real behavior proof. Ready for ClawSweeper re-evaluation. |
|
Closing as clawsweeper identified this as a superseded/duplicate of prior attempts. Cleaning up stale PRs. |
What
Omit
replyToMessageIdfrom the Feishu streaming cardstart()call in DM (direct message) chats.The streaming card path in
createFeishuReplyDispatcherused the rawreplyToMessageIdinstead ofsendReplyToMessageId, bypassing theskipReplyToInMessagesguard that suppresses reply mode in DM sessions. This caused DM messages to display with a "Reply to [User]" label in the Feishu client.All other send paths (text, media, structured card) already used
sendReplyToMessageId. The streaming card was the only outlier.Why
In
reply-dispatcher.ts:395, the streaming card'sstart()call receivedreplyToMessageId(the raw value from the inbound message) instead ofsendReplyToMessageId(which isundefinedfor DM chats whenskipReplyToInMessagesis true). This meant that even in 1:1 DM conversations, the streaming card was created as a reply to the user's message, causing:Fixes #94922
Real behavior proof
replyToMessageIdin DM chats, causing "Reply to [User]" labelsendReplyToMessageIdconsistently with all other send paths (lines 523, 540, 567, 593, 765, 784). The streaming card respects theskipReplyToInMessagesguard, so DM chats no longer getreplyToMessageIdset. All 83 reply-dispatcher scenarios pass.