edit | blame | history | raw

Pro 状态重置排查

用户目标

检查本机测试脚本为何不能通过 launchctl unsetenv TAGLAUNCHER_QA_PRO_STATE、退出并重新打开 TagLauncher 来去除会员状态、回到免费态。

已完成事项

  • 按项目规则读取 CODE_GOVERNANCE.mdCODEGRAPH.md 和相关调试 / QA / 代码治理规则。
  • 确认 /Applications/TagLauncher.app8.2.8,build 20260630.0128,与当前 HEAD/tag 对应。
  • 确认 launchctl getenv TAGLAUNCHER_QA_PRO_STATE 已为空,但运行中的 TagLauncher 旧进程仍携带 TAGLAUNCHER_QA_PRO_STATE=pro
  • 确认源码中 TAGLAUNCHER_QA_PRO_STATE 支持 free|pro|legacyPro;unset 只表示恢复真实权益状态,不等于强制免费。
  • 按项目 QA 脚本的进程清理方式重启 App,并使用 launchctl setenv TAGLAUNCHER_QA_PRO_STATE free 启动新进程。

关键结论

  • 原三行脚本失效的直接原因是旧 TagLauncher 进程没有在 open 前真正退出,导致 open 复用了仍携带 TAGLAUNCHER_QA_PRO_STATE=pro 的旧进程。
  • 从当前代码语义看,如果测试目标是强制免费态,应使用 TAGLAUNCHER_QA_PRO_STATE=freeunsetenv 只适合恢复 StoreKit / legacy / cache 推导出的真实权益状态。

文件变更

  • 未修改 App 源码、构建脚本或 QA 脚本。
  • 新增本会话记录:.codex-sessionhistory/2026-06-30-Pro状态重置.md

当前环境变更

  • 当前运行的 /Applications/TagLauncher.app 新进程已重新启动。
  • 新进程环境为 TAGLAUNCHER_QA_PRO_STATE=free

未决问题

  • 尚未把这段更稳的免费态重置命令沉淀成项目 QA 脚本或文档。

后续建议

  • 若需要长期复用,新增一个专门的本机 QA helper,例如 Scripts/reset_pro_state_for_qa.sh free|pro|legacyPro|real,避免手写 quit/open 时再次复用旧进程。