| | |
| | | |
| | | ## In Progress |
| | | |
| | | ## Todo |
| | | - [2026-06-24] 8.0.0 App Grid 主题系统。 |
| | | - 目标: 在设置页新增“主题”页签,提供默认、深蓝、黑色、粉色、紫色、绿色、蓝色、炫彩 8 个主题;主题只改变 App Grid 全屏背景渐变,容器保持统一半透明玻璃面板,并按主题明暗自动适配玻璃明暗。 |
| | | - 范围: App Grid 背景、容器玻璃适配、设置页主题选择、旧 `useDarkAppGrid` 偏好迁移、29 语种主题文案、主题 QA 脚本。 |
| | | - 不做: 不新增容器玻璃深浅独立开关;不改标签/拖拽/排序/Quick Search/数据结构功能语义;不改浅色默认主题视觉。 |
| | | - 当前状态: 已完成代码实现、29 语种文案和确定性 QA;已按用户反馈将黑色改为纯黑,并将粉色/绿色/紫色/蓝色/炫彩改为更明亮且有辨识度的版本;等待用户视觉体验验收后决定是否继续冻结/打包。 |
| | | - 文档: `Docs/Requirements/2026-06-24-app-grid-theme-system-todo.md`、`Docs/Requirements/2026-06-24-app-grid-theme-system-worklog.md`。 |
| | | |
| | | - [新需求] 容器内 App 手动拖拽排序。 |
| | | - 目标: 用户可以在同一个容器/分组内拖动 App,改变该容器内默认显示顺序;重启、刷新、语言切换、导入导出、恢复布局后顺序仍保持。 |
| | | - 核心决策: 这不是纯 UI 数组重排;App 顺序必须作为“分类与布局方案”的一部分持久化到 `TagDatabase.Store`。 |
| | | - 最小版本范围: |
| | | - 只支持同一容器内排序,不改变 App 的标签归属。 |
| | | - 跨容器拖动继续沿用现有移动/复制标签逻辑。 |
| | | - 拖到空白区域继续沿用现有移除来源标签/归为未分类确认逻辑。 |
| | | - 不改 Quick Search 排名,不改 `appTags[path]` 语义,不存像素坐标、row/column 或 `IndexPath`。 |
| | | - 数据层 TODO: |
| | | - 在 `TagDatabase.Store` 新增 `containerAppOrder: [String: [String]]`,旧 JSON 用 `decodeIfPresent` 默认空字典。 |
| | | - 定义稳定容器 ID,不能用本地化显示名;建议普通标签 `tag:<tagName>`,系统分类 `system:<SmartCategoryID>`,特殊容器 `__container.uncategorized` / `__container.appleBuiltIn`。 |
| | | - `TagGroup` 或分组构造链路携带稳定 container key,显示名继续只用于 UI。 |
| | | - 在 `makeDisplayGroups` / 分组生成后按 `containerAppOrder` 排组内 apps;未命中的新 App 按现有默认名称排序追加。 |
| | | - 新增 `TagEditor.reorderApps(inContainer:orderedPaths:)`,走 `saveUserCategorySchemeMutation(reason: "reorder-apps")`。 |
| | | - `CategorySchemeFingerprint` 纳入 `containerAppOrder`,确保自动快照、恢复上一方案和导出/导入不会漏掉顺序。 |
| | | - tag rename/delete/relocalize、卸载 App reconcile、未分类重置、SmartStart replace 必须同步迁移或清理顺序字段。 |
| | | - UI TODO: |
| | | - 不使用 SwiftUI `onDrag/onDrop`;当前 App Grid 是 AppKit `NSViewRepresentable` + 自绘拖拽,应在 `AppGridCollectionView` / `AppGridGroupCardView` / `AppGridIconNSView` 链路扩展。 |
| | | - 为同容器排序增加独立 intent 和 insertion index hit-test,避免误触发跨标签移动、复制、拖空白移除或 Apple 内置保护逻辑。 |
| | | - 第一版可只显示插入位置指示线/占位,不做复杂跨容器预览。 |
| | | - 排序开始时继续抑制 hover bubble;结束、取消、滚动、Esc、切换窗口时必须清理拖拽状态。 |
| | | - 编辑模式的批量添加/移除标签界面第一版不开放 App 排序,只读取排序结果。 |
| | | - 推荐开发切分: |
| | | 1. 数据层 PR: schema、容器 ID、排序 helper、fingerprint、导入导出/恢复/重置/SmartStart 规则;先不接 UI。 |
| | | 2. UI hit-test PR: 同容器插入位置计算和本地预览,不落盘,不改变跨容器拖拽。 |
| | | 3. 集成 PR: `ContentView` 接入 reorder callback,drop/end 时保存该容器完整顺序并刷新。 |
| | | 4. 回归 PR: 数据脚本 QA、macOS 14 typecheck/build、窗口/拖拽 smoke、真实鼠标手工验收。 |
| | | - QA 阻断项: |
| | | - 旧 `tags.json` 无顺序字段可加载,默认顺序与现版本一致。 |
| | | - 新字段导出/导入 roundtrip 保留顺序;恢复上一方案恢复顺序。 |
| | | - 排序后刷新、重启、语言切换、SmartStart 备份/恢复均不丢顺序。 |
| | | - 同容器排序不破坏跨容器移动/Option 复制、拖空白移除、拖到 Apple 内置保护。 |
| | | - 多标签 App 在 A 容器排序不影响 B 容器顺序。 |
| | | - macOS 14、5 种 displayMode、左/右/顶部标签位置、hide names 开关、icon size 40/64/80 至少 smoke。 |
| | | - 风险等级: 最小方案中等;若一次性做跨容器插入、跨机器稳定匹配、复杂拖拽 payload 和所有模式完整预览,风险升为高。 |
| | | - 参考记录: `.codex-sessionhistory/2026-06-11-App容器排序方案.md`。 |
| | | ## Todo |
| | | |
| | | - [发布后独立任务] 设置页 tab 容器 AppKit/自控化评估与实现。 |
| | | - 决策: 当前发布前 No-Go;保留 SwiftUI `TabView`,不改 QA 脚本。 |
| | |
| | | |
| | | ## Done |
| | | |
| | | - [2026-06-25] 使用技巧关闭提醒箭头与正文补修。 |
| | | - 结果: 设置页预览里的蓝色说明整体右移,箭头指向“隐藏使用技巧”的勾选框;提醒正文说明字号提升到 17pt semibold,并以 70% 白色保持次级层级。 |
| | | - 范围: 只改 `UsageTipsCloseReminderBubble` / `UsageTipsCloseReminderSettingsPreview` 排版、版本号/changelog 和专项 QA 断言;不改关闭状态机、不改 tips 横幅、不改主题逻辑。 |
| | | - 验证: `usage_tips_close_reminder_qa.sh`、`usage_tips_qa.sh`、`macos14_availability_typecheck_qa.sh`、完整构建和 build metadata QA。 |
| | | - 版本: `8.0.5 (20260625.1726)`。 |
| | | |
| | | - [2026-06-25] 使用技巧关闭提醒视觉补修。 |
| | | - 结果: 设置页预览中的高亮说明改为居中显示;“不再提醒”选项与确认按钮改为同一底部操作行,字体提升为 13pt semibold 并与确认按钮底部对齐。 |
| | | - 范围: 只改 `UsageTipsCloseReminderBubble` 排版、版本号/changelog 和专项 QA 断言;不改关闭状态机、不改 29 语种文案。 |
| | | - 验证: `usage_tips_close_reminder_qa.sh`、`usage_tips_qa.sh`、`macos14_availability_typecheck_qa.sh`、完整构建和 build metadata QA。 |
| | | - 版本: `8.0.4 (20260625.1655)`。 |
| | | |
| | | - [2026-06-25] 使用技巧关闭提醒。 |
| | | - 结果: 点击 App Grid 使用技巧关闭按钮时先弹出提醒,说明可在“设置 > 通用”取消“隐藏使用技巧”重新查看;用户确认后才隐藏 tips,勾选“不再提醒”后后续关闭直接隐藏。 |
| | | - 范围: 关闭按钮链路、提醒弹窗、本地化设置页预览、`skipUsageTipsCloseReminder` 偏好、29 语种提醒文案、专项 QA。 |
| | | - 不改范围: tips 默认仍显示;8 条教学内容、主题/拖拽/排序/Quick Search 功能不变。 |
| | | - 验证: `usage_tips_qa.sh`、`usage_tips_close_reminder_qa.sh`、`theme_settings_qa.sh`、`macos14_availability_typecheck_qa.sh`、`git diff --check`、`APP_BUILD=20260625.1615 bash src/build.sh`、`macos14_build_metadata_qa.sh src/build/TagLauncher.app` 通过。 |
| | | - 版本: `8.0.3 (20260625.1615)`。 |
| | | - 文档: `Docs/Requirements/2026-06-25-usage-tips-close-reminder-todo.md`、`Docs/Requirements/2026-06-25-usage-tips-close-reminder-worklog.md`。 |
| | | |
| | | - [2026-06-25] App Grid 解除标签碎纸预览动效。 |
| | | - 结果: 拖动应用到容器外/容器之间空白区域时,拖拽浮层进入原生 Core Animation 碎纸切片预览;离开该区域恢复正常。 |
| | | - 范围: 只改拖拽浮层视觉反馈和空白 drop 预览资格判断;不改标签数据、不改容器内空白语义、不改放手后的解除标签确认流程。 |
| | | - 验证: `Scripts/macos14_availability_typecheck_qa.sh`、`APP_BUILD=20260625.1500 bash src/build.sh`、`Scripts/macos14_build_metadata_qa.sh src/build/TagLauncher.app` 和 `git diff --check` 通过。 |
| | | |
| | | - [2026-06-11] 7.9.0 容器内 App 手动拖拽排序。 |
| | | - 结果: 同一容器内拖动 App 可改变显示顺序;排序保存为分类与布局方案的一部分,刷新、重启、语言切换、导入导出、恢复上一方案和 SmartStart 替换按统一规则保留、迁移或清理。 |
| | | - 范围: 新增稳定 `containerAppOrder`、容器 ID、排序持久化 helper、分类方案 fingerprint、App Grid 同容器插入位置提示和 `ContentView` 保存回调;跨容器移动、Option 复制、拖空白移除、Apple 内置保护、Quick Search 排名均不改。 |
| | | - 文档: `../docs/7.90/README.md`、`../docs/7.90/01-容器内App手动排序-TODO.md`、`../docs/7.90/07-实现与QA记录.md`。 |
| | | - 验证: `Scripts/app_ordering_data_qa.sh`、macOS 14 typecheck/build metadata、Quick Search 名称回归、SmartStart catalog QA、`Scripts/window_logic_qa.sh` 通过。 |
| | | - 版本: `7.9.0 (20260611.2212)`。 |
| | | |
| | | - [2026-06-09] 多语种 App 显示名通用加固。 |
| | | - 结果: 新增统一 `AppDisplayNameResolver`;App Grid 与 Quick Search 标题优先走当前语种/同语系/系统可见名/英文官方名/基础 bundle 名 fallback,内部 bundle 名和 bundle id 只作为搜索别名;`7.8.26` 进一步加固 `/Wrapper/`、`/Contents/Helpers/`、`.app/.../*.app` 内部 helper 过滤。 |
| | | - 范围: `AppInfo` 增加系统显示名与 bundle 显示名候选;App 扫描层和 Quick Search 文档层都过滤内部 helper;Quick Search 文档使用 resolver 生成别名;版本更新为 `7.8.26 (20260609.2004)`。 |