edit | blame | history | raw

Taglauncher 会话记录 2026-06-08

用户目标

用户要求以架构师视角审查 /Users/ar/Projects/Taglauncher-7.8.15-source,只讨论方案、不改代码。核心目标是让 Apple 系统自带应用默认备注随界面语言显示本语言;当且仅当用户手动改过某条备注,该条不再随语言变化。用户明确说明目前没有真实老用户,老用户只有 owner 本人,因此不要以兼容旧 appleDefault 中文备注为核心约束。

已完成事项

  • 读取项目规则:work-continuity.mddelivery-gate.md
  • 审查 Apptag/AppleDefaultAppNotes.swift,确认其包含约 72 条中文硬编码备注和 familiar Apple app 白名单。
  • 审查 Research/SmartStart/UltimateDefaultCatalog,确认 base catalog 中有 77 个 com.apple.* 条目,29 个 notes 语言文件存在。
  • 审查 Apptag/SmartCategorization/SmartStartService.swift,确认 .catalogDefault 备注已有按 L10n.currentCode 加载、fallback、metadata provenance、语言切换重定位逻辑。
  • 审查 Apptag/DataLayer.swift,确认当前 Apple 初始备注通过 seedDefaultAppleAppNotes 写入 .appleDefault,不会被 relocalizeDefaultNotesForCurrentLanguage 更新。
  • 审查 TagEditor.setAppNote,确认用户非空编辑会写入 .manual,清空会删除备注和 metadata。
  • 审查 L10n.swiftApptagApp.swiftContentView.swift,确认语言切换入口会发 .appLanguageDidChange,ContentView 收到后触发 catalog 默认备注重定位。
  • 审查 build.sh 与 catalog 构建脚本,确认 build 会复制 base/manifest 并压缩所有 notes 资源;Research 生成脚本仍从 AppleDefaultAppNotes.swift 抽取 Apple fallback。

关键决策建议

  • 长期推荐把 Apple 自带 App 默认备注统一纳入 SmartStart catalog 体系,不再在运行时使用独立 AppleDefaultAppNotes.swift 作为备注来源。
  • AppNoteOrigin.appleDefault 应迁移/降级为历史兼容枚举值;新写入的系统默认备注统一使用 .catalogDefault
  • metadata.catalog 应成为判断“仍跟随默认”的唯一依据:包含 entryID、实际语言、notesVersion 和 fingerprint。
  • 用户手动编辑非空备注继续标记 .manual;语言切换只更新 .catalogDefault 且当前文本 fingerprint 仍匹配旧默认的条目。
  • 清空备注的语义建议定义为“恢复默认跟随”,而不是“手动保持为空”;如产品需要永久空备注,应另设显式操作。
  • Research 构建脚本应停止解析 Swift 运行时代码,Apple 中文源备注应保留在 catalog CSV 或专用 seed JSON 中。

文件变更

无。用户明确要求只讨论方案、不改代码。

未决问题

  • 是否需要提供一个“保持为空/隐藏默认备注”的显式 UI 语义;若没有真实用户,建议暂不引入。
  • 是否在下一版本做一次 store migration,把 owner 机器上 .appleDefault 且 fingerprint 匹配旧硬编码的备注迁到 .catalogDefault

后续建议

  • 实现时优先修改默认备注来源和 migration,再调整清空备注语义。
  • 发布前应验证 29 种语言的 Apple 默认备注、语言切换后 .manual 不变、清空后恢复跟随默认、build bundle 内包含所有压缩 notes 资源。