| | |
| | | # TagLauncher CODEGRAPH |
| | | |
| | | 最后更新:2026-06-25 |
| | | 最后更新:2026-06-26 |
| | | |
| | | 用途:本文件是 TagLauncher 的长期工程地图。修改用户可见行为、状态模型、构建/发布入口、核心源码或 QA 入口前,应先读本文件,再读指向的真实源码。若本文件与源码不一致,以源码为准,并在同一任务内更新本文件。 |
| | | |
| | |
| | | - `TagLauncherApp`:SwiftUI App 入口。 |
| | | - `AppDelegate`:菜单栏状态项、Dock 显示策略、热键注册、窗口打开、Quick Search 触发、App 生命周期。 |
| | | - 支持从标签导航双击进入设置页的 Tags tab。 |
| | | - 启动时初始化 `ProEntitlementCenter`,保证免费 / Pro / 老用户自动 Pro 状态进入全局同步快照。 |
| | | - `src/Apptag/OverlayWindowController.swift` |
| | | - `OverlayPanel` / `OverlayWindowController`:AppGrid 浮层窗口与显示/隐藏控制。 |
| | | - `src/Apptag/ContentView.swift` |
| | |
| | | - `src/Apptag/AppGridTheme.swift` |
| | | - AppGrid 主题事实源:theme id、localization key、设置页 swatch、全屏渐变背景、玻璃明暗、编辑模式 token。 |
| | | - 持久化 key:`appGridThemeID`。 |
| | | - 主题是否需要 Pro 只通过 `ProEntitlementConfig.freeThemes` 判断,不在主题 UI 中散落规则。 |
| | | - `src/Apptag/ProEntitlement.swift` |
| | | - `ProEntitlementCenter`:StoreKit 2 当前权益、购买、恢复、交易更新、离线缓存和 QA 状态注入。 |
| | | - `ProEntitlementPolicy`:数据层可同步调用的 Pro 门禁;覆盖主题、导入 / 导出、备注额度和应用排序持久化。 |
| | | - `ProEntitlementConfig`:一次性买断商品 ID、免费 + Pro 首个版本、免费主题集合、免费备注额度和 QA 环境变量的单一配置点。 |
| | | - `src/Apptag/ProAccessViews.swift` |
| | | - `ProStatusPill`:高级功能入口的小型 Pro 胶囊。 |
| | | - `ProUpgradePromptView`:功能被锁时的统一解锁提示,购买 / 恢复动作由调用方闭包绑定。 |
| | | - `src/Apptag/AppGridSupport.swift` |
| | | - 图标气泡、基础 metrics、气泡 placement 支撑。 |
| | | - `src/Apptag/TagNavigationView.swift` |
| | |
| | | - 语言选择、translation JSON 加载、帮助文档入口。 |
| | | - `src/Apptag/Localization/*.json` |
| | | - App UI 本地化文案。新增用户可见文案时必须覆盖全部 29 个语言文件,并验证 JSON 合法。 |
| | | - `smart.category.*` 是 SmartStart/default system tag 的显示事实源;非英文语言不得直接复制英文初始化标签。 |
| | | - `src/Apptag/Resources/` |
| | | - SmartStart、Apple default catalog、帮助文档等运行时资源。 |
| | | - `src/Docs/Requirements/` |
| | |
| | | - Apple 默认备注迁移检查。 |
| | | - `src/Scripts/smartstart_catalog_resource_qa.sh` |
| | | - SmartStart catalog 资源检查。 |
| | | - `src/Scripts/smart_category_localization_qa.sh` |
| | | - SmartCategory/default system tag 初始化标签 29 语种本地化检查;禁止非英文语言包直接复制英文标签,保留 `PDF`、`DevOps` 等技术通用词例外。 |
| | | - `src/Scripts/quick_search_app_name_qa.sh` |
| | | - Quick Search 应用显示名回归。 |
| | | - `src/Scripts/quick_search_system_app_qa.sh` |
| | |
| | | - 标签双击进入标签设置页回归。 |
| | | - `src/Scripts/theme_settings_qa.sh` |
| | | - 8 个主题、Theme tab、旧深色偏好迁移、编辑模式默认浅色 override、29 语种主题文案回归。 |
| | | - `src/Scripts/pro_localization_qa.sh` |
| | | - Pro 文案 29 语种静态门禁;检查 `pro.*` 键完整、占位符完整、无生成污染和非英文语言无英文兜底复制。 |
| | | - `src/Scripts/pro_feature_gate_qa.sh` |
| | | - Pro 功能源码门禁;检查 StoreKit 权益、老用户自动 Pro、主题门禁、导入导出硬拦截、备注额度、排序预览和 Pro UI 提示。 |
| | | - `src/Scripts/appgrid_startup_loading_qa.sh` |
| | | - AppGrid 快照复用和延迟转圈回归。 |
| | | - `src/Scripts/usage_tips_qa.sh` |
| | |
| | | - 不得擅自改变源码根目录边界:App 源码只在 `src/` 下维护。 |
| | | - 不得把主题、视觉偏好、窗口状态混入 `TagDatabase` 的分类/标签业务数据。 |
| | | - 主题变化只允许影响 AppGrid 视觉,不得改变标签数据、排序、备注、SmartStart/category scheme、Quick Search、拖拽语义或导入导出。 |
| | | - Pro 门禁不得写脏免费用户真实数据:主题预览不写 `appGridThemeID`,排序预览不写 `containerAppOrder`,第 6 个新备注不写 `appNotes` / `appNoteMetadata`,导入 / 导出拦截必须早于文件面板和文件读写。 |
| | | - 免费主题固定为默认、深蓝、黑色;其它主题只能预览或在 Pro 解锁后持久化。 |
| | | - `originalAppVersion` 早于免费 + Pro 首个版本的历史用户必须自动获得 Pro;`originalPurchaseDate` 只能作为版本不可判断时的兜底。 |
| | | - 默认主题必须保留原浅色毛玻璃 AppGrid。 |
| | | - 黑色主题背景必须为 100% 纯黑;深蓝和黑色使用深色玻璃;粉色、紫色、绿色、蓝色、炫彩使用浅色玻璃以保证明亮和可读。 |
| | | - 单个 AppGrid 容器保持统一半透明玻璃面板,不做容器内部渐变。 |
| | |
| | | - AppGrid 启动或重开不应因为新 `ContentView` 初始 `allApps.isEmpty` 立刻显示转圈;应先复用最近一次完整快照,并延迟显示 loading。 |
| | | - Quick Search 显示标题应优先使用解析后的 `AppInfo.displayName`,内部 bundle 名只作为搜索字段。 |
| | | - Apple 默认应用备注必须按当前语言显示,不允许 A 语言出现 B 语言备注。 |
| | | - SmartStart/default system tag 初始化标签必须按当前语言显示;升级用户启动后应重刷带 `systemCategoryID` 的系统标签,不能长期保留旧英文初始化标签。 |
| | | - 标签导航单击必须立即滚动;hover 必须保持受控自动滚动;长按排序必须保留;双击可以打开标签设置页但不得替代前三者。 |
| | | - 容器外空白拖放才可触发解除标签;容器内部空白不算解除标签。 |
| | | - 拖到解除标签区域的碎纸预览只能是视觉反馈,不能跳过放手后的原确认流程。 |