From 20ca45d5746672df3efae0521fa101eb47c7b897 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Wed, 29 Apr 2026 23:04:46 +0200 Subject: [PATCH] fix(tui): skip Thai AM normalization when absent closes #3904 --- packages/tui/src/utils.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/tui/src/utils.ts b/packages/tui/src/utils.ts index 05d1ce50..59d21328 100644 --- a/packages/tui/src/utils.ts +++ b/packages/tui/src/utils.ts @@ -261,8 +261,12 @@ export function visibleWidth(str: string): number { * differential repaint. Their compatibility decompositions have the same cell * width but avoid stale-cell artifacts in terminal renderers. */ +const THAI_LAO_AM_REGEX = /[\u0e33\u0eb3]/; +const THAI_LAO_AM_GLOBAL_REGEX = /[\u0e33\u0eb3]/g; + export function normalizeTerminalOutput(str: string): string { - return str.replace(/\u0e33/g, "\u0e4d\u0e32").replace(/\u0eb3/g, "\u0ecd\u0eb2"); + if (!THAI_LAO_AM_REGEX.test(str)) return str; + return str.replace(THAI_LAO_AM_GLOBAL_REGEX, (char) => (char === "\u0e33" ? "\u0e4d\u0e32" : "\u0ecd\u0eb2")); } /**