What's new
Detection
- Detection is now driven by a catalog of confidence-scored signatures per stack. A stack is reported on one strong match or two weak ones; weaker hits show up as possible stacks instead of being dropped.
- New strong evidence:
app.asar,flutter_assets, py2app/PyInstaller files, and bundled Java runtimes. ChatGPT is now detected as Electron. - Detects iOS apps running on macOS (UIKit), and fixes apps without
CFBundleExecutablesuch as Muse and Meta AI. - Fewer false positives: Chromium install names no longer count as Electron, and Tauri, Python, Qt, Java, Node, and Flutter checks are tighter.
Main window
- Each stack is a tag; click one to see the exact evidence that matched. Possible stacks are drawn dashed.
- Scan several folders at once, managed from a toolbar menu. Onboarding offers
/Applicationsand~/Applicationsin one click. - File → Export Results… writes the visible apps as CSV or JSON.
- Native sidebar selection, search, and count badges; progress and counts live in the title bar. Every stack now appears in the sidebar.
Performance
- Detection results, category, icon, and size are cached together in
~/Library/Cachesand reused until the app changes or the detection rules change. Warm launches of/Applicationsdrop from about 3s to 0.7s.
Command-line tool
appdetective --explain <app>prints which rules matched. JSON output now includespossibleStacksandevidence.
Under the hood
- The app no longer uses security-scoped bookmarks or an entitlements file; saved folder bookmarks migrate to plain paths.
- Built in Swift 6 language mode with Observation; CI runs on Xcode 27.
- Release archives are packaged without AppleDouble metadata and verified (codesign, stapler, Gatekeeper) before upload.