Skip to content

MacEverything v1.5.30

Latest

Choose a tag to compare

@ying-zhang ying-zhang released this 14 Jun 10:25
· 2 commits to main since this release

MacEverything v1.5.30 — 自 fork / 开源基线以来的功能整合版本,重点包括中文检索、内容检索、搜索窗口交互、索引可靠性、性能优化、发布包依赖嵌入,以及 Apple Silicon / Intel 双架构 DMG 发布。

本版本与上游 joshua-wu/MacEverythingb153ccc(release 1.4)做了部分合并。

概要功能列表

  • 文件名、路径、扩展名、正则、拼音首字母、中文/中日韩文本相关检索能力增强。
  • 支持内容检索索引范围配置,可查看索引文件信息与内存占用。
  • 支持多搜索窗口、标签页、托盘菜单显示/隐藏、全局快捷键、Dock 显示隐藏设置。
  • 增加快速过滤、搜索加速器配置、结果列宽调整、结果列表键盘导航与右键菜单操作。
  • 支持结果内联重命名、删除后刷新、打开/定位/复制等常用文件操作。
  • 发布包自动嵌入 RE2 及其实际运行依赖,并分别提供 arm64 与 x86_64 DMG。
  • 增加 GitHub Pages 项目页面与中英文 README/界面本地化。
  • USB 热插拔索引维护 — 插入/拔出外部存储设备时自动更新索引,无需重启应用。

主要功能更新

  • 新增中文界面本地化,并补充中文搜索提示、帮助文案和发布说明本地化。
  • 增强文件名和路径搜索,改进路径 term 的 trigram 预过滤、回退限制和排序正确性。
  • 增强中文搜索支持,包括中文首字母提示、拼音首字母匹配高亮、中日韩 bigram 相关优化。
  • 增加内容搜索索引范围设置,并优化内容设置界面、索引状态展示和索引文件信息显示。
  • 增加可配置应用设置,包括索引范围、系统路径索引、搜索设置、快捷键/加速器、快速过滤重置策略等。
  • 增加多搜索窗口支持,并改进搜索窗口标签页、窗口标题、占位提示和结果列布局。
  • 调整搜索窗口快捷键:Cmd+N 新建当前活动搜索窗口的标签页,Cmd+Shift+N 新建独立搜索窗口。
  • 托盘菜单和主菜单现在明确显示新建标签页、新建窗口等快捷键。
  • 增加低内存索引模式,展示索引内存使用情况,并优化启动索引加载。
  • 增强结果交互:内联重命名、右键菜单、键盘快捷键、结果列表焦点切换、选中后聚焦结果列表等。
  • 搜索核心替换为 Google RE2,支持线性时间正则匹配,并嵌入 RE2 dylib,避免用户机器缺少 Homebrew 依赖导致启动失败。
  • 发布流程改为分别构建 Apple Silicon 与 Intel DMG,并验证主程序、MCP 可执行文件、嵌入 dylib 架构和依赖路径。
  • 多词查询结果排序优化 — 采用多维组合评分(miss count / match quality / 路径长度),多词搜索结果排列更精准。
  • USB 热插拔自动索引 — 插入 USB 后 0.5 秒内自动扫描新文件并加入索引;拔出前预清理索引避免崩溃,拔出后二次兜底清理。

性能与可靠性改进

  • 优化 v6 启动性能,减少索引加载耗时。
  • 增加扩展名索引,使 ext: 过滤查询接近 O(1)。
  • 将 glob 匹配预编译,减少查询期间分配和重复解析。
  • 用 RE2 FilteredRE2 提取正则字面量,并用 UNION 方式做 trigram 预过滤,提高正则查询稳定性和性能。
  • 为 RE2 查询使用 per-thread clone,减少 DFA mutex contention。
  • 用 per-session cancellation 替代全局 query generation,修复快速输入/查询切换时可能出现的延迟。
  • 优化 C++ 搜索核心,包括 SIMD、内存访问、多词查询和中日韩 bigram 处理。
  • 减少其他搜索应用或窗口恢复引发的刷新抖动。
  • 改进 Phase 2 索引完成重试、内存/分块启发式与索引可靠性。
  • ServiceEngine config_ 线程安全 — 使用 shared_mutex + safeConfig() 快照模式,彻底消除 FSEvents 回调与主线程之间的数据竞争。
  • FSEvents 监控自动重启 — 配置变更(如 scan roots 增减)后自动重启 FSEvents watcher,确保新加入的卷路径被监控。
  • StringPool 越界保护 — 对损坏或过期索引的 OOB 访问返回空字符串,防止崩溃。

重要缺陷修复

  • 修复 USB 热插拔导致所有搜索结果消失的严重 bug — 根因:Objective-C++ dispatch block 捕获 const std::string& 引用参数,调用方传入的临时对象在 block 异步执行前已被销毁,导致空前缀传入 batchRescanPrefix,误删整个索引。修复方式:在 block 前复制到局部变量。
  • 修复 USB 拔出时应用崩溃 — 添加 willUnmountNotification 在卷卸载前预清理索引;isVolumeUnmounting 标志阻止内容索引 I/O 访问正在卸载的卷。
  • 修复中文输入法(IME)组合输入时 Tab/Enter 被误消费 — 在 hasMarkedText() 期间跳过 Tab 自动补全和 Enter 提交,避免干扰中文候选词选择。
  • 修复关闭搜索窗口后,从托盘或 Option+Space 重新打开时,输入框仍显示旧关键词但结果为空、继续输入不刷新或响应很慢的问题。
  • 修复 NSTextView 被作为 AppKit field editor 使用后,在隐藏/关闭/恢复窗口时焦点和输入状态不可靠的问题。
  • 统一托盘菜单和全局快捷键的窗口恢复逻辑,确保应用取消隐藏、窗口置前并重新聚焦搜索框。
  • 防止窗口恢复后的延迟刷新覆盖用户刚输入的新查询。
  • 修复清空搜索词后仍显示陈旧结果的问题。
  • 修复结果列表键盘焦点处理问题。
  • 修复删除文件后结果列表不刷新、重命名刷新与校验问题。
  • 修复短查询可能导致崩溃的问题。
  • 修复 lowercased 字符串索引映射回原始文本时可能崩溃的问题。
  • 修复 WAL 损坏可能导致数据丢失的问题。
  • 修复 FSWatcher 排除路径误判问题。
  • 修复 Dock 可见性菜单行为、设置页 Swift actor isolation、配置索引范围迁移与系统索引应用问题。
  • 修复 RE2 依赖嵌入脚本在重复构建时可能复制自身的问题,并只嵌入 libre2 实际依赖的 Abseil dylib 闭包。
  • 修复 Cmd+N 不总是在活动搜索窗口中新建标签页的问题。
  • 修复后续新建的独立搜索窗口不能继续添加标签页的问题。
  • 修复关闭额外标签页/搜索窗口与隐藏最后一个搜索窗口之间的状态处理混淆。
  • 修复「打开所在文件夹」菜单项操作异常的问题。

发布包与验证

  • 版本号:1.5.30
  • Tag:v1.5.30
  • Commit:7e5a90d8cb848c815adbc7f5fa3b908cd067853d
  • GitHub Actions:27495543261,arm64 与 x86_64 构建均通过。

下载

  • Apple Silicon:MacEverything-arm64.dmg
  • Intel:MacEverything-x86_64.dmg

SHA256

  • MacEverything-arm64.dmg:350cedf80226057549d0ee007c382d58f776aadc1a3b7f6accf13c30b816daed
  • MacEverything-x86_64.dmg:3cebba7edf42117272be58cc5c2b09fa25579a4b45cd1c985bd0fecefce9371d