edit | blame | history | raw

2026-06-28 Pro 快捷键需求

用户目标

  • 翻找历史记录,确认以前是否讨论过自定义快捷键需求。
  • 自定义快捷键必须作为 Pro 功能:Pro 用户才能自定义,普通用户不能自定义。
  • 如果找不到正式需求文档,则拉产品总监、架构师、代码审核员、QA 讨论并形成需求文档。
  • 该功能未来要上架 App Store,因此需求阶段必须评估审核风险。

当前起点

  • 项目:/Users/ar/Projects/Taglauncher
  • 源码根目录:/Users/ar/Projects/Taglauncher/src
  • 当前分支:codex/appgrid-usage-tips
  • 历史记录:找到 /Users/ar/Projects/Taglauncher/.codex-sessionhistory/2026-06-16-自定义快捷键评估.md
  • 未找到正式 PRD,因此本轮新增需求文档。

已完成事项

  • 读取项目规则、代码治理规则、PRD 编写技能和预实施讨论规则。
  • 检索 .codex-sessionhistorysrc/DocsDocs,确认只有历史评估记录,没有正式 PRD。
  • 拉起产品总监、两位架构师、代码审核员、QA 进行只读讨论。
  • 核对当前代码事实:
  • App Grid 固定快捷键:⌥⇧Space
  • Quick Search 固定快捷键:Fn+Space
  • 设置页当前只展示固定快捷键,没有自定义 UI
  • AppDefaults.removeShortcutCustomizationDefaults() 会清理历史自定义快捷键 defaults
  • 当前注册逻辑不适合直接复用为自定义保存,需要事务式失败回滚
  • 新增需求文档:
  • /Users/ar/Projects/Taglauncher/src/Docs/Requirements/2026-06-28-pro-custom-hotkeys-prd.md

关键决策

  • 自定义快捷键只覆盖两个全局入口:
  • App Grid 全局唤起
  • Quick Search 全局唤起
  • App Grid 内部 Space 不纳入自定义。
  • 免费用户继续使用默认快捷键,不能录制、保存或应用自定义快捷键。
  • Pro 用户可以自定义、恢复默认,并在冲突失败时保留旧快捷键。
  • 自定义快捷键纳入现有 Lifetime Pro Unlock,不建议新增单独 IAP。
  • 老付费用户自动获得 Pro 后,也自然获得自定义快捷键能力。
  • 不做免费预览,避免写脏真实快捷键数据。
  • 不引入 Accessibility、Input Monitoring、CGEventTap 或私有 API。

用户确认

用户已确认 /Users/ar/Projects/Taglauncher/src/Docs/Requirements/2026-06-28-pro-custom-hotkeys-prd.md 第 13 节所有默认口径均无异议。后续实现按该 PRD 执行,不再重复确认以下事项:

  • 自定义快捷键作为现有 Lifetime Pro Unlock 的一部分,不新增单独 IAP。
  • 免费用户显示锁定入口,点击后弹 Pro 提示。
  • 首版不允许禁用某个全局快捷键。
  • 首版不允许两个入口使用同一个快捷键。
  • 首版禁止无修饰键、modifier-only、Shift-only、Option-only 和明显系统保留组合。
  • 默认快捷键继续保持 ⌥⇧SpaceFn+Space
  • 历史旧快捷键 defaults 不迁移为有效设置,只清理或忽略。

App Store 风险口径

  • 该功能是 App 内数字功能解锁,适合通过非消耗型 IAP 提供。
  • 免费版必须继续可用,不能把基础唤起和基础 Quick Search 锁进 Pro。
  • 提交审核时需要说明:
  • App 免费下载
  • Pro 是一次性买断
  • 旧付费用户自动获得终身 Pro
  • 自定义快捷键不需要额外隐私权限
  • 免费用户仍可使用默认快捷键

后续建议

  • 用户确认 PRD 第 13 节默认口径后,再进入实现。
  • 实现前建议独立功能分支,不夹带到当前已准备发布的 8.1.7。
  • 后续实现必须补 29 语种、多系统 QA、冲突失败回滚、重启持久化。