From a4e24c78f69ba7fd51224ea5c6a1c008b7bef9b5 Mon Sep 17 00:00:00 2001 From: ajnart Date: Tue, 11 Aug 2026 12:05:42 +0200 Subject: [PATCH] fix: preserve unicode icon searches --- packages/common/src/string.ts | 2 +- packages/common/src/test/string.spec.ts | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/common/src/string.ts b/packages/common/src/string.ts index 246e2ac4a..5f15c5945 100644 --- a/packages/common/src/string.ts +++ b/packages/common/src/string.ts @@ -37,7 +37,7 @@ export const normalizeImageName = (value: string) => { .normalize("NFKD") .replace(/[\u0300-\u036f]/g, "") .replace(/&/g, " and ") - .replace(/[^a-zA-Z0-9]+/g, " ") + .replace(/[^\p{L}\p{M}\p{N}]+/gu, " ") .trim() .toLowerCase(); }; diff --git a/packages/common/src/test/string.spec.ts b/packages/common/src/test/string.spec.ts index acc8bb907..b32254281 100644 --- a/packages/common/src/test/string.spec.ts +++ b/packages/common/src/test/string.spec.ts @@ -61,6 +61,8 @@ describe("image name matching", () => { ["https://example.com/Home_Assistant.PNG?v=1", "home assistant"], ["jelly.fin.webp", "jelly fin"], ["Caf\u00e9.svg", "cafe"], + ["\u6771\u4eac.svg", "\u6771\u4eac"], + ["\u0939\u093f\u0928\u094d\u0926\u0940.svg", "\u0939\u093f\u0928\u094d\u0926\u0940"], ])("normalizes %s", (value, expected) => { expect(normalizeImageName(value)).toBe(expected); }); @@ -69,6 +71,8 @@ describe("image name matching", () => { ["homeassistant", "home-assistant.svg", 1], ["home assistant", "home_assistant.png", 0], ["home assistant", "Home Assistant.webp", 0], + ["\u6771\u4eac", "\u6771\u4eac.svg", 0], + ["\u0939\u093f\u0928\u094d\u0926\u0940", "\u0939\u093f\u0928\u094d\u0926\u0940.png", 0], ["home assistant", "unrelated.svg", null], ])("ranks %s against %s", (search, candidate, expected) => { expect(getImageMatchRank(normalizeImageName(search), candidate)).toBe(expected);