Repository navigation
修复卸载扫描回归并参考 Mole 增强清理;支持合并菜单栏排序 - #8
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ee0b5e4add
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| } else if (try? entry.resourceValues(forKeys: [.isDirectoryKey]).isDirectory) == true { | ||
| let nested = (try? manager.contentsOfDirectory(at: entry, includingPropertiesForKeys: nil, options: .skipsHiddenFiles)) ?? [] | ||
| apps += nested.filter { $0.pathExtension == "app" }.compactMap(app(at:)) | ||
| apps += entries(entry).filter { $0.pathExtension == "app" }.compactMap(app(at:)) |
There was a problem hiding this comment.
Search all allowed subdirectories for installed copies
When another copy is nested more than one directory below /Applications or ~/Applications, this enumeration never discovers it because it only calls entries once for each top-level folder. validate(_:) permits an app at any depth under those roots, including apps selected by drag-and-drop, so a valid copy such as /Applications/Vendor/Apps/Foo.app can remain installed while uninstalling /Applications/Foo.app; the scan then treats its shared bundle-identifier data as exclusive and selects it for deletion. Recursively enumerate app bundles within the same allowed roots, with appropriate traversal bounds, before concluding that no other copy exists.
Useful? React with 👍 / 👎.
0.6.3 的卸载路径检查将 APFS 的大小写规范化当成重定向,实际目录为
library时,OpenCode 的资源库残留会从完整清单变成仅应用本体。改为逐级读取当前目录项,恢复大小写兼容,同时拒绝扫描及回收期间的真实符号链接;扫描未完成时显示受阻目录提示。参考 Mole 的公开目录规则,以 Swift 独立补充 LoginItems 真实身份、完整产品名变体、崩溃报告、WebKit/NSURLSession 子缓存和当前用户临时缓存。OpenCode 配置与缓存列为默认保留的复核项。同 ID 的安装副本或无法确认的安装目录会阻止共用数据回收;保留扫描时的组件身份证据,支持本体移走后的残留重试。
合并菜单栏新增上移、下移排序控件,顺序立即生效、持久化和同步,关闭项目后再开启仍保持位置。
验证:
Refs #4
Closes #7