Conversation
- Add adaptive color system with light/dark mode support using NSColor appearance callbacks - Add appearance picker (System/Light/Dark) in Settings - Redesign sidebar with selection indicator bars, tinted icon backgrounds, and Smart Scan card - Redesign SmartScanView with thicker progress rings, staggered live results, and junk breakdown bar - Redesign Settings with native grouped Form layout and section icons - Replace heavy gradients with solid colors and subtle borders throughout - Add custom app icon from logo.png with proper rounded-rect background - Add SidebarLogo image asset for branding - Reduce glow and shadow intensity for a cleaner look - Bump version to 1.1.0 (build 4) - Update localization strings for zh-Hans and zh-Hant Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add InstalledApp and AssociatedFile models for app metadata - Add scanInstalledApps() in ScanEngine to discover apps in /Applications - Find associated files across ~/Library (Preferences, Caches, Application Support, Containers, Saved State, Logs, WebKit, HTTPStorages, Group Containers) - Add AppUninstallerView with search, expandable associated files, reveal-in-Finder, and confirmation dialog - Add uninstallApp() in AppViewModel with progress tracking - Protected system apps (Safari, Finder, App Store, etc.) are excluded - Integrated into sidebar under Cleaning section Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
8869c63 to
fb9e5c3
Compare
|
Hey @zeck00, another great PR! The app uninstaller was definitely the most-requested feature. v2.0 shipped with an app uninstaller that uses a more advanced heuristic matching engine (AppPathFinder) with 10-level matching - bundle ID, company name extraction, entitlements, team identifier, Spotlight supplemental search, container discovery, etc. It also has 25 per-app condition rules for edge cases (Xcode, Chrome, VS Code, Firefox, etc.). Your system app protection idea was excellent though - we adopted your The hover-to-reveal uninstall UX from your PR is a nice touch too. If you'd like to contribute that interaction pattern to the v2 Thanks for all the work you've put into these PRs! |
Inspired by community PRs #29, #30, #32, #33: - Onboarding: 3-page welcome flow (Welcome, FDA setup, Ready) Shows only on first launch via @AppStorage Polls FDA status every second with live UI update - Search: .searchable() in CategoryDetailView for filtering files - Confirmation: .confirmationDialog before all destructive operations - Protection: 27 Apple system apps excluded from uninstaller (Safari, Finder, Mail, Calendar, Photos, etc.) Also skips /System paths entirely
|
Hey @zeck00! Closing this - v2.0 shipped with an app uninstaller that uses a 10-level heuristic matching engine (AppPathFinder) with bundle ID, company name, entitlements, team identifier, Spotlight search, and container discovery. We also adopted your protectedBundleIDs idea and expanded it to 27 Apple system apps. The v2.0 rewrite changed the entire codebase to native SwiftUI, so the v1 structure doesn't exist anymore - sorry about that! Your hover-to-reveal uninstall UX is a really nice interaction pattern though. If you'd like to bring that to the v2 AppFilesView, would love to see it. Please take a look at the new codebase when you get a chance - would really value your feedback! Thanks again for all the work. |

Summary
Adds an App Uninstaller feature that lets users remove apps along with all their stray data in one click. I always found it annoying that macOS leaves behind prefs, caches, and containers when you drag an app to trash — this fixes that.
/Applicationsand~/Applicationsfor installed apps~/Library(Preferences, Caches, Application Support, Containers, Saved State, Logs, WebKit, Group Containers, etc.)Test plan