From c8f827e22866cc98f8bbb1c8146e28b2bb40a5cd Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Fri, 28 Aug 2026 17:38:31 +0800
Subject: [PATCH] chore: archive 8.4.0 local test build

---
 C1.source/Apptag/DataLayer.swift |   29 +++++++++++++++++++++++++----
 1 files changed, 25 insertions(+), 4 deletions(-)

diff --git a/C1.source/Apptag/DataLayer.swift b/C1.source/Apptag/DataLayer.swift
index b949e7b..f39f906 100644
--- a/C1.source/Apptag/DataLayer.swift
+++ b/C1.source/Apptag/DataLayer.swift
@@ -70,12 +70,31 @@
         return tag(name)
     }
 
+    static func isReservedGroupName(_ name: String, defaultGroupName: String = "Other") -> Bool {
+        reservedGroupNames(defaultGroupName: defaultGroupName).contains(
+            name.trimmingCharacters(in: .whitespacesAndNewlines)
+        )
+    }
+
     private static func isUncategorizedDisplayName(_ name: String) -> Bool {
         name == "Other" || name == tr("group.uncategorized")
     }
 
     private static func isAppleBuiltInDisplayName(_ name: String) -> Bool {
         name == "Mac自带" || name == tr("group.appleBuiltIn")
+    }
+
+    private static func reservedGroupNames(defaultGroupName: String) -> Set<String> {
+        let names = [
+            "Other",
+            defaultGroupName,
+            tr("group.uncategorized"),
+            "Mac自带",
+            tr("group.appleBuiltIn"),
+            TagDatabase.uncommonTagKey,
+            tr("group.uncommon")
+        ]
+        return Set(names.map { $0.trimmingCharacters(in: .whitespacesAndNewlines) }.filter { !$0.isEmpty })
     }
 }
 
@@ -868,7 +887,9 @@
             } else {
                 for tag in uniqueOrdered(app.tags) {
                     let displayName = nameOverrides[tag] ?? tag
-                    guard displayName != macCategory else { continue }
+                    guard !AppContainerID.isReservedGroupName(displayName, defaultGroupName: defaultGroupName) else {
+                        continue
+                    }
                     appendGroupedApp(
                         app,
                         to: displayName,
@@ -886,9 +907,9 @@
             tagOrder: tagOrder
         ) {
             let displayName = nameOverrides[tagName] ?? tagName
-            guard displayName != macCategory,
-                  displayName != defaultGroupName
-            else { continue }
+            guard !AppContainerID.isReservedGroupName(displayName, defaultGroupName: defaultGroupName) else {
+                continue
+            }
 
             if containerIDsByGroupName[displayName] == nil {
                 containerIDsByGroupName[displayName] = AppContainerID.forTag(

--
Gitblit v1.9.3