# TagLauncher 会话记录 - 2026-06-08-06 ## 用户目标 - 基于“当前没有真实老用户”的前提,重新拉一位架构师、一位 QA/KOA、一位程序员讨论 Apple 系统自带应用默认备注多语言方案。 - 目标不是迁就旧中文 `appleDefault`,而是制定长期最合理、对 29 种语言用户最友好的方案。 ## 三方共识 - Apple 默认备注运行时应完全收敛到 SmartStart UltimateDefaultCatalog。 - 所有系统默认备注统一使用 `.catalogDefault` metadata。 - `AppleDefaultAppNotes.swift` 不应再作为运行时备注来源。 - SmartStart catalog 已有 29 语言 notes 和 77 个 `com.apple.*` 条目,应作为唯一默认备注数据源。 - Apple app 与第三方 catalog app 使用同一匹配路径:优先 bundle id,其次 normalized name。 - 用户手动编辑后的备注必须标记为 `.manual`,之后永远不随语言切换自动变化。 - 新版本不应再写入 `.appleDefault`;该 enum case 最多保留为历史解码兼容。 ## 推荐实现方向 - `SmartStartService` 增加公开查询接口,例如: - `static func defaultNote(for app: AppInfo) -> (note: String, provenance: SmartDefaultNoteProvenance)?` - `DataLayer.seedDefaultAppleAppNotes` 改为 catalog 默认备注播种逻辑,不再调用 `AppleDefaultAppNotes.note(for:)`。 - 写入默认备注时统一使用: - `origin = .catalogDefault` - `catalog = provenance` - `noteFingerprint = provenance.noteFingerprint` - `ContentView` / `L10n` 现有语言切换后调用 `SmartStartService.relocalizeDefaultNotesForCurrentLanguage(apps:)` 的方向保留。 - `AppleDefaultAppNotes.swift` 后续拆分: - familiar Apple app 白名单可保留或迁到 `AppleAppClassifier`。 - 中文备注字典和 `note(for:)` 不再用于运行时。 ## 分歧点:清空备注语义 - QA 和程序员建议:清空备注是用户显式覆盖为空,后续不自动填回。 - 架构师建议:清空备注更像撤销自定义,应恢复默认跟随。 - 主线程建议:按“用户手动改过才不自动变化”的字面语义,清空也属于手动改过;更安全的产品行为是保持空,并在未来另设“恢复默认备注”入口。 ## QA 门禁建议 - 29 语言 × 77 个 Apple 条目的 notes 完整性检查。 - 新用户英文/中文/日文启动,Apple 默认备注应为当前语言。 - 语言切换时,未改默认备注跟随变化。 - 用户手动改过某条备注后,该条不再随语言变化。 - 用户清空某条备注后,该条应按最终产品定义保持空或恢复默认;实现前必须先确定。 - 第三方应用不得被 Apple 默认备注逻辑误改。 - 构建产物内必须包含 base catalog、manifest、29 个 compressed notes,并验证可 decode。 ## 未执行事项 - 本轮未修改源码。 - 等用户确认是否进入实现,以及确认“清空备注”的最终语义。