# SmartStart 分类 生成日期:2026-06-30 说明:本文件为 `.codex-sessionhistory` 的主题汇编,原始会话记录保留在上级目录;本文件只做索引、摘录和时间线整合,不替代原始证据。 ## 当前状态 - 主题说明:SmartStart 默认分类、初始化标签、本地化、合并映射和默认标签数量变化。 - 来源记录数:3 - 时间范围:2026-06-25 至 2026-06-27 - 最新记录:[`2026-06-27-SmartStart分类精简-01.md`](../2026-06-27-SmartStart分类精简-01.md) - 使用方式:优先看本节和最近结论摘录;需要审计细节时回到下方时间线和原始会话文件。 ## 最近结论摘录 ### 最近已完成事项 来源:[`2026-06-27-SmartStart分类精简-01.md`](../2026-06-27-SmartStart分类精简-01.md) - SmartStart 默认初始化标签从 15 个降为 13 个。 - `finance` 和 `other` 从 `SmartCategoryDefaults.orderedIDs` 移除。 - `SmartCategoryID.smartStartDefaultCategoryID` 改为可选返回值;`finance` 和 `other` 返回 `nil`。 - SmartStart 第三方 catalog 和 Apple 默认应用 catalog 写入前使用 `compactMap` 归一化,命中 `finance` / `other` 时不生成标签关系。 - 更新 `CODEGRAPH.md`、需求文档、changelog 和 QA 脚本。 - 版本更新为 `8.1.4`,build 更新为 `20260627.1643`。 - 构建产物:`/Users/ar/Projects/Taglauncher/src/build/TagLauncher.app`。 ### 最近QA 结论 来源:[`2026-06-27-SmartStart分类精简-01.md`](../2026-06-27-SmartStart分类精简-01.md) - 29 个本地化 JSON 解析通过。 - `src/Scripts/smartstart_default_categories_qa.sh` 通过:13 defaults,finance/other uncategorized。 - `src/Scripts/smart_category_localization_qa.sh` 通过。 - `src/Scripts/smartstart_catalog_resource_qa.sh` 通过。 - `src/Scripts/apple_default_apps_resource_qa.sh` 通过。 - `src/Scripts/apple_default_note_policy_qa.sh` 通过。 - `src/Scripts/macos14_availability_typecheck_qa.sh` 通过。 - `src/Scripts/macos14_build_metadata_qa.sh` 通过。 - `codesign --verify --deep --strict` 通过。 ### 最近后续建议 来源:[`2026-06-27-SmartStart分类精简-01.md`](../2026-06-27-SmartStart分类精简-01.md) - 如需交付给测试或用户,应基于 `8.1.4 / 20260627.1643` 另行生成 DMG,并按发布规则生成 manifest、hash 和 tag。 ## 核心事实补录 这组事实是对旧会话存档遗漏的补录,证据来自对应 commit 下的需求文档和当前源码。原始会话记录仍保留在时间线章节。 ### 2026-06-27 15 标签方案 来源:commit `28be00e`,`src/Docs/Requirements/2026-06-27-smartstart-category-simplification.md`。 | 新序号 | category id | 英文显示名 | 简体中文显示名 | 来源 | |---:|---|---|---|---| | 1 | `browser` | Browsers | 浏览器 | 原 1 | | 2 | `communication` | Communication | 沟通 | 原 2 | | 3 | `GTD` | Tasks & GTD | 任务与 GTD | 原 3 | | 4 | `Notes` | Notes | 笔记 | 原 4 | | 5 | `Meeting` | Meetings | 会议 | 原 5 | | 6 | `office` | Office & Docs | 办公文档 | 原 6、7、21 | | 7 | `system-enhancement` | System Tools | 系统工具 | 原 8、9、26、27、28、29、30、31、33、38 | | 8 | `ai-tools` | AI Tools | AI 工具 | 原 10 | | 9 | `development` | Coding | 编程 | 原 11、12、13、14、15、16、32 | | 10 | `design` | Design | 设计 | 原 17、18、19、20 | | 11 | `picture-photo` | Photos | 图片 | 原 25 | | 12 | `entertainment` | Entertainment | 影音娱乐 | 原 22、23、24、34、35 | | 13 | `finance` | Finance | 财务 | 原 36 | | 14 | `education` | Education | 学习 | 原 37 | | 15 | `other` | Other | 其他 | 原 39 | 关键边界:本轮只影响新用户 / 重置分类方案后的智能初始化,不做老用户旧 39 标签自动迁移。 ### 2026-06-27 13 标签方案 来源:commit `369c8f0`,`src/Docs/Requirements/2026-06-27-smartstart-category-simplification.md`。 | 新序号 | category id | 英文显示名 | 简体中文显示名 | 来源 | |---:|---|---|---|---| | 1 | `browser` | Browsers | 浏览器 | 原 1 | | 2 | `communication` | Communication | 沟通 | 原 2 | | 3 | `GTD` | Tasks & GTD | 任务与 GTD | 原 3 | | 4 | `Notes` | Notes | 笔记 | 原 4 | | 5 | `Meeting` | Meetings | 会议 | 原 5 | | 6 | `office` | Office & Docs | 办公文档 | 原 6、7、21 | | 7 | `system-enhancement` | System Tools | 系统工具 | 原 8、9、26、27、28、29、30、31、33、38 | | 8 | `ai-tools` | AI Tools | AI 工具 | 原 10 | | 9 | `development` | Coding | 编程 | 原 11、12、13、14、15、16、32 | | 10 | `design` | Design | 设计 | 原 17、18、19、20 | | 11 | `picture-photo` | Photos | 图片 | 原 25 | | 12 | `entertainment` | Entertainment | 影音娱乐 | 原 22、23、24、34、35 | | 13 | `education` | Education | 学习 | 原 37 | `finance` 和 `other` 回到未分类,不再创建默认标签;老用户历史标签仍不迁移、不删除。 ### 当前源码中的 12 标签方案 来源:当前 `src/Apptag/SmartCategorization/SmartCategory.swift` 中 `SmartCategoryDefaults.orderedIDs`。 | 新序号 | category id | 说明 | |---:|---|---| | 1 | `browser` | 浏览器 | | 2 | `communication` | 沟通,包含 `Meeting` 归并 | | 3 | `GTD` | 任务与 GTD | | 4 | `Notes` | 笔记 | | 5 | `office` | Office & Docs / 办公文档 | | 6 | `system-enhancement` | System Tools / 系统工具 | | 7 | `ai-tools` | AI 工具 | | 8 | `development` | Coding / 编程 | | 9 | `design` | 设计 | | 10 | `picture-photo` | Photos / 图片 | | 11 | `entertainment` | Entertainment / 影音娱乐 | | 12 | `education` | 学习 | 当前映射边界:`Meeting` 归并到 `communication`;`PDF`、`productivity`、`writing` 归并到 `office`;系统、工具、网络、安全类归并到 `system-enhancement`;开发类归并到 `development`;设计类归并到 `design`;媒体、视频、音频、游戏归并到 `entertainment`;`finance`、`other` 返回 `nil`,即不生成默认标签关系。 ## 来源索引 | 日期 | 原始会话 | 主题 | |---|---|---| | 2026-06-25 | [`2026-06-25-初始化标签本地化.md`](../2026-06-25-初始化标签本地化.md) | 初始化标签本地化 | | 2026-06-27 | [`2026-06-27-SmartStart分类精简.md`](../2026-06-27-SmartStart分类精简.md) | SmartStart分类精简 | | 2026-06-27 | [`2026-06-27-SmartStart分类精简-01.md`](../2026-06-27-SmartStart分类精简-01.md) | SmartStart分类精简-01 | ## 时间线 ### 2026-06-25 初始化标签本地化 来源:[`2026-06-25-初始化标签本地化.md`](../2026-06-25-初始化标签本地化.md) #### 2026-06-25 初始化标签本地化 ##### 用户目标 - 全面检查 App Grid 默认初始化标签在切换到非中文语言后仍显示英文的问题。 - 重点确认不只是阿拉伯语截图,而是所有语言的初始化标签都不能出现错误语言内容。 ##### 已完成事项 - 排查默认标签显示链路: - `SmartCategoryID.localizedDisplayName` 使用 `smart.category.*` 文案键。 - `TagDatabase.ensureSystemTag` 和 SmartStart 应用默认分类时均使用系统分类 ID 生成标签。 - 根因不是显示层,而是多语言资源中大量 `smart.category.*` 仍为英文值。 - 补齐 27 个非中文语言包中的 `smart.category.*` 初始化分类标签文案。 - 保留简体中文、繁体中文既有正确文案,仅确认资源完整性。 - 在启动流程中加入系统标签重刷: - `L10n.setup()` - `TagDatabase.seedDefaultTags()` - `TagDatabase.relocalizeSystemTagsForCurrentLanguage()` - 这样已升级用户即使保持原语言选择,也会在下次启动时把带 `systemCategoryID` 的旧英文系统标签迁移到当前语言。 - 更新版本为 `8.0.6 (20260625.1942)`。 - 更新 `src/CHANGELOG.md`。 - 提交 Git: - `65fc2a1 Fix localized default category labels` ##### 文件变更 - `src/Apptag/ApptagApp.swift` - 启动后主动重刷系统标签本地化。 - `src/Apptag/Info.plist` - `CFBundleShortVersionString=8.0.6` - `CFBundleVersion=20260625.1942` - `src/Apptag/Localization/*.json` - 补齐非中文语言的 `smart.category.*` 初始化标签文案。 - `src/Scripts/smart_category_localization_qa.sh` - 新增 29 语种 SmartCategory 本地化 QA。 - 检查每个语言包都包含 43 个 `smart.category.*` key。 - 禁止非英文语言包直接复制英文初始化标签,保留 `PDF`、`DevOps` 这类技术通用词例外。 - 检查启动迁移 hook 存在。 - `src/CHANGELOG.md` - 增加 8.0.6 记录。 ##### QA 结果 - `src/Scripts/smart_category_localization_qa.sh` - PASS:29 语种、43 个 SmartCategory key,非英文语言包无英文直拷标签。 - `src/Scripts/smartstart_catalog_resource_qa.sh` - PASS:29 语种、3453 个非 Apple 条目、29 个 notes catalogs,边界无 Apple 默认备注污染。 - `src/Scripts/apple_default_apps_resource_qa.sh` - PASS:90 个 Apple 默认应用、29 语种、notes 长度约束和运行资源边界通过。 - `src/Scripts/macos14_availability_typecheck_qa.sh` - PASS:arm64 macOS 14.0 availability typecheck。 - `APP_BUILD=20260625.1942 bash src/build.sh` - PASS:生成 `/Users/ar/Projects/Taglauncher/src/build/TagLauncher.app`。 - 产物检查: - `CFBundleShortVersionString=8.0.6` - `CFBundleVersion=20260625.1942` - build 产物中的阿拉伯语、法语、日语、德语、简体中文、繁体中文关键初始化标签均已写入资源。 ##### 未决问题 - 工作区仍存在本次之外的既有脏文件,包括 `CODE_GOVERNANCE.md` 修改、历史 `docs/` 删除和其他文档/画布目录。本次提交未纳入这些内容。 ##### 后续建议 - 若用户要发布此版本,再按发布 SOP 做冻结 tag、DMG/PKG/ASC 上传资料。 - 后续新增 SmartCategory 时必须同步更新 29 语种文案,否则 `smart_category_localization_qa.sh` 会失败。 ### 2026-06-27 SmartStart分类精简 来源:[`2026-06-27-SmartStart分类精简.md`](../2026-06-27-SmartStart分类精简.md) #### 2026-06-27 SmartStart 分类精简 ##### 用户目标 - 将 SmartStart 智能初始化默认标签继续精简,降低默认分类冗余。 - 用户明确要求不考虑老用户迁移:当前正式用户很少,不希望为少数历史数据写复杂迁移逻辑。 ##### 已完成事项 - 默认 SmartStart 标签精简为 15 个。 - 将 Video、Audio、Games 归并到 Entertainment。 - 保持本轮范围只影响新初始化和重置初始化方案,不迁移、不重写、不删除老用户已有标签。 - 更新版本为 8.1.3,build 为 20260627.1605。 - 构建产物:`/Users/ar/Projects/Taglauncher/src/build/TagLauncher.app`。 ##### 关键决策 - 不做老用户迁移。 - 旧 `SmartCategoryID` case 保留,仅用于旧数据解码和 catalog 原始分类归一化。 - 写入新 SmartStart 默认方案前统一通过 `smartStartDefaultCategoryID` 映射到目标 15 标签。 - 需求文档中明确记录“无老用户迁移策略”。 ##### 文件变更 - `/Users/ar/Projects/Taglauncher/CODEGRAPH.md` - `/Users/ar/Projects/Taglauncher/src/Apptag/SmartCategorization/SmartCategory.swift` - `/Users/ar/Projects/Taglauncher/src/Apptag/SmartCategorization/SmartStartService.swift` - `/Users/ar/Projects/Taglauncher/src/Apptag/AppleDefaultAppCatalog.swift` - `/Users/ar/Projects/Taglauncher/src/Apptag/DataLayer.swift` - `/Users/ar/Projects/Taglauncher/src/Apptag/Localization/*.json` - `/Users/ar/Projects/Taglauncher/src/Scripts/smartstart_default_categories_qa.sh` - `/Users/ar/Projects/Taglauncher/src/Docs/Requirements/2026-06-27-smartstart-category-simplification.md` - `/Users/ar/Projects/Taglauncher/src/CHANGELOG.md` - `/Users/ar/Projects/Taglauncher/src/Apptag/Info.plist` ##### QA 结论 - 29 个本地化 JSON 解析通过。 - `smartstart_default_categories_qa.sh` 通过。 - `smart_category_localization_qa.sh` 通过。 - `smartstart_catalog_resource_qa.sh` 通过。 - `apple_default_apps_resource_qa.sh` 通过。 - `apple_default_note_policy_qa.sh` 通过。 - `macos14_availability_typecheck_qa.sh` 通过。 - `macos14_build_metadata_qa.sh` 通过。 - App 构建通过,签名校验通过。 - `quick_search_app_name_qa.sh` 因本机缺少“贝锐向日葵被控.app”跳过。 ##### Git - Commit:`28be00e Simplify SmartStart default categories` - 当前仍存在与本轮无关的历史 dirty 项,例如 `CODE_GOVERNANCE.md` 修改和旧 `docs/` 目录删除;本轮未处理、未回退、未纳入提交。 ##### 后续建议 - 如需发布包,再基于 8.1.3 / 20260627.1605 构建 DMG 并做发布归档。 ### 2026-06-27 SmartStart分类精简-01 来源:[`2026-06-27-SmartStart分类精简-01.md`](../2026-06-27-SmartStart分类精简-01.md) #### 2026-06-27 SmartStart 分类精简 13 标签 ##### 用户目标 - 在上一轮 15 个 SmartStart 默认标签基础上继续精简。 - 移除 `Finance / 财务` 和 `Other / 其他` 两个默认标签。 - 财务类 App 和其它无法明确分类的 App 都应回到未分类。 - 不做老用户迁移,不为了少数历史用户增加冗余迁移逻辑。 ##### 已完成事项 - SmartStart 默认初始化标签从 15 个降为 13 个。 - `finance` 和 `other` 从 `SmartCategoryDefaults.orderedIDs` 移除。 - `SmartCategoryID.smartStartDefaultCategoryID` 改为可选返回值;`finance` 和 `other` 返回 `nil`。 - SmartStart 第三方 catalog 和 Apple 默认应用 catalog 写入前使用 `compactMap` 归一化,命中 `finance` / `other` 时不生成标签关系。 - 更新 `CODEGRAPH.md`、需求文档、changelog 和 QA 脚本。 - 版本更新为 `8.1.4`,build 更新为 `20260627.1643`。 - 构建产物:`/Users/ar/Projects/Taglauncher/src/build/TagLauncher.app`。 ##### QA 结论 - 29 个本地化 JSON 解析通过。 - `src/Scripts/smartstart_default_categories_qa.sh` 通过:13 defaults,finance/other uncategorized。 - `src/Scripts/smart_category_localization_qa.sh` 通过。 - `src/Scripts/smartstart_catalog_resource_qa.sh` 通过。 - `src/Scripts/apple_default_apps_resource_qa.sh` 通过。 - `src/Scripts/apple_default_note_policy_qa.sh` 通过。 - `src/Scripts/macos14_availability_typecheck_qa.sh` 通过。 - `src/Scripts/macos14_build_metadata_qa.sh` 通过。 - `codesign --verify --deep --strict` 通过。 ##### Git - Commit:`369c8f0 Reduce SmartStart default categories to thirteen` - 当前仍存在与本轮无关的历史 dirty 项,例如 `CODE_GOVERNANCE.md` 修改和旧 `docs/` 目录删除;本轮未处理、未回退、未纳入提交。 ##### 后续建议 - 如需交付给测试或用户,应基于 `8.1.4 / 20260627.1643` 另行生成 DMG,并按发布规则生成 manifest、hash 和 tag。