Skip to content

fix(telegram): render progress draft rows as plain readable text#95007

Merged
obviyus merged 6 commits into
openclaw:mainfrom
snowzlmbot:fix/telegram-progress-draft-format
Jun 22, 2026
Merged

fix(telegram): render progress draft rows as plain readable text#95007
obviyus merged 6 commits into
openclaw:mainfrom
snowzlmbot:fix/telegram-progress-draft-format

Conversation

@snowzlmbot

@snowzlmbot snowzlmbot commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

Summary

Fixes #95002.

Telegram progress draft previews now keep their canonical preview text readable while preserving Telegram's native HTML transport for non-rich progress drafts.

What Problem This Solves

The Telegram progress draft renderer used HTML/code-oriented progress rows as the primary draft representation. That made command/tool progress noisy when fallback or sanitized paths surfaced transport markup, and it left the api progress edge to generic fallback rendering.

A review also caught that the previous revision solved readability by adding a new plainTextTransport path. This revision removes that path and keeps the existing Telegram HTML draft transport instead.

Changes

  • Normalize Telegram progress draft rows through a plain readable line model first.
  • Generate escaped Telegram HTML from the same normalized progress lines for transport.
  • Preserve the default non-rich Telegram draft transport path: previews with richMessage.html are sent with parse_mode: "HTML", with TelegramDraftPreview.text retained as the plain fallback if Telegram rejects the HTML parse.
  • Convert rich-message <br> line breaks to real newlines at the non-rich parse_mode: "HTML" transport boundary, because Telegram parse-mode HTML accepts newlines but rejects <br> tags.
  • Remove the reverted plainTextTransport path and its test expectations.
  • Map itemKind: "api" to the API tool display and add a first-class API display config.
  • Update Telegram draft/dispatch regression coverage for readable text, preserved HTML transport, parse-mode-safe line breaks, HTML-parse fallback, and both api progress shapes.

Current-head behavior

At head 24c8774c98d54d01f884adbded289b9a4c97bff5:

  • extensions/telegram/src/bot-message-dispatch.ts returns TelegramDraftPreview.text as readable plain text and attaches escaped richMessage.html for Telegram transport.
  • extensions/telegram/src/draft-stream.ts sends attached HTML previews through parse_mode: "HTML", converts rich <br> breaks to parse-mode-safe newlines, and keeps plain text as fallback only when Telegram rejects the HTML parse.
  • src/channels/streaming.ts maps itemKind: "api" to api, and src/agents/tool-display-config.ts / the OpenClawKit resource snapshot include the API display entry.

Evidence

Current-head external Linux VM validation on 24c8774c98d54d01f884adbded289b9a4c97bff5:

  • Telegram Bot API proof: passed.
    • sendMessage used parse_mode: "HTML" with <b> / <code> tags and real newline separators.
    • editMessageText used parse_mode: "HTML" on the same message id.
    • No plain fallback send/edit occurred.
    • Telegram returned readable text containing Shelling, API, and Exec with no visible HTML tags.
    • richRawTransportNotUsed: true for the non-rich path.
  • Target Telegram tests: passed, 3 files / 226 tests.
    • extensions/telegram/src/bot-message-dispatch.test.ts
    • extensions/telegram/src/draft-stream.test.ts
    • extensions/telegram/src/lane-delivery.test.ts
  • Target core display/streaming tests: passed, 2 files / 45 tests.
    • src/channels/streaming.test.ts
    • src/agents/tool-display.test.ts
  • node --import tsx scripts/tool-display.ts --check: passed.
  • git diff --check: passed locally as a static whitespace check before push.

GitHub Actions:

Previous broad CI failures on 0df89a764914e0786060ae775c68687d4d29f28a showed the same unrelated pattern (resolve-openclaw-ref, test-projects/bench-gateway-restart, and MCP/Claude runner flakes). The current head supersedes that run with the parse-mode-safe HTML transport fix.

Risk

Low-to-moderate Telegram presentation risk:

  • This changes transient Telegram progress draft row formatting, not final answer delivery.
  • Telegram HTML transport remains the default for attached progress preview HTML.
  • Plain preview text is retained only as fallback when Telegram rejects HTML parsing.
  • API progress now has an explicit display mapping instead of generic item fallback.

Not addressed

This PR does not change Telegram draft materialization policy, including first-preview debounce/minimum length or progress-mode answer-lane suppression. That behavior remains separate from the progress-row formatting fix.

@openclaw-barnacle openclaw-barnacle Bot added channel: telegram Channel integration: telegram size: S triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup. labels Jun 19, 2026
@snowzlmbot

Copy link
Copy Markdown
Contributor Author

@clawsweeper review-pr

@clawsweeper

clawsweeper Bot commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

@clawsweeper

clawsweeper Bot commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs real behavior proof before merge. Reviewed June 21, 2026, 8:20 PM ET / 00:20 UTC.

Summary
The PR changes Telegram progress draft row rendering, Telegram draft HTML transport normalization, API progress display metadata, and related Telegram/core regression coverage.

PR surface: Source -37, Tests +12, Other +11. Total -14 across 7 files.

Reproducibility: yes. at source level: current main has tests and implementation for bounded short previews and progress-mode placeholders, while the latest PR diff removes those paths and tests. I did not execute tests because this review is read-only.

Review metrics: 1 noteworthy metric.

  • Current-main lifecycle paths removed: 3 removed. The diff removes bounded short-preview materialization, progress-mode activity placeholders, and cleanup before durable tool payloads, all of which affect Telegram draft delivery behavior before merge.

Root-cause cluster
Relationship: fixed_by_candidate
Canonical: #95002
Summary: This PR is the open candidate fix for the canonical Telegram progress draft row-formatting issue; adjacent draft materialization work is related but distinct and must be preserved.

Members:

Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything.

Merge readiness
Overall: 🧂 unranked krab
Proof: 🦪 silver shellfish
Patch quality: 🧂 unranked krab
Result: blocked until stronger real behavior proof is added.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Rank-up moves:

  • Restore current-main Telegram draft lifecycle behavior from the merged adjacent work.
  • [P1] Add exact-head live Telegram proof after the repair.
  • Wait for the current-head CI run to finish.

Proof guidance:

  • [P1] Needs stronger real behavior proof before merge: The supplied live Telegram Bot API proof validates earlier head 24c8774, but the live PR head is c08f167 after a force-push. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.

Mantis proof suggestion
Native Telegram visual proof would materially help confirm readable rows and preserved HTML parse-mode behavior after the branch is repaired. A maintainer can ask Mantis to capture proof by posting this exact PR comment:

@openclaw-mantis telegram desktop proof: verify progress draft rows show readable text while Telegram still uses HTML parse mode without visible tags.

Risk before merge

  • [P1] The latest head removes current-main Telegram draft lifecycle behavior for bounded short previews, progress-mode activity placeholders, and draft cleanup before durable tool payloads.
  • [P1] The live Telegram proof is stale because it validates 24c8774, not the live head c08f167.
  • [P1] Broad exact-head CI is still in progress, so normal gates have not finished on the repaired/force-pushed branch.

Maintainer options:

  1. Restore current-main lifecycle fixes (recommended)
    Rebase or repair the branch so it keeps merged Telegram draft materialization, progress-mode answer activity placeholders, and draft-before-tool-delivery cleanup while preserving this formatting fix.
  2. Pause until exact-head proof is refreshed
    If maintainers want the author to own validation, wait for a new live Telegram proof and completed CI after the lifecycle repair.
  3. Close only if the branch is abandoned
    If the branch cannot be repaired without discarding most of the latest trim commit, close this PR in favor of a narrow replacement that preserves current main.
Copy recommended automerge instruction
@clawsweeper automerge

Special instructions:
Restore the current-main Telegram draft lifecycle behavior from the merged adjacent work, including minInitialDelayMs handling, progressDraft.noteActivity(), and clearing/rotating progress drafts before durable tool payloads, while keeping this PR's readable progress-row rendering, HTML transport bridge, API display mapping, and focused tests.

Next step before merge

  • [P1] A narrow automated repair can restore the current-main Telegram draft lifecycle behavior that this branch removes while preserving the useful formatting changes.

Security
Cleared: The diff changes Telegram rendering/tests and display metadata only; I found no workflow, dependency, secret, permission, package, or supply-chain change.

Review findings

  • [P1] Restore bounded first-preview delivery — extensions/telegram/src/draft-stream.ts:410-411
  • [P1] Keep progress-mode activity placeholders — extensions/telegram/src/bot-message-dispatch.ts:1409-1410
  • [P2] Clear progress drafts before durable tool sends — extensions/telegram/src/bot-message-dispatch.ts:2152-2156
Review details

Best possible solution:

Keep the readable Telegram progress-row and API display changes, but restore current-main draft lifecycle behavior from the merged adjacent work before merge.

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

Yes at source level: current main has tests and implementation for bounded short previews and progress-mode placeholders, while the latest PR diff removes those paths and tests. I did not execute tests because this review is read-only.

Is this the best way to solve the issue?

No. The readable-row rendering and API display direction are good, but the latest branch is no longer the best fix because it reverts adjacent current-main Telegram draft lifecycle fixes.

Full review comments:

  • [P1] Restore bounded first-preview delivery — extensions/telegram/src/draft-stream.ts:410-411
    The latest head removes the minInitialDelayMs path from createTelegramDraftStream, so a first preview below minInitialChars now returns false indefinitely unless it grows or finalizes. That reverts the current-main behavior from fix(telegram): materialize streaming progress placeholders #95183 where active short Telegram previews materialize after the bounded delay and timers are cleared on cleanup.
    Confidence: 0.93
  • [P1] Keep progress-mode activity placeholders — extensions/telegram/src/bot-message-dispatch.ts:1409-1410
    Current main calls progressDraft.noteActivity() before suppressing answer text in progress mode; this branch returns immediately instead. Answer-only progress-mode activity can become invisible again even though the merged adjacent fix added a stable placeholder for that exact case.
    Confidence: 0.92
  • [P2] Clear progress drafts before durable tool sends — extensions/telegram/src/bot-message-dispatch.ts:2152-2156
    The branch removes the current-main rotateAnswerLaneAfterToolProgress() calls before durable tool output/artifact sends. That can leave the transient progress draft visible while the durable tool payload is delivered, undoing the merged cleanup behavior and the tests that guarded it.
    Confidence: 0.88

Overall correctness: patch is incorrect
Overall confidence: 0.92

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against 4cb94cc2cf2d.

Label changes

Label changes:

  • add rating: 🧂 unranked krab: Overall readiness is 🧂 unranked krab; proof is 🦪 silver shellfish and patch quality is 🧂 unranked krab.
  • add status: 📣 needs proof: The PR needs real behavior proof before ClawSweeper can clear the contributor ask. Needs stronger real behavior proof before merge: The supplied live Telegram Bot API proof validates earlier head 24c8774, but the live PR head is c08f167 after a force-push. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.
  • remove proof: sufficient: Current real behavior proof status is insufficient, not sufficient.
  • remove rating: 🐚 platinum hermit: Current PR rating is rating: 🧂 unranked krab, so this older rating label is no longer current.
  • remove status: 👀 ready for maintainer look: Current PR status label is status: 📣 needs proof.

Label justifications:

  • P2: This is a normal-priority Telegram progress-draft readability fix with a bounded channel-specific blast radius.
  • merge-risk: 🚨 message-delivery: The latest diff changes Telegram draft send/edit behavior and removes current-main draft visibility/cleanup paths, which can affect whether progress messages appear or clear correctly.
  • rating: 🧂 unranked krab: Overall readiness is 🧂 unranked krab; proof is 🦪 silver shellfish and patch quality is 🧂 unranked krab.
  • status: 📣 needs proof: The PR needs real behavior proof before ClawSweeper can clear the contributor ask. Needs stronger real behavior proof before merge: The supplied live Telegram Bot API proof validates earlier head 24c8774, but the live PR head is c08f167 after a force-push. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.
  • mantis: telegram-visible-proof: Mantis should capture Telegram visible proof. The PR changes visible Telegram progress draft rows and can be demonstrated in a short Telegram Desktop recording.
Evidence reviewed

PR surface:

Source -37, Tests +12, Other +11. Total -14 across 7 files.

View PR surface stats
Area Files Added Removed Net
Source 4 56 93 -37
Tests 2 167 155 +12
Docs 0 0 0 0
Config 0 0 0 0
Generated 0 0 0 0
Other 1 11 0 +11
Total 7 234 248 -14

Acceptance criteria:

  • [P1] node scripts/run-vitest.mjs extensions/telegram/src/draft-stream.test.ts extensions/telegram/src/bot-message-dispatch.test.ts src/channels/progress-draft-compositor.test.ts.
  • [P1] node scripts/run-vitest.mjs src/channels/streaming.test.ts src/agents/tool-display.test.ts.
  • [P1] node --import tsx scripts/tool-display.ts --check.
  • [P1] git diff --check.

What I checked:

Likely related people:

  • snowzlmbot: Authored the merged adjacent Telegram draft materialization fix and authored most of this PR's formatting changes, so they have context on both the intended fix and the lifecycle behavior now being removed. (role: recent adjacent contributor; confidence: high; commits: 6441e5646594, 1d3c4bda6c83, f67cf3f4f5c0; files: extensions/telegram/src/draft-stream.ts, extensions/telegram/src/bot-message-dispatch.ts, extensions/telegram/src/bot-message-dispatch.test.ts)
  • obviyus: Authored recent Telegram rich progress preview/HTML transport work, gave maintainer-direction comments on preserving HTML transport, and authored the latest trim commit that needs repair. (role: recent area contributor and reviewer; confidence: high; commits: 663fabbe30eb, a8b5f5d5518b, c08f167e6fa6; files: extensions/telegram/src/bot-message-dispatch.ts, extensions/telegram/src/draft-stream.ts, extensions/telegram/src/bot-message-dispatch.test.ts)
  • vincentkoc: Recent merged command-progress detail and API baseline work touched the shared progress/display surface that this PR extends with API display mapping. (role: recent shared progress/display contributor; confidence: medium; commits: 5e329f40656a, 2e7c3ace9c54, 89768d456bf6; files: src/channels/streaming.ts, src/agents/tool-display-config.ts, extensions/telegram/src/bot-message-dispatch.ts)
  • zhangguiping-xydt: Authored the merged Telegram cleanup-before-tool-output PR whose test/behavior is part of the lifecycle surface that this PR now drops from the branch diff. (role: adjacent fix author; confidence: medium; commits: d6d17709e82f; files: extensions/telegram/src/bot-message-dispatch.test.ts)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

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
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

@openclaw-barnacle openclaw-barnacle Bot added proof: supplied External PR includes structured after-fix real behavior proof. and removed triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup. labels Jun 19, 2026
@clawsweeper clawsweeper Bot added rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. mantis: telegram-visible-proof Mantis should capture Telegram visible proof. P2 Normal backlog priority with limited blast radius. labels Jun 19, 2026
@clawsweeper clawsweeper Bot added the merge-risk: 🚨 other 🚨 Merging this PR has meaningful risk outside the owned taxonomy. label Jun 19, 2026
@snowzlmbot

Copy link
Copy Markdown
Contributor Author

@clawsweeper review-pr

@snowzlmbot

Copy link
Copy Markdown
Contributor Author

@openclaw-mantis telegram desktop proof: verify progress draft rows show plain readable text without visible HTML/code wrappers.

@snowzlmbot
snowzlmbot force-pushed the fix/telegram-progress-draft-format branch from c99eeed to d1cbfec Compare June 19, 2026 17:08
@snowzlmbot

snowzlmbot commented Jun 20, 2026

Copy link
Copy Markdown
Contributor Author

@clawsweeper review-pr
Follow-up on the latest review result:

  • Rechecked latest head d1cbfecfc076a38a4ce882986b16e2aa70e65229.
  • Targeted Telegram regression tests still pass: bot-message-dispatch.test.ts 129 passed, draft-stream.test.ts 46 passed, lane-delivery.test.ts 41 passed; git diff --check also passes.
  • The implementation remains unchanged because the current review says the code shape is acceptable and the only blocker is native Telegram-visible proof.
  • The prior Mantis Telegram Desktop proof request has not produced an artifact. I updated the PR body to state this explicitly rather than claiming unverified live Telegram delivery.

Maintainer follow-up needed: either capture/add a redacted Telegram Desktop/Bot API proof artifact, or explicitly accept the local payload proof for this formatting-only renderer change.

@clawsweeper

clawsweeper Bot commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

@clawsweeper clawsweeper Bot added status: 🛠️ actively grinding The PR author has acted after the latest ClawSweeper review and work remains. and removed status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels Jun 20, 2026
@snowzlmbot

Copy link
Copy Markdown
Contributor Author

Added native Telegram Bot API proof to the PR body.

Proof summary:

  • Dedicated test bot: @snowzlmOpenClawtestBot; token and private chat id are omitted.
  • Native Bot API accepted sendMessage + editMessageText for the progress draft payload.
  • The edited Telegram message renders readable compact progress rows (exec running ..., exec passed ...) with no raw object dump / [object Object] leakage.
  • Local targeted checks on this head:
    • telegram/src/bot-message-dispatch.test.ts: 129 passed
    • telegram/src/draft-stream.test.ts: 46 passed
    • telegram/src/lane-delivery.test.ts: 41 passed
    • src/channels/progress-draft-compositor.test.ts: 12 passed
    • src/channels/streaming.test.ts: 4 passed
    • git diff --check: passed

@clawsweeper review-pr

@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. and removed rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 🛠️ actively grinding The PR author has acted after the latest ClawSweeper review and work remains. labels Jun 20, 2026
@openclaw-barnacle openclaw-barnacle Bot added triage: needs-pr-context Candidate: external PR body lacks required problem context or evidence. and removed triage: needs-pr-context Candidate: external PR body lacks required problem context or evidence. labels Jun 21, 2026
@clawsweeper clawsweeper Bot added rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. merge-risk: 🚨 message-delivery 🚨 May drop, duplicate, misroute, suppress, or wrongly target messages. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. and removed rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. merge-risk: 🚨 message-delivery 🚨 May drop, duplicate, misroute, suppress, or wrongly target messages. labels Jun 21, 2026
@snowzlmbot

snowzlmbot commented Jun 21, 2026

Copy link
Copy Markdown
Contributor Author

Updated per review:

  • Removed the plainTextTransport path and related expectations.
  • Preserved the default Telegram progress draft HTML transport.
  • Added a parse-mode-safe bridge for non-rich draft HTML: rich <br> line breaks are converted to real newlines before parse_mode: "HTML", so live Bot API send/edit no longer falls back to plain text.
  • Kept the api progress mapping and updated the tool-display snapshot.

Current-head evidence is in the PR body. Highlights for 24c8774c98d54d01f884adbded289b9a4c97bff5:

  • Live Telegram Bot API proof passed: sendMessage and editMessageText both used parse_mode: "HTML", edited the same message, returned readable text, and did not use plain fallback.
  • Target Telegram tests passed: 3 files / 226 tests.
  • Target core display/streaming tests passed: 2 files / 45 tests.
  • tool-display snapshot check passed.
  • Upstream Real behavior proof gate passed.
  • Self-owned fork CI has check-test-types and check-guards green; PR-relevant checks observed green inside broad shards include src/agents/tool-display.test.ts, src/channels/streaming.test.ts, and test/scripts/telegram-bot-api.test.ts.
  • Current fork CI red jobs are unrelated to this PR surface: docs formatting in docs/gateway/doctor.md, resolve-openclaw-ref, test-projects, bench-gateway-restart, and cli-runner.spawn / Claude live-session capacity. None mention the Telegram progress draft files, tool-display snapshot, telegramHtmlPreview, or plainTextTransport.

@clawsweeper review-pr

@clawsweeper

clawsweeper Bot commented Jun 21, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. and removed rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels Jun 21, 2026
@obviyus

obviyus commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

Landed via squash onto main.

  • Scoped tests: node scripts/run-vitest.mjs extensions/telegram/src/draft-stream.test.ts extensions/telegram/src/bot-message-dispatch.test.ts --reporter=verbose; node scripts/run-vitest.mjs src/channels/streaming.test.ts src/agents/tool-display.test.ts --reporter=verbose
  • Live proof: Telegram progress mode with richMessages: false rendered the progress label/tool as bold Telegram entities and the command text as a code entity, then delivered the final reply.
  • Changelog: release-owned; not edited.
  • Land commit: 5b568af
  • Merge commit: e37b0f8

Thanks @snowzlmbot!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agents Agent runtime and tooling channel: telegram Channel integration: telegram mantis: telegram-visible-proof Mantis should capture Telegram visible proof. merge-risk: 🚨 message-delivery 🚨 May drop, duplicate, misroute, suppress, or wrongly target messages. P2 Normal backlog priority with limited blast radius. proof: supplied External PR includes structured after-fix real behavior proof. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. size: M status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix(telegram): progress draft previews expose noisy HTML/code formatting

3 participants