Changelog
- mo clean: Hardened orphan app-data cleanup. Generic orphan cleanup now uses a 30-day inactivity window, and Claude VM bundle cleanup uses a dedicated 7-day window to reduce false positives while keeping cache cleanup responsive.
- mo clean: Fixed Xcode DeviceSupport cleanup when version arrays are empty, preventing nounset exits in sparse or partially cleaned environments.
- mo clean: Improved Application Support and project cache scanning on large directory trees, reducing stalls and keeping scans scoped to safer roots.
- core: Added a stronger Perl timeout fallback for environments without
timeoutorgtimeout, improving cleanup reliability when external commands hang. - mo purge: Fixed empty menu option and artifact selection edge cases that could previously trigger unbound variable exits under
set -u. - mo uninstall / mo optimize: Hardened LaunchServices refresh fallback. Missing
lsregisterno longer aborts the flow underset -e. - mo uninstall / mo update: Stabilized Homebrew uninstall and update paths, reduced unnecessary sudo behavior, and improved update detection for installed users.
- main menu: The update shortcut is now shown only when an actual update notice is available, avoiding stale or misleading menu actions.
- mo analyze / mo status: Fixed top-level file counting in JSON output and applied reliability-focused cleanup to status and network-related code paths.
- docs / tests: Refreshed the security audit reference and expanded regression coverage for orphan cleanup, timeout fallback, brew uninstall flows, update gating, and missing
lsregisterfallback.
更新日志
- mo clean:强化 orphan 应用数据清理策略。通用 orphan 清理现在使用 30 天静置窗口,Claude VM bundle 使用单独的 7 天窗口,在降低误删风险的同时保持缓存回收效率。
- mo clean:修复 Xcode DeviceSupport 在版本数组为空时的清理异常,避免稀疏或部分清理环境下触发
nounset退出。 - mo clean:优化大目录场景下的 Application Support 与项目缓存扫描逻辑,降低卡顿风险,并将扫描范围收敛到更安全的根路径。
- core:为缺少
timeout或gtimeout的环境补充更稳健的 Perl 超时兜底,提升外部命令卡住时的清理可靠性。 - mo purge:修复空菜单选项和空 artifact 选择导致的边界问题,避免在
set -u下出现未绑定变量退出。 - mo uninstall / mo optimize:强化 LaunchServices 刷新兜底逻辑。即使系统缺少
lsregister,流程也不会在set -e下提前中断。 - mo uninstall / mo update:稳定 Homebrew 卸载与更新路径,减少不必要的 sudo 行为,并改进已安装用户的更新检测逻辑。
- main menu:只有在确实存在更新提示时才展示更新快捷入口,避免出现过期或误导性的菜单操作。
- mo analyze / mo status:修复 JSON 输出中的顶层文件计数问题,并对状态展示与网络相关代码路径做了稳定性整理。
- docs / tests:更新安全审查参考文档,并补充 orphan 清理、超时兜底、brew 卸载、更新入口、
lsregister缺失兜底等回归测试。