Fix tab rendering in TUI components

Replace tabs with 3 spaces for consistent rendering and width calculation:
- Updated visibleWidth() to normalize tabs before measuring
- Updated Text and Markdown components to replace tabs when rendering
- Updated tool-execution display for read/write tools to replace tabs

This fixes background color rendering issues when displaying files with tab indentation.
This commit is contained in:
Mario Zechner 2025-11-11 23:24:48 +01:00
parent 7beb354337
commit 001beff394
5 changed files with 49 additions and 5 deletions

View file

@ -103,8 +103,11 @@ export class Markdown implements Component {
return result;
}
// Replace tabs with 3 spaces for consistent rendering
const normalizedText = this.text.replace(/\t/g, " ");
// Parse markdown to HTML-like tokens
const tokens = marked.lexer(this.text);
const tokens = marked.lexer(normalizedText);
// Convert tokens to styled terminal output
const renderedLines: string[] = [];

View file

@ -63,8 +63,11 @@ export class Text implements Component {
return result;
}
// Replace tabs with 3 spaces for consistent rendering
const normalizedText = this.text.replace(/\t/g, " ");
const lines: string[] = [];
const textLines = this.text.split("\n");
const textLines = normalizedText.split("\n");
for (const line of textLines) {
// Measure visible length (strip ANSI codes)