From f63ec78524c42563bfb8d581cb3e0ed268b7d6ea Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Tue, 11 Nov 2025 21:39:42 +0100 Subject: [PATCH] Add spacer above user messages (except first one) --- packages/coding-agent/src/tui/tui-renderer.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/packages/coding-agent/src/tui/tui-renderer.ts b/packages/coding-agent/src/tui/tui-renderer.ts index 3a323a0a..d6819fa4 100644 --- a/packages/coding-agent/src/tui/tui-renderer.ts +++ b/packages/coding-agent/src/tui/tui-renderer.ts @@ -9,6 +9,7 @@ import { ProcessTerminal, type SelectItem, SelectList, + Spacer, Text, TUI, } from "@mariozechner/pi-tui"; @@ -48,6 +49,9 @@ export class TuiRenderer { // Thinking level selector private thinkingSelector: SelectList | null = null; + // Track if this is the first user message (to skip spacer) + private isFirstUserMessage = true; + constructor(agent: Agent, version: string) { this.agent = agent; this.version = version; @@ -288,6 +292,12 @@ export class TuiRenderer { const textBlocks = userMsg.content.filter((c: any) => c.type === "text"); const textContent = textBlocks.map((c: any) => c.text).join(""); if (textContent) { + // Add spacer before user message (except first one) + if (!this.isFirstUserMessage) { + this.chatContainer.addChild(new Spacer(1)); + } + this.isFirstUserMessage = false; + // User messages with dark gray background this.chatContainer.addChild(new Markdown(textContent, undefined, undefined, { r: 52, g: 53, b: 65 })); } @@ -378,6 +388,9 @@ export class TuiRenderer { { usage: any; toolCallIds: Set; remainingToolCallIds: Set } >(); + // Reset first user message flag for initial render + this.isFirstUserMessage = true; + // First pass: identify assistant messages with tool calls for (let i = 0; i < state.messages.length; i++) { const message = state.messages[i];