Skip to content

README: add Mole, surface recently-shipped features in comparison + safety model#26

Merged
iliyami merged 3 commits into
mainfrom
docs/readme-features-and-mole
Jun 2, 2026
Merged

README: add Mole, surface recently-shipped features in comparison + safety model#26
iliyami merged 3 commits into
mainfrom
docs/readme-features-and-mole

Conversation

@iliyami
Copy link
Copy Markdown
Owner

@iliyami iliyami commented Jun 1, 2026

Why

Comparison table predates 1.5.x. We've shipped real features since (Universal Binary thinning, in-app activity log viewer, kernel-enforced XPC, pre-scan cleanability filter, Maintenance Run All safety, chunked cleanup) and Mole — referenced in Acknowledgments — was never in the table.

Changes

Comparison table (How Mac Clean compares section)

  • Adds Mole column (tw93/Mole — 54.2k ⭐, MIT, CLI-first; the commercial GUI app is separate)
  • 3 new rows so the recently-shipped real features are visible:
    • Native GUI app — surfaces Mole's CLI-only status honestly
    • Universal Binary thinning — Mac Clean ✅, CleanMyMac ✅, everyone else ❌
    • In-app activity log viewer — unique to Mac Clean
  • Mole gets honest ✅ for Uninstaller with leftover detection (its strength) and ❌ for everything it doesn't do; ➖ for Disk treemap visualizer (it has an analyzer but not a treemap)

Features section

  • System Junk row: Universal Binary thinning gets a one-sentence mechanical callout (lipo + native-arch detection) instead of being buried in a comma list
  • Maintenance row: severity tagging + Run All confirmation + mid-flight cancellation

Safety Model section — replaces stale wording with what the code actually does now:

  • Firmlink canonicalization (/var/private/var and friends)
  • Pre-scan cleanability filter (drops items access(W_OK) denies — root-owned children + UF_DATAVAULT Apple caches)
  • Chunked cleanup (5k chunks, 50k confirmation prompt, Task.isCancelled responsiveness) — replaces the obsolete "10,000 file cap" line
  • Recursive byte accounting
  • In-app activity log + 30-day prune
  • Kernel-enforced XPC code-signing requirement (NSXPCListener.setCodeSigningRequirement)

Badges

  • Test count 275 → 388

Acknowledgments

  • Fix dead links: nicehash/Moletw93/Mole, nicehash/LemonTencent/lemon-cleaner (both prior links 404)

Not in this PR

  • No VERSION bump — README-only, no shipping artifact changes
  • Tone kept honest: CleanMyMac retains a ✅ on Universal Binary thinning (they ship it); not pretending Mac Clean wins every row

Test plan

  • Diff reviewed end-to-end
  • GitHub markdown renders the wider table cleanly (visual check after merge)

Comparison table:
  - Add Mole column (tw93/Mole — 54.2k stars, CLI-first MIT cleaner)
  - New rows for what the codebase actually does now and what
    differentiates Mac Clean from the rest:
      * Native GUI app                (CLI-only callout for Mole)
      * Universal Binary thinning     (lipo-based fat-binary slimming)
      * In-app activity log viewer    (post-clean sheet with copy-all)
  - Test count badge 275 → 388

Features section:
  - System Junk row calls out Universal Binary thinning with a one-
    sentence mechanic (lipo + native-arch detection)
  - Maintenance row mentions severity tagging, 'Run All' confirmation,
    mid-flight cancellation

Safety Model:
  - Adds firmlink canonicalization (var↔private/var etc.)
  - Adds pre-scan cleanability filter (drops items access(W_OK) denies
    so the UI never offers root-owned or UF_DATAVAULT items)
  - Replaces stale '10,000 file cap' line with the real story —
    chunked cleanup, 50k confirmation, recursive byte accounting
  - Adds in-app log viewer + 30-day prune callout
  - Adds kernel-enforced XPC code-signing requirement

Acknowledgments:
  - Fix dead links: Mole (nicehash/Mole → tw93/Mole) and
    Tencent Lemon Cleaner (nicehash/Lemon → Tencent/lemon-cleaner).
@iliyami iliyami self-assigned this Jun 1, 2026
iliyami added 2 commits June 1, 2026 19:32
Adds assets/menu_bar.png and rewrites the "Menu Bar Monitor" section
into "Menu Bar Widget" — the shipped glassmorphism widget: 2×2 stat
ring grid (CPU/Memory/Disk/Battery), network/uptime/swap, actionable
Recommendations, Protection status, Connected devices, and throttled
health alerts. Bumps the test badge 388 → 403 to match main.

Merged main into this branch first so it carries the merged menu-bar
and scan-correctness work. Verified the full local gate
(check-version-sync + swift build + swift test, 403 passing) before
pushing.
@iliyami iliyami merged commit 6f2200c into main Jun 2, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant