From 1d9fa13d5843787bec904db8f762e3d294115f0f Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Thu, 1 Jan 2026 22:33:09 +0100 Subject: [PATCH] Fix crash on Unicode format characters in visibleWidth Strip all Unicode format characters (category Cf) before passing to string-width. These are invisible control characters that crash string-width but have no visible width anyway. Closes #390 --- packages/tui/src/utils.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/tui/src/utils.ts b/packages/tui/src/utils.ts index dace78c1..3c4f80bf 100644 --- a/packages/tui/src/utils.ts +++ b/packages/tui/src/utils.ts @@ -5,7 +5,8 @@ import stringWidth from "string-width"; */ export function visibleWidth(str: string): number { if (!str) return 0; - const normalized = str.replace(/\t/g, " "); + // Replace tabs and strip Unicode format characters (Cf) that crash string-width + const normalized = str.replace(/\t/g, " ").replace(/\p{Cf}/gu, ""); return stringWidth(normalized); }