mirror of
https://github.com/getcompanion-ai/co-mono.git
synced 2026-04-21 06:04:44 +00:00
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.
15 lines
512 B
TypeScript
15 lines
512 B
TypeScript
import stringWidth from "string-width";
|
|
|
|
/**
|
|
* Calculate the visible width of a string in terminal columns.
|
|
* This correctly handles:
|
|
* - ANSI escape codes (ignored)
|
|
* - Emojis and wide characters (counted as 2 columns)
|
|
* - Combining characters (counted correctly)
|
|
* - Tabs (replaced with 3 spaces for consistent width)
|
|
*/
|
|
export function visibleWidth(str: string): number {
|
|
// Replace tabs with 3 spaces before measuring
|
|
const normalized = str.replace(/\t/g, " ");
|
|
return stringWidth(normalized);
|
|
}
|