-
-
Notifications
You must be signed in to change notification settings - Fork 80.3k
Telegram rich messages: /status card collapses into one run-on line (newlines lost) on 2026.6.9 #95538
Copy link
Copy link
Closed
Labels
P2Normal backlog priority with limited blast radius.Normal backlog priority with limited blast radius.clawsweeper:fix-shape-clearClawSweeper found a clear likely implementation shape for this issue.ClawSweeper found a clear likely implementation shape for this issue.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.ClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.ClawSweeper found a high-confidence source-level issue reproduction.impact:message-lossChannel message delivery can be lost, duplicated, or misrouted.Channel message delivery can be lost, duplicated, or misrouted.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.Very strong issue quality with high-confidence source-level or clear reproduction.
Description
Metadata
Metadata
Assignees
Labels
P2Normal backlog priority with limited blast radius.Normal backlog priority with limited blast radius.clawsweeper:fix-shape-clearClawSweeper found a clear likely implementation shape for this issue.ClawSweeper found a clear likely implementation shape for this issue.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.ClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.ClawSweeper found a high-confidence source-level issue reproduction.impact:message-lossChannel message delivery can be lost, duplicated, or misrouted.Channel message delivery can be lost, duplicated, or misrouted.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.Very strong issue quality with high-confidence source-level or clear reproduction.
Type
Fields
No fields configured for issues without a type.
Summary
On
OpenClaw 2026.6.9withchannels.telegram.richMessages: true, the/status(session status) card is delivered as a single run-on paragraph. Every status field is jammed inline on one line instead of one field per line. With rich messages off, the same card renders correctly with one field per line.Environment
OpenClaw 2026.6.9 (c645ec4)channels.telegram.richMessages: trueTelegram rich messages: on · Bot API 10.1 sendRichMessage enabledObserved behavior
The
/statuscard arrives as one inline blob (newlines between fields are lost):Expected behavior
Each status field on its own line, as it renders when rich messages are off:
Likely root cause
The status card is assembled as plain text with single
\nbetween fields (buildStatusText/buildStatusMessageindist/status-text-*.js). WhenrichMessagesis on, the text is delivered via the rich path:sendChunkedText→buildRichTextPlan→splitTelegramRichMessageTextChunks→richRawApi.sendRichMessage({ rich_message: buildTelegramRichMessage(chunk.text, chunk.textMode, ...) })(dist/send-DRU0vBJ-.js~L1214–1243).If
chunk.textModeis markdown, a single newline is treated as a soft break and collapses adjacent lines into one paragraph — exactly the observed run-on. The plain-text (sendMessage) path preserves single newlines, which is why rich-off renders correctly.So the status card (built for plain text) needs hard line breaks when routed through the rich/markdown renderer — e.g. preserve single
\nas hard breaks in the status-card rich path, or emit the card with explicit hard breaks / a preformatted block whenrichMessagesis on.Impact
The
/statuscard is one of the most frequently viewed surfaces and is unreadable as a single run-on line for Telegram users who have rich messages enabled (now the shipped default-path direction per #94885). Other multi-line text built with single\nmay be affected by the same collapse.Possibly related