# 2026-06-29 QuickSearch 点击修复 ## 用户目标 - 修复 QuickSearch 下拉候选框中应用无法用鼠标点击打开的严重功能问题。 - 保持回车启动路径可用。 - 本轮不继续做视觉自动判断,视觉由用户人工验收。 ## 已完成事项 - 在 `src/Apptag/QuickSearch.swift` 为 `QuickSearchPanel` 增加 panel-level 左键点击兜底: - `sendEvent(_:)` 对 `.leftMouseDown` 命中候选行时解析 `QuickSearchResultRowView`。 - 命中后调用同一 `launchFromMouseClick()` 启动路径,避免 SwiftUI / NSHostingView / NSScrollView 层级吞掉行点击。 - 保留并调整 `QuickSearchResultRowView.mouseDown(with:)`: - 行自身点击仍走启动路径。 - 未能处理时才交回 `super.mouseDown(with:)`。 - 扩展 `src/Scripts/quick_search_launch_contract_qa.sh`: - 覆盖 `QuickSearchPanel.sendEvent`、左键点击、`quickSearchResultRow(at:)` 和 `launchFromMouseClick()`。 - 更新版本与发布说明: - `src/Apptag/Info.plist`:版本更新为 `8.2.5` / build `20260629.1917`。 - `src/CHANGELOG.md`:新增 QuickSearch 点击启动修复记录。 - 更新 `CODEGRAPH.md`: - 记录 QuickSearch panel-level 点击兜底为受保护行为。 ## QA 与交付证据 - `bash Scripts/quick_search_launch_contract_qa.sh`:PASS。 - `bash Scripts/pro_custom_hotkeys_qa.sh`:PASS。 - `APP_BUILD=20260629.1917 bash build.sh`:PASS。 - `codesign --verify --deep --strict --verbose=2 build/TagLauncher.app`:PASS。 - `hdiutil verify build/TagLauncher.dmg`:PASS。 - `git diff --check -- CODEGRAPH.md src/Apptag/QuickSearch.swift src/Scripts/quick_search_launch_contract_qa.sh src/Apptag/Info.plist src/CHANGELOG.md`:PASS。 - 真实点击验证: - 点击前截图:`/Users/ar/Projects/Taglauncher/src/build/quicksearch-click-before-2.png`。 - 点击后截图:`/Users/ar/Projects/Taglauncher/src/build/quicksearch-click-after-2.png`。 - 实际点击落在 Tolaria 候选行并将 Tolaria 拉起,证明 QuickSearch 候选行鼠标点击启动路径生效。 - DMG: - `/Users/ar/Projects/Taglauncher/src/build/TagLauncher.dmg` - SHA256:`0f4955871c19670afcc3520a81dec7ecc7207ec8df3a607858624e7ddb2b9004` ## 关键决策 - 不只依赖 SwiftUI 行内 `mouseDown`,增加 AppKit panel 层兜底;这是本问题的最小功能修复,避免重新设计 QuickSearch UI。 - 视觉验证按用户要求停止,本轮只记录功能验证证据。 ## 未决问题 - 本轮真实点击验证坐标落在 Tolaria,而非原计划的 QuickTime Player;因此不把 QuickTime 的进程检查作为证据。 - 本轮没有做新的视觉 QA。 ## 后续建议 - 后续若继续改 QuickSearch UI,必须保留 `QuickSearchPanel.sendEvent` 兜底与 `QuickSearchResultRowView.launchFromMouseClick()` 统一启动路径。