From 898a1a50eade1c815cff350f2d64358bfae0d457 Mon Sep 17 00:00:00 2001 From: Danila Poyarkov Date: Fri, 16 Jan 2026 09:46:50 +0300 Subject: [PATCH 1/2] fix(coding-agent): prevent duplicate rendering of extension messages on startup --- .../coding-agent/src/modes/interactive/interactive-mode.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/coding-agent/src/modes/interactive/interactive-mode.ts b/packages/coding-agent/src/modes/interactive/interactive-mode.ts index 268bfccb..7677e116 100644 --- a/packages/coding-agent/src/modes/interactive/interactive-mode.ts +++ b/packages/coding-agent/src/modes/interactive/interactive-mode.ts @@ -145,6 +145,7 @@ export class InteractiveMode { private keybindings: KeybindingsManager; private version: string; private isInitialized = false; + private hasRenderedInitialMessages = false; private onInputCallback?: (text: string) => void; private loadingAnimation: Loader | undefined = undefined; private readonly defaultWorkingMessage = "Working..."; @@ -619,7 +620,9 @@ export class InteractiveMode { this.session .sendCustomMessage(message, options) .then(() => { - if (!wasStreaming && message.display) { + // Don't rebuild if initial render hasn't happened yet + // (renderInitialMessages will handle it) + if (!wasStreaming && message.display && this.hasRenderedInitialMessages) { this.rebuildChatFromMessages(); } }) @@ -2007,6 +2010,7 @@ export class InteractiveMode { } renderInitialMessages(): void { + this.hasRenderedInitialMessages = true; // Get aligned messages and entries from session context const context = this.sessionManager.buildSessionContext(); this.renderSessionContext(context, { From 0438decd26a42b92cf979ae7fff555d1c8e8d671 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Fri, 16 Jan 2026 12:16:49 +0100 Subject: [PATCH 2/2] docs: add changelog entry for #765 --- packages/coding-agent/CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/coding-agent/CHANGELOG.md b/packages/coding-agent/CHANGELOG.md index bfaad940..ec74ca4f 100644 --- a/packages/coding-agent/CHANGELOG.md +++ b/packages/coding-agent/CHANGELOG.md @@ -6,6 +6,10 @@ - Added bash-style argument slicing for prompt templates ([#770](https://github.com/badlogic/pi-mono/pull/770) by [@airtonix](https://github.com/airtonix)) +### Fixed + +- Fixed extension messages rendering twice on startup when `pi.sendMessage({ display: true })` is called during `session_start` ([#765](https://github.com/badlogic/pi-mono/pull/765) by [@dannote](https://github.com/dannote)) + ## [0.47.0] - 2026-01-16 ### Breaking Changes