From 78c7292c9515bedcc15a9e1f6c69824601eca2f4 Mon Sep 17 00:00:00 2001 From: VACInc Date: Sun, 26 Apr 2026 01:41:18 -0400 Subject: [PATCH] fix: keep telegram tool progress without preview (#71825) (thanks @VACInc) * fix(telegram): keep default tool progress without preview * fix: keep telegram tool progress without preview (#71825) (thanks @VACInc) --------- Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com> Co-authored-by: Ayaan Zaidi --- CHANGELOG.md | 1 + .../telegram/src/bot-message-dispatch.test.ts | 19 +++++++++++++++++++ .../telegram/src/bot-message-dispatch.ts | 2 +- 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 70c39411c52..5fad7dd17d4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -354,6 +354,7 @@ Docs: https://docs.openclaw.ai - Agents/Claude CLI: apply the configured 1M context window override to eligible Claude CLI Opus and Sonnet models when `context1m` is enabled. (#70863) Thanks @bidadh. - Models/status: report fresh Claude CLI native auth instead of stale stored `anthropic:claude-cli` profile expiry when local credentials are current. Fixes #71256. (#71332) Thanks @matthiasjanke and @neeravmakwana. - CLI backends: compact OpenClaw transcripts after over-budget CLI turns and reseed fresh CLI sessions from the compacted transcript instead of stale external resume state. Fixes #68329. (#71916) Thanks @obviyus. +- Telegram: keep default tool progress messages visible when answer preview streaming is disabled. (#71825) Thanks @VACInc. ## 2026.4.24 diff --git a/extensions/telegram/src/bot-message-dispatch.test.ts b/extensions/telegram/src/bot-message-dispatch.test.ts index 10f4a88d7b4..50c294b84d9 100644 --- a/extensions/telegram/src/bot-message-dispatch.test.ts +++ b/extensions/telegram/src/bot-message-dispatch.test.ts @@ -765,6 +765,25 @@ describe("dispatchTelegramMessage draft streaming", () => { ); }); + it("keeps default tool progress messages when answer preview streaming is off", async () => { + dispatchReplyWithBufferedBlockDispatcher.mockImplementation(async ({ replyOptions }) => { + await replyOptions?.onToolStart?.({ name: "exec", phase: "start" }); + await replyOptions?.onItemEvent?.({ progressText: "exec ls ~/Desktop" }); + return { queuedFinal: false }; + }); + + await dispatchWithContext({ context: createContext(), streamMode: "off" }); + + expect(createTelegramDraftStream).not.toHaveBeenCalled(); + expect(dispatchReplyWithBufferedBlockDispatcher).toHaveBeenCalledWith( + expect.objectContaining({ + replyOptions: expect.objectContaining({ + suppressDefaultToolProgressMessages: false, + }), + }), + ); + }); + it("keeps Telegram tool progress links inside code formatting", async () => { const draftStream = createDraftStream(); createTelegramDraftStream.mockReturnValue(draftStream); diff --git a/extensions/telegram/src/bot-message-dispatch.ts b/extensions/telegram/src/bot-message-dispatch.ts index 98d0467ec3b..44c2d95e858 100644 --- a/extensions/telegram/src/bot-message-dispatch.ts +++ b/extensions/telegram/src/bot-message-dispatch.ts @@ -1065,7 +1065,7 @@ export const dispatchTelegramMessage = async ({ previewToolProgressLines = []; }) : undefined, - suppressDefaultToolProgressMessages: true, + suppressDefaultToolProgressMessages: Boolean(answerLane.stream), onToolStart: async (payload) => { const toolName = payload.name?.trim(); if (statusReactionController && toolName) {