日期:2026-06-26
范围:TagLauncher 首期“免费下载 + Pro 一次性买断解锁”
originalAppVersion 早于“免费 + Pro 首个正式版本”则自动获得 ProoriginalPurchaseDate 仅在版本信息缺失或不可用时兜底appGridThemeIDcontainerAppOrderappNotes / appNoteMetadataData 页顶部放完整 Pro 状态区Theme 页顶部放轻量镜像状态条Pro 胶囊,不做全局 V 锁com.taglauncher.pro.lifetime,集中在 ProEntitlementConfig.lifetimeProductID8.1.0,集中在 ProEntitlementConfig.firstFreeProVersionoriginalPurchaseDate 兜底日期:当前保持 nil,仅当版本阈值无法判断且后续明确兜底日期时启用ProEntitlementCenterTransaction.updatesTAGLAUNCHER_QA_PRO_STATE=free|pro|legacyProTAGLAUNCHER_QA_THEME_PREVIEW_SECONDSPro 胶囊TagEditor.reorderAppsNSSavePanel / NSOpenPanelPro 标识TagDatabase.exportTo/importFrom 也补硬门禁,防止绕过Data 页顶部新增完整 Pro 状态区Pro 已解锁本轮先做:
Data / Theme 的 Pro UIsrc/Apptag/ProEntitlement.swift:统一 Pro 权益中心、StoreKit 2 当前权益 / 交易更新 / 购买 / 恢复、离线缓存、老用户自动 Pro 和 QA 状态注入。src/Apptag/ProAccessViews.swift:统一 Pro 胶囊和解锁提示视图。ApptagApp.swift、AppGridTheme.swift、ContentView.swift、PreferencesView.swift、DataLayer.swift、L10n.swift,覆盖主题、导入导出、备注额度、排序持久化和设置页状态入口。pro.* 文案。Scripts/pro_localization_qa.sh:静态检查 29 语种 Pro 文案键完整、占位符完整、无生成污染和无英文兜底复制。Scripts/pro_feature_gate_qa.sh:源码门禁 Pro 权益、老用户自动 Pro、主题门禁、导入导出硬拦截、备注额度、排序预览和 Pro UI 提示。本轮不做: