Ariver
2026-05-28 efbfc27e0c813c31b570d72fded40eb91d07f2db
TODO.md
@@ -11,30 +11,7 @@
## In Progress
- [2026-05-28] 第二批 AppKit 化第 1 项:清理 `ContentView` 的 App Grid 交互职责。
  - 分支: `codex/post-freeze-new-requirement`
  - 目标: 先做低风险状态收口,把 App Grid 的 bubble、drag、drop、refresh toast 等临时交互状态集中管理,降低后续标签栏 AppKit 化风险。
  - 原则: 不改变用户可见 UI,不改变拖拽/hover/Quick Search/窗口行为。
  - 验收: `bash build.sh`、`codesign --verify --deep --strict`、localization JSON 解析、App Grid 交互 targeted QA、必要时跑 `Scripts/window_logic_qa.sh`。
  - QA: 自动化通过后,由 QA 屏幕点击复核;用户只做最终体验验收。
## Todo
- [2026-05-28] 第二批 AppKit 化第 2 项:标签栏 AppKit 化第一阶段,只读导航。
  - 目标: 抽 `TagNavItem` / callbacks 边界,新增可回滚的 AppKit 标签栏。
  - 范围: 顶部、左侧、右侧标签栏显示;点击标签滚动到对应分组。
  - 暂不做: 标签拖拽排序。
  - 回滚: 保留旧 SwiftUI 标签栏作为开关。
  - 验收: 三种标签位置、点击滚动、长标签、多语言、全屏和 Split View。
- [2026-05-28] 第二批 AppKit 化第 3 项:标签栏 AppKit 化第二阶段,hover 与容器高亮。
  - 目标: hover 标签时高亮对应容器,保留 colorless container 的填充/取消逻辑。
  - 验收: hover 触发频率、滚动不过度、视觉不闪烁、全屏/Split View 不跳 Space。
- [2026-05-28] 第二批 AppKit 化第 4 项:标签栏 AppKit 化第三阶段,拖拽排序。
  - 目标: 用 AppKit hit-testing 替换 SwiftUI `GeometryReader + preference` 的标签排序命中逻辑。
  - 持久化: 继续走 `TagEditor.reorderTags`。
  - 验收: 顶部/左/右三种方向拖拽排序;关闭重开后顺序保留;数据库顺序正确。
- [2026-05-28] 清理或改名 `AppGridItem.swift` 残留。
  - 目标: 该文件现在主要是 shared metrics / bubble 类型,不再是旧浏览态 grid,名称容易误导。
@@ -65,6 +42,26 @@
## Done
- [2026-05-28] 第二批 AppKit 化第 4 项:标签栏 AppKit 化第三阶段,拖拽排序。
  - 提交: 本次提交
  - 结果: AppKit 标签栏已支持长按拖拽排序;排序命中改为 AppKit button frame hit-testing;持久化继续走 `TagEditor.reorderTags`。
  - 验证: 构建 `7.6.0 (20260528.2052)`、签名、静态 QA、顶部/左/右三种标签栏拖拽排序、`tags.json` 持久化、窗口 8 逻辑 QA 全部通过;QA 后已恢复用户标签顺序和语言自动设置。
- [2026-05-28] 第二批 AppKit 化第 3 项:标签栏 AppKit 化第二阶段,hover 与容器高亮。
  - 提交: `9d87dbe`
  - 结果: 标签 hover 进入/离开已接入 AppKit;hover 高亮只刷新可见运行态,不触发 App Grid reload;重复 hover 滚动已去抖。
  - 验证: 构建、签名、本地化 JSON、hover 静态 QA、colorless grid 屏幕 hover/点击复核、窗口 8 逻辑 QA 全部通过;用户已确认第 3 项 OK。
- [2026-05-28] 第二批 AppKit 化第 2 项:标签栏 AppKit 化第一阶段,只读导航。
  - 提交: `b4a1ba5`
  - 结果: 默认启用 AppKit 标签导航,顶部/左侧/右侧标签栏显示和点击滚动接入完成;`useAppKitTagNavigation=false` 可回滚到旧 SwiftUI 标签栏。
  - 验证: 构建、签名、本地化 JSON、三种位置屏幕点击复核、SwiftUI 回滚开关、窗口 8 逻辑 QA 全部通过;用户已确认第 2 项 OK。
- [2026-05-28] 第二批 AppKit 化第 1 项:清理 `ContentView` 的 App Grid 交互职责。
  - 提交: `561541e`
  - 结果: `ContentView` 中 App Grid 的 bubble、drag、drop、refresh toast 临时状态已收口到 `AppGridInteractionState`。
  - 验证: `bash build.sh`、`codesign --verify --deep --strict`、localization JSON 解析、App Grid targeted QA、`Scripts/window_logic_qa.sh` 全部通过;用户已确认第 1 项 OK。
- [2026-05-28] 冻结发布版本并从冻结 tag 拉出新需求分支。
  - 冻结 tag: `appstore-7.6.0-20260527.0124`
  - 新需求分支: `codex/post-freeze-new-requirement`