edit | blame | history | raw

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。

未执行事项

  • 本轮未修改源码。
  • 等用户确认是否进入实现,以及确认“清空备注”的最终语义。