Add spacer above user messages (except first one)

This commit is contained in:
Mario Zechner 2025-11-11 21:39:42 +01:00
parent 0cceb346be
commit f63ec78524

View file

@ -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<string>; remainingToolCallIds: Set<string> }
>();
// 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];