diff --git a/ui/src/ui/views/agents-utils.test.ts b/ui/src/ui/views/agents-utils.test.ts index daa909e2b2c..958f5ece7e3 100644 --- a/ui/src/ui/views/agents-utils.test.ts +++ b/ui/src/ui/views/agents-utils.test.ts @@ -145,4 +145,8 @@ describe("resolveAgentEmoji", () => { it("falls back to empty for control-only emoji strings", () => { expect(resolveAgentEmoji({ identity: { emoji: "\u202E\u2066" } })).toBe(""); }); + + it("preserves ZWJ-composed compound emoji intact", () => { + expect(resolveAgentEmoji({ identity: { emoji: "👩‍💻" } })).toBe("👩‍💻"); + }); }); diff --git a/ui/src/ui/views/agents-utils.ts b/ui/src/ui/views/agents-utils.ts index 33734505cb9..fd3e018e330 100644 --- a/ui/src/ui/views/agents-utils.ts +++ b/ui/src/ui/views/agents-utils.ts @@ -221,7 +221,7 @@ export function agentLogoUrl(basePath: string): string { return base ? `${base}/favicon.svg` : "favicon.svg"; } -const EMOJI_CONTROL_CHARS_RE = /[\u200B-\u200F\u202A-\u202E\u2066-\u2069\uFEFF]/g; +const EMOJI_CONTROL_CHARS_RE = /[\u200B\u200C\u200E\u200F\u202A-\u202E\u2066-\u2069\uFEFF]/g; function sanitizeEmojiValue(value: string): string { const cleaned = value.replaceAll(EMOJI_CONTROL_CHARS_RE, "").trim();