Ariver
2026-05-29 65b66f723294dd02174d30a67a05b88139f274ee
TODO.md
@@ -13,21 +13,6 @@
## Todo
- [2026-05-28] Quick Search 结果列表 AppKit 化。
  - 目标: 先只替换结果列表,不动独立面板。
  - 保持: 输入框、搜索逻辑、快捷键行为不变。
  - 验收: 默认选中、上下键、Return、滚动、鼠标 hover、无结果状态。
- [2026-05-28] Quick Search 独立面板化。
  - 目标: 从主 overlay 里拆出来,做 Spotlight 风格独立 `NSPanel`。
  - 风险: 高,涉及焦点、Esc、外部点击、全局快捷键、窗口层级。
  - 验收: 普通桌面、全屏、Split View、Settings 同时存在时都不跳 Space。
- [2026-05-28] OverlayWindowController 收口。
  - 目标: 把 `AppDelegate` 里的 overlay 显示、隐藏、层级、屏幕选择拆出去。
  - 时机: Quick Search 窗口边界稳定后再做。
  - 验收: 全屏、Split View、Settings、Force Quit、文件面板、Dock 图标重复问题。
- [2026-05-28] AppLibraryController / 数据刷新管线整理。
  - 目标: 把扫描、reconcile、Smart Start、annotate、Quick Search documents 更新从 `ContentView` 中抽离。
  - 验收: 启动扫描、拖拽改标签、Quick Search 索引同步、新安装 App 后刷新。
@@ -38,6 +23,30 @@
## Done
- [2026-05-29] OverlayWindowController 收口。
  - 提交: 本次提交
  - 结果: 新增 `OverlayWindowController`,将 overlay window 实例、generation、Space 避让、show/focus/hide 编排、panel 创建、屏幕选择、全屏/Split View 判定从 `AppDelegate` 中收口出去。
  - 范围: AppDelegate 保留菜单、热键、Settings、Quick Search 和 app chrome 协调入口;窗口策略保持原行为。
  - 验证: `bash build.sh`、`codesign --verify --deep --strict`、`Scripts/window_logic_qa.sh` 全部通过,覆盖全屏、Split View、Settings、Force Quit、文件面板、Dock 图标重复和屏幕跟随。
- [2026-05-29] Quick Search 独立面板化。
  - 提交: 本次提交
  - 结果: Quick Search 面板已从主 overlay SwiftUI 层拆出,改为独立 `NSPanel` 并作为 overlay child window 显示;搜索状态、输入框、结果列表、启动逻辑保持原路径。
  - 补强: Quick Search panel 与 overlay 保持同层级,避免压过菜单栏;打开 Settings 前统一关闭 Quick Search;本应用内外部点击可关闭 Quick Search 但保留 App Grid。
  - 验证: `bash build.sh`、`codesign --verify --deep --strict`、`Scripts/window_logic_qa.sh` 全部通过;屏幕 QA 验证打开、输入 `sor`、上下键选中和 Esc 关闭均正常。
- [2026-05-29] Quick Search 结果列表 AppKit 化。
  - 提交: 本次提交
  - 结果: Quick Search 结果列表已替换为 AppKit `NSScrollView` + 自绘 row;输入框、搜索逻辑、快捷键命令、外层 overlay 保持原路径。
  - 范围: 只改结果列表渲染层,不动独立面板、窗口层级、搜索匹配和启动逻辑。
  - 验证: `bash build.sh`、`codesign --verify --deep --strict`、静态确认旧 SwiftUI `QuickSearchResultRow` 已移除;屏幕 QA 验证默认选中、上下键、滚动跟随、`sor` 搜到 Shottr、无结果状态、Return 启动选中结果并关闭 Quick Search。
- [2026-05-29] 修复 App 图标白边并清除旧图标残留。
  - 提交: 本次提交
  - 结果: 当前 grid/rainbow AppIcon 的圆角外区域已改为透明;`generate_icon.py` 删除旧“两张标签”生成逻辑,并增加 grid/rainbow 图标族校验,防止旧图标被重新生成。
  - 范围: 更新 `.icns`、`AppIcon.appiconset`、Release 1024 图标、Local QA DMG;`build.sh` 改为优先从 `AppIcon.appiconset` 生成 bundle `AppIcon.icns`。
  - 验证: `python3 generate_icon.py`、`bash build.sh`、`codesign --verify --deep --strict`、DMG 挂载检查、全项目图片/DMG 旧图标近似匹配扫描均通过;根 `.icns`、appiconset、Release 1024 图标、bundle/DMG 内 AppIcon 四角 alpha 均为 0。
- [2026-05-29] 清理或改名 `AppGridItem.swift` 残留。
  - 提交: 本次提交
  - 结果: `AppGridItem.swift` 已改名为 `AppGridSupport.swift`,文件标题改为 App Grid shared support,避免误解为旧 SwiftUI 浏览态 grid。