Ariver
2026-06-04 1d19c0593ebe6abe60468e12e87459ab68586603
CHANGELOG.md
@@ -1,10 +1,151 @@
# Apptag Changelog
# TagLauncher Changelog
## [7.8.13] — 2026-06-04
- 修复 App 运行期间新安装应用后,App Grid 和 Quick Search 仍复用旧应用索引、无法立即检索到新应用的问题
- App Grid / Quick Search 打开时会轻量检查标准应用目录签名;签名未变化时不刷新也不重建界面,只有目录变化时才后台重扫
- 刷新过程中再次打开 App Grid 或 Quick Search 会合并一个后续刷新请求,避免新安装发生在刷新窗口内被漏掉
- 窗口 QA 对 Dock 点击打开、App Grid 内打开 Quick Search 和 Quick Search 结果坐标读取增加短重试,避免系统事件或窗口列表瞬时抖动导致误判
- 版本号更新为 `7.8.13`,Build 更新为 `20260604.1121`
## [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` 布局事务
- 修复 AppKit-backed 网格容器对齐:用自定义 `NSCollectionViewLayout` 复刻原来的行/span 规则,同一行卡片顶边一致,并按该行最高图标行数统一容器高度
- 针对假死报告中的 SwiftUI `AttributeGraph` / Lazy layout 栈,新增主网格热键开关与打开后等待采样验证,20 次 overlay 开关后 CPU 回到空闲水平且采样未再出现 `LazyLayoutViewCache`、`LazyStack`、`ForEachState`
- 统一运行时品牌标识:本地数据目录改为 `~/Library/Application Support/TagLauncher`,Bundle ID、LaunchAgent、状态栏 autosave 名和 Smart Start 内置目录中的 TagLauncher 自身条目同步改为 TagLauncher 命名空间,并移除不再需要的旧路径沙盒临时例外
- 优化 Smart Start 包体:App bundle 只打包 base/manifest 与按语言独立压缩的 notes 资源,构建时拒绝旧单体 JSON、CSV、translation cache、invalid cache 和未压缩 notes 混入包内
- 扩展 Smart Start 运行时分类体系,支持新版终极目录中的 GTD、笔记、会议、Office、PDF、API、数据库、DevOps、IDE、终端、窗口管理等更细分类
- Smart Start 运行时资源改为 base catalog + 29 个按语言拆分的 notes 文件,正常路径只加载当前语言和必要 fallback,不再长期持有 29 种语言 notes
- Smart Start 资源生成器新增 Swift runtime 分类兼容门禁、稳定 `entryID`、manifest 和 split resource 输出,避免未知分类被静默丢弃
- Smart Start 默认用途备注新增来源 metadata,系统默认备注可随语言切换更新,用户手写备注不会被语言切换覆盖
- 打包脚本改为只复制 split Smart Start 资源到 App bundle,不再把旧单体 runtime JSON/CSV 作为首发运行时资源
- 移除 Smart Start 终极默认目录中错误的 `thunder` 条目,避免将 Thunder 错分为 VPN/安全网络工具并写入错误用途备注
- 优化主界面滚动性能:网格容器改为懒加载,并在滚动期间临时冻结 App hover 放大、用途气泡和容器 hover 高亮
- 将主界面的分组结果与网格容器行布局改为缓存状态,避免鼠标 hover、搜索输入等轻量状态变化反复触发分组和布局计算
- 优化 Quick Search:打开浮层时复用已加载 App 数据,不再每次打开都触发全量刷新;搜索字段在索引阶段预计算,输入时避免重复规格化、首字母和拼音候选生成
- Quick Search 增加 App 本地化显示名索引:读取所有语言 `InfoPlist.strings` 显示名,并用 Spotlight display name 兜底,让 AweSun 这类英文文件名 App 可通过“贝锐向日葵/向日葵”搜索命中
- 对含非拉丁文字的 App 显示名启用拉丁化/转写候选,支持 `xiangrikui`、`beirui`、`xrk` 等连续片段和非连续缩写命中;该规则仅限 App 显示名,不扩散到 Bundle ID 或纯拉丁 App 名
- 减少 App 图标重绘:只有图标对象或尺寸变化时才触发 `NSView` 重绘
- 将当前满意版标记为 `7.6.0`,作为后续性能优化前的稳定归档基线
- 保留 7.5.1 的 Quick Search、快捷键状态、Smart Start 目录和文档沉淀成果,不引入新的功能变更
- 版本号更新为 `7.6.0`,Build 更新为 `20260520.1250`
- 版本号更新为 `7.6.0`,基线 Build 为 `20260520.1250`;本次本地化显示名搜索验证 Build 为 `20260520.1452`
## [7.5.1] — 2026-05-19
@@ -388,7 +529,7 @@
## [3.1.35] — 2026-05-10
- 修复 overlay 显示时打开设置窗口不可见的问题:设置窗口会强制浮动在 Apptag 列表之上,确保用户能实时预览设置效果
- 修复 overlay 显示时打开设置窗口不可见的问题:设置窗口会强制浮动在 TagLauncher 列表之上,确保用户能实时预览设置效果
## [3.1.34] — 2026-05-10
@@ -416,7 +557,7 @@
## [3.1.28] — 2026-05-10
- 修复全屏 Space 下 Shift+Option+Space 唤出 Apptag 后 overlay 被全屏应用遮挡的问题:显示时刷新当前屏幕 frame,提升窗口层级并强制前置
- 修复全屏 Space 下 Shift+Option+Space 唤出 TagLauncher 后 overlay 被全屏应用遮挡的问题:显示时刷新当前屏幕 frame,提升窗口层级并强制前置
## [3.1.27] — 2026-05-07
@@ -473,7 +614,7 @@
## [3.1.13] — 2026-05-06
- 新增全局快捷键设置(Data 页签):点击按钮后按下新快捷键即可更改,支持任意组合键
- 菜单栏「Show Apptag」右侧显示当前快捷键
- 菜单栏「Show TagLauncher」右侧显示当前快捷键
- HotkeyHelper:Carbon keycode → 人类可读字符串(⇧⌥Space, ⌘A, F1 等)
## [3.1.12] — 2026-05-06
@@ -484,7 +625,7 @@
## [3.1.11] — 2026-05-06
- General 标签页:改用 Grid 布局替代固定 frame,标签列按内容宽度自动右对齐
- 点击 Dock 图标现在等同于菜单栏 "Show Apptag",直接全屏显示 APP 列表
- 点击 Dock 图标现在等同于菜单栏 "Show TagLauncher",直接全屏显示 APP 列表
## [3.1.10] — 2026-05-06
@@ -598,7 +739,7 @@
## [2.0] — 2026-05-06
- **架构级变更**:标签完全脱离 Finder,独立存储在本地 JSON 数据库 `~/Library/Application Support/Apptag/tags.json`
- **架构级变更**:标签完全脱离 Finder,独立存储在本地 JSON 数据库 `~/Library/Application Support/TagLauncher/tags.json`
- 首次启动一次性导入 Finder 存量标签(含"Mac自带"),之后不再触碰 Finder xattr
- 所有 CRUD(assign/rename/delete/setColor)写入本地 DB
- Preferences → Data 标签页:Export / Import JSON 备份恢复