From be83948fab7b643634ede2403abdca27e6b45f29 Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Thu, 04 Jun 2026 01:09:14 +0800
Subject: [PATCH] Fix quick search early mouse dismiss

---
 CHANGELOG.md |  116 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 116 insertions(+), 0 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index f1709ab..7b4f277 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,121 @@
 # TagLauncher Changelog
 
+## [7.8.12] — 2026-06-04
+
+- 修复 Quick Search-only 模式刚打开后可能被过期鼠标关闭事件立即关掉的问题;现在 `Fn + Space` 打开后候选面板会保持稳定,键盘取消和再次按 `Fn + Space` 仍可立即关闭
+- 窗口 QA 增加对合成 `Fn + Space` 投递的重试,并把 Quick Search 结果点击坐标修正到首条结果行中心,避免测试误点面板背景
+- 本次只收敛 Quick Search 打开/关闭时序和 QA 覆盖,不改搜索匹配、App Grid 布局、Settings、文件面板或窗口层级策略
+- 版本号更新为 `7.8.12`,Build 更新为 `20260604.0105`
+
+## [7.8.11] — 2026-06-03
+
+- 优化 Quick Search 结果行右侧标签显示:短标签完整显示,右侧标签列右对齐并减少不必要留白
+- 修复安装/卸载应用后 Quick Search 应用索引滞后的问题;应用目录变化后不再复用旧扫描缓存
+- Quick Search 搜索结果会过滤磁盘上已不存在的 `.app`,避免用户点到已卸载应用
+- 修复同一个 Bundle ID 但 App 名称不同的应用被错误去重的问题;例如 `PrivateVoice Input` 和 `PrivateVoice Dictation` 现在可以同时进入 App Grid 和 Quick Search
+- 版本号更新为 `7.8.11`,Build 更新为 `20260603.2149`
+
+## [7.8.10] — 2026-06-02
+
+- 修复 Quick Search 面板四个圆角处出现脏色块的问题;面板内容改为按圆角形状裁剪,避免透明窗口边缘和背景叠加产生视觉瑕疵
+- 优化 Quick Search 阴影表现:为独立面板预留阴影外扩空间,避免阴影被窗口边界裁切,并增强浮层感
+- 本次只调整 Quick Search 面板视觉层,不改搜索匹配、快捷键、App Grid 入口、Dock 图标或窗口路由逻辑
+- 版本号更新为 `7.8.10`,Build 更新为 `20260602.2302`
+
+## [7.8.9] — 2026-06-02
+
+- 新增 App Grid 拖拽到标签栏建立关联:在 5 种 App Grid 视图中,App 图标可拖到顶部、左侧或右侧标签名称上,放手后追加该标签关联
+- 拖到标签名称时复用标签排序的视觉反馈:目标标签浮起,其他标签变暗,帮助用户确认即将生效的标签
+- 标签栏 drop 只追加目标标签,不删除原有标签;已有关联时不重复写入
+- 复用现有 App 拖拽协调器并增加 drop-target hover 通知,避免新增平行拖拽系统
+- 版本号更新为 `7.8.9`,Build 更新为 `20260602.1929`
+
+## [7.8.8] — 2026-05-31
+
+- 修复全局 `Fn + Space` Quick Search-only 场景下,鼠标在候选区 hover 或点击结果后 App Grid / Overlay 可能残留或重新冒出的问题
+- Quick Search 结果点击改为在鼠标事件完成后的主队列启动,避免 AppKit `mouseDown` 与窗口关闭交叉导致背板露出
+- Overlay 关闭时不再复用已隐藏的旧 `NSPanel`,每次关闭都释放窗口实例,下一次显示重新绑定当前 Space,减少隐藏 Dock / 全屏 / Split View 场景下的幽灵窗口风险
+- 移除顶部 AppKit 标签栏下方多余的浅灰色滚动条,同时保留标签栏横向滚动能力
+- 加固 Dock 图标显式打开 App Grid 的判定:必须是最近真实鼠标点击且位于 Dock 区域,避免重复启动或程序化打开误触发 App Grid
+- 窗口 QA 增加隐藏 Dock 下 Quick Search hover、点击搜索结果不弹 App Grid 的专项回归,并继续覆盖全屏、Split View、Settings、文件面板、Dock 图标和滚动后键盘路由
+- 版本号更新为 `7.8.8`,Build 更新为 `20260531.1601`
+
+## [7.8.7] — 2026-05-31
+
+- 修复关闭“Show in Dock”后用主快捷键打开 App Grid 时 TagLauncher Dock 图标仍会闪现的问题;隐藏 Dock 图标设置现在严格生效
+- 恢复“Show in Dock”开启时点击 Dock 图标打开 App Grid 的交互,同时继续阻止程序化重复启动误唤出 App Grid
+- 加固 overlay 显示后的窗口 frame 复核,避免隐藏 Dock / 多屏 / 全屏场景下系统坐标变化导致 overlay 偏移
+- 窗口 QA 增加 Dock 点击、隐藏 Dock 主快捷键、重复启动不弹 App Grid 的组合回归
+- 版本号更新为 `7.8.7`,Build 更新为 `20260531.0252`
+
+## [7.8.6] — 2026-05-31
+
+- 修复未按主快捷键时 App Grid 可能被重复启动或外部激活路径误唤出的问题;App Grid 现在只由主快捷键或状态栏显式命令打开
+- 加固重复实例移交逻辑:默认不再显示 App Grid,非显示型重复实例先切到 accessory,避免产生多个 Dock 图标
+- 窗口 QA 增加“重复启动不显示 App Grid、不增加 Dock 图标”的回归用例
+- 版本号更新为 `7.8.6`,Build 更新为 `20260531.0146`
+
+## [7.8.5] — 2026-05-30
+
+- 优化设置页语言列表布局:语言页从两列改为三列,并使用下方空白区域,默认可显示更多语言选项
+- 版本号更新为 `7.8.5`,Build 更新为 `20260530.1744`
+
+## [7.8.4] — 2026-05-30
+
+- 修复全局 `Fn + Space` Quick Search 快捷键不能像 Spotlight 一样反复开关的问题;现在连续按会按 `出现 -> 消失 -> 出现 -> 消失` 循环
+- 复用键盘关闭路径,Quick Search-only 模式关闭时会同步隐藏 overlay,避免残留透明窗口
+- 版本号更新为 `7.8.4`,Build 更新为 `20260530.1727`
+
+## [7.8.3] — 2026-05-30
+
+- 修复设置窗口宽度不足导致系统 `Navigation Tab Bar` 折叠入口固定出现的问题,设置页签恢复直接可见
+- 修复隐藏 Dock 图标时 Quick Search 独立唤出会导致 Dock/菜单图标短暂闪现的问题,同时保持输入框自动获得焦点
+- 版本号更新为 `7.8.3`,Build 更新为 `20260530.1652`
+
+## [7.8.2] — 2026-05-30
+
+- 修复全局 `Fn + Space` 唤出 Quick Search 后输入框未立即获得焦点的问题,用户可以唤出后直接输入
+- 修复只想打开 Quick Search 时 App Grid 主界面偶发被带出的竞态问题
+- 补强连续快速按 `Fn + Space` 的 quick-only 会话隔离和防抖,避免 App Grid 被误渲染
+- 补强 Quick Search 独立面板成为 key window 时的 `Esc` 兜底处理,避免出现退不出的残留 overlay
+- 版本号更新为 `7.8.2`,Build 更新为 `20260530.1557`
+
+## [7.8.1] — 2026-05-29
+
+- 新用户首次安装时,App Grid 默认图标大小从 `80` 调整为 `64`,让初始界面更紧凑;已有用户已保存的图标大小设置不会被覆盖
+- 版本号更新为 `7.8.1`
+
+## [7.8.0] — 2026-05-29
+
+- Quick Search 结果列表改为 AppKit-backed 渲染,保留原搜索匹配和启动逻辑,同时提升键盘选择、滚动跟随和结果列表稳定性
+- Quick Search 从主 overlay SwiftUI 层拆出为独立 `NSPanel`,并保持与 AppGrid 同层级显示,避免全屏/Split View 场景下窗口层级或 Space 行为异常
+- 新增 `OverlayWindowController`,将 overlay 窗口实例、Space 避让、show/focus/hide、屏幕选择、全屏/Split View 判定从 AppDelegate 中收口
+- 新增 `AppLibraryController` 和 snapshot 数据刷新管线,集中处理 App 扫描、TagDatabase reconcile、Smart Start 应用、Quick Search 文档和标签颜色/顺序组装
+- 设置页 Smart Start 路径模块化,系统智能化初始分类的扫描、应用和 snapshot 组装改由 `AppLibraryController` 统一处理
+- 修复滚动 AppGrid 后 `Esc` 偶发无法关闭、`Space` 偶发无法唤出 Quick Search 的问题;overlay 键盘处理新增 AppKit `sendEvent` 兜底,AppGrid 滚轮进入时会重新声明 key/front
+- 优化 AppGrid 滚动期间的刷新频率:滚动 burst 期间不再反复跨 SwiftUI 写入 hover 状态,滚动停止后再恢复 hover replay 和 visible item runtime state
+- 窗口 QA 脚本补强滚动后 `Space` / `Esc` 连续循环验证,并继续覆盖全屏、Split View、Settings、文件面板、Force Quit、Dock 图标重复和屏幕跟随
+- 版本号更新为 `7.8.0`
+
+## [7.7.0] — 2026-05-28
+
+- 标签栏完成 AppKit 化,支持顶部、左侧、右侧三种位置下的 AppKit-backed 标签导航
+- 标签栏新增长按拖拽排序,排序命中、持久化和标签顺序刷新走 AppKit 路径
+- 优化标签拖拽态视觉:拖拽中的标签增加浮起阴影、轻微放大和更高层级,用户更容易判断当前拖拽对象
+- 拖出容器空隙时新增单标签移除确认:确认后只移除来源容器代表的那个标签;可选择“知道了,以后不用再提醒我”
+- 拖到“未分类”时新增独立“不再提醒”选项;该开关与拖到空隙移除单标签的开关分离,避免混淆批量移除和单标签移除
+- 修复 App 图标圆角外区域白边问题,当前 grid/rainbow AppIcon 的四角透明;清除旧“两张标签”图标生成逻辑,并让构建优先从 `AppIcon.appiconset` 生成 bundle 图标
+- 清理旧 SwiftUI 浏览态 grid 命名残留,将 `AppGridItem.swift` 改名为 `AppGridSupport.swift`
+- 版本号更新为 `7.7.0`
+
+## [7.6.0 App Store Freeze] — 2026-05-24
+
+- 冻结首轮 Mac App Store 准备资料,以本地 QA 通过 Build `20260524.1849` 为准
+- 修复 Split View / 全屏 Space 中从 AppGrid 唤出 Quick Search 或 Settings 时触发 Space 滑动的问题,二级窗口现在继承同一次 overlay 会话的避让策略
+- AppGrid、Quick Search、Settings、文件面板、强制退出窗口、多屏跟随、Dock/菜单栏状态已通过 `Scripts/window_logic_qa.sh` 全量窗口 QA
+- 当前冻结 DMG SHA-256:`dc5bc9cf90b9e04a9e4fda155b757e6e0af681ff1b79bf109552ae0c3ce2a193`
+- App Store 上传仍需 Apple Developer 账号中的 Mac App Distribution / Mac Installer Distribution 证书和 `com.taglauncher.app` 的 Mac App Store provisioning profile
+
 ## [7.6.0] — 2026-05-20
 
 - 重写默认 App 网格主路径:`coloredGridContainer` / `gridContainer` 改为 AppKit-backed 主网格,使用 `NSCollectionView` 管理分组卡片、滚动、图标 hover 和拖拽 drop,默认路径不再依赖 SwiftUI `LazyVStack` / `LazyVGrid` 布局事务

--
Gitblit v1.9.3