From 8b92e9739c48597a6fad22bbf81881838433565d Mon Sep 17 00:00:00 2001 From: Jeffery Date: Fri, 26 Jun 2026 14:09:40 +0800 Subject: [PATCH] =?UTF-8?q?fix(tags):=20categorizeTags=20=E9=98=B2?= =?UTF-8?q?=E7=A6=A6=20null/=E9=9D=9E=E5=AD=97=E4=B8=B2=20name=20=E9=A0=85?= =?UTF-8?q?=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 對 null/非物件 tag 與非字串 name 一律歸為 skip,避免存取 tag.name 或比對時出錯。 Co-Authored-By: Claude Opus 4.8 (1M context) --- app/tags.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/tags.js b/app/tags.js index 112e3d5..4668611 100644 --- a/app/tags.js +++ b/app/tags.js @@ -18,10 +18,12 @@ export function categorizeTags(tags, releaseTagNames) { const keep = new Set(releaseTagNames) return tags.map((tag) => { - if (isEmptyOrNull(tag.name)) { + // 防禦 null/非物件 tag 與非字串 name:一律歸為 skip,避免後續存取或比對時出錯。 + const name = tag?.name + if (typeof name !== 'string' || isEmptyOrNull(name)) { return { tag, action: 'skip' } } - if (keep.has(tag.name)) { + if (keep.has(name)) { return { tag, action: 'keep' } } return { tag, action: 'delete' }