fix(v2026-6-9): telegram richMessages breaks paragraph breaks and table rendering#95822
Conversation
8bc9d3c to
2131a96
Compare
|
Codex review: needs maintainer review before merge. Reviewed June 24, 2026, 9:13 AM ET / 13:13 UTC. Summary PR surface: Source +33, Tests +13, Other 0. Total +46 across 7 files. Reproducibility: yes. for the source path: current main and v2026.6.10 emit bare rich Markdown tables and do not carry alignment metadata, while the linked issue and contributor screenshot show the visible Telegram rendering problem. I did not run a fresh live current-main Telegram repro in this read-only review. Review metrics: 1 noteworthy metric.
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:
Mantis proof suggestion Risk before merge
Maintainer options:
Next step before merge
Security Review detailsBest possible solution: Land the focused table-renderer fix after maintainer acceptance of the SDK alignment surface, without folding in adjacent rich-message auto-routing or config-migration work. Do we have a high-confidence way to reproduce the issue? Yes for the source path: current main and v2026.6.10 emit bare rich Markdown tables and do not carry alignment metadata, while the linked issue and contributor screenshot show the visible Telegram rendering problem. I did not run a fresh live current-main Telegram repro in this read-only review. Is this the best way to solve the issue? Yes for the table-renderer portion: carrying markdown-it alignment metadata into the Telegram rich renderer is the narrow owner-boundary fix. The remaining solution-fit question is whether maintainers want that metadata promoted through the public plugin SDK surface. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against ae9474b5fdc0. Label changesLabel justifications:
Evidence reviewedPR surface: Source +33, Tests +13, Other 0. Total +46 across 7 files. View PR surface stats
What I checked:
extensions/telegram/src/format.ts:969, a4e2aa295de4)Likely related people: What the crustacean ranks meanShiny 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 |
Real Telegram PC client proofRe-tested the current Telegram rich Markdown path with a real Telegram PC client. The live message was sent through OpenClaw's Telegram rich delivery path using Observed in the screenshot:
|
2131a96 to
a4e2aa2
Compare
f790d84 to
9839052
Compare
|
Landed via rebase onto main.
Thanks @zhangguiping-xydt! |

Related: #95554
What Problem This Solves
Telegram rich messages can render Markdown tables, but OpenClaw's Markdown IR discarded markdown-it column alignment and the Telegram rich renderer emitted bare
<table>markup. Tables from Markdown therefore lost the expected bordered/striped rich-table presentation and left/center/right alignment on Telegram rich payloads.Why This Change Was Made
<table bordered striped>while keeping the existing code-block fallback for over-wide or code-mode tables.User Impact
Telegram users with
richMessages: trueand Markdown table modeblockreceive rich table payloads that preserve visible table styling and column alignment. Plain Telegram HTML sends, explicittextMode: "html", non-Telegram renderers, and over-wide table fallback are unchanged.Evidence
Branch refreshed on latest
main; PR head after conflict resolution:a4e2aa295de4.Current-head send-path proof, Darwin 25.5.0 / Node v24.15.0:
Captured
rich_message.htmlexcerpt from the samesendMessageTelegrampath:Tests and checks run after final rebase:
Plugin SDK surface check after maintainer cleanup:
Full changed-file gate note:
pnpm check:changeddid not reach repo checks because the localcrabboxbinary failed its own version/help sanity check before dispatching. The narrower local tests, lint, type test check, SDK surface check, build, and path-matched send proof above completed.What was not tested: live Telegram Desktop rendering was not re-run for this rebased head because no Telegram token/chat configuration is available in the current shell.