From 1797e722aa5453f646187ab61483f70f7e19fd1f Mon Sep 17 00:00:00 2001 From: Ariver <shanghai3168@gmail.com> Date: Fri, 29 May 2026 04:58:31 +0800 Subject: [PATCH] Extract quick search panel --- TODO.md | 93 ++++++++++++++++++++++++++++------------------ 1 files changed, 56 insertions(+), 37 deletions(-) diff --git a/TODO.md b/TODO.md index 616bd5c..1eeeed5 100644 --- a/TODO.md +++ b/TODO.md @@ -11,44 +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,名称容易误导。 - - 验收: 构建通过,App Grid smoke test 通过。 - -- [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 显示、隐藏、层级、屏幕选择拆出去。 @@ -65,6 +28,62 @@ ## Done +- [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。 + - 范围: 只做文件命名/注释清理,未改 App Grid 运行逻辑。 + - 验证: 构建 `7.6.0 (20260529.0102)`、签名、静态 QA、App Grid 屏幕 smoke test 通过。 + +- [2026-05-28] 第二批 AppKit 化第 4.2 项:标签拖拽态轻微放大和更强阴影。 + - 提交: 本次提交 + - 结果: 长按标签进入可移动状态后,拖拽中的标签用 `1.04x` layer transform 做视觉放大,并进一步增强阴影和层级。 + - 范围: 只改 AppKit 标签按钮拖拽态 CALayer 外观;未改变真实 frame、排序命中、持久化、窗口层级。 + - 验证: 构建 `7.6.0 (20260528.2343)`、签名、静态 QA、顶部/左/右三种标签栏拖拽排序、视觉屏幕复核、窗口 8 逻辑 QA 全部通过;QA 后已恢复用户标签顺序和语言自动设置;用户已确认测试通过。 + +- [2026-05-28] 第二批 AppKit 化第 4.1 项:标签拖拽态浮起阴影。 + - 提交: 本次提交 + - 结果: 长按标签进入可移动状态后,正在拖拽的标签使用更强阴影和更高层级,视觉上更明确地浮在其他标签上方。 + - 范围: 只改 AppKit 标签按钮拖拽态视觉;未改排序命中、持久化、窗口层级。 + - 验证: 构建 `7.6.0 (20260528.2312)`、签名、静态 QA、顶部/左/右三种标签栏拖拽排序、视觉屏幕复核、窗口 8 逻辑 QA 全部通过;QA 后已恢复用户标签顺序和语言自动设置。 + +- [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` -- Gitblit v1.9.3