edit | blame | history | raw

2026-06-29 QuickSearch 点击修复

用户目标

  • 修复 QuickSearch 下拉候选框中应用无法用鼠标点击打开的严重功能问题。
  • 保持回车启动路径可用。
  • 本轮不继续做视觉自动判断,视觉由用户人工验收。

已完成事项

  • src/Apptag/QuickSearch.swiftQuickSearchPanel 增加 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() 统一启动路径。