diff --git a/extensions/discord/src/monitor/message-handler.draft-preview.ts b/extensions/discord/src/monitor/message-handler.draft-preview.ts index 931f427b307c..f69eec8e53c5 100644 --- a/extensions/discord/src/monitor/message-handler.draft-preview.ts +++ b/extensions/discord/src/monitor/message-handler.draft-preview.ts @@ -72,6 +72,9 @@ export function createDiscordDraftPreviewController(params: { let hasStreamedMessage = false; let finalizedViaPreviewMessage = false; let finalReplyDelivered = false; + // Final delivery cancels the compositor gate before Discord decides whether + // to edit the progress preview, so keep the pre-final eligibility bit. + let progressDraftStartedBeforeFinal = false; const previewToolProgressEnabled = Boolean(draftStream) && resolveChannelStreamingPreviewToolProgress(params.discordConfig); const suppressDefaultToolProgressMessages = @@ -132,12 +135,13 @@ export function createDiscordDraftPreviewController(params: { return discordStreamMode === "progress"; }, get hasProgressDraftStarted() { - return progressDraft.hasStarted; + return progressDraft.hasStarted || progressDraftStartedBeforeFinal; }, get finalizedViaPreviewMessage() { return finalizedViaPreviewMessage; }, markFinalReplyStarted() { + progressDraftStartedBeforeFinal ||= progressDraft.hasStarted; progressDraft.markFinalReplyStarted(); }, markFinalReplyDelivered() {