1
0
mirror of https://github.com/tw93/Mole.git synced 2026-02-04 14:26:46 +00:00
Commit Graph

1341 Commits

Author SHA1 Message Date
Tw93
eb717e558e test: source brew uninstall helpers 2026-01-15 21:11:34 +08:00
Tw93
377f777184 test: remove outdated empty files assertion from clean_empty_library_items test
The clean_empty_library_items function intentionally skips empty file cleanup
to avoid removing app sentinel files (as noted in lib/clean/user.sh:77).
Updated the test to only verify empty folder cleanup, matching current behavior.
2026-01-15 21:06:59 +08:00
Tw93
f3dfec32c9 Merge branch 'dev' of github.com:tw93/Mole into dev 2026-01-15 21:05:25 +08:00
Tw93
c2eb73b213 fix: correct pnpm store default path
- Change pnpm store path from incorrect ~/.pnpm-store to correct ~/Library/pnpm/store
- The default pnpm store location on macOS is ~/Library/pnpm/store
- Fixes #319
2026-01-15 21:04:54 +08:00
Tw93
c9b110b882 fix: 修正 pnpm store 默认路径
- 将 pnpm store 路径从错误的 ~/.pnpm-store 改为正确的 ~/Library/pnpm/store
- macOS 上 pnpm 的默认 store 位置是 ~/Library/pnpm/store
- Fixes #319
2026-01-15 21:03:54 +08:00
Tw93
2cecb881a9 docs: update SECURITY_AUDIT for receipt processing safety
- Document /private path exceptions for safe cleanup
- Add receipt file filtering details
- Auto-format shell scripts (shellcheck)
2026-01-15 21:02:13 +08:00
Tw93
7dc854cf30 fix(uninstall): enhance receipt file processing safety and prevent system file deletion
CRITICAL SECURITY FIX

Enhanced the receipt file parsing in uninstall operations to prevent
accidental deletion of critical system files while maintaining deep
cleanup capabilities.

Changes:
- Tightened whitelist in find_app_receipt_files() to exclude /Users/*,
  /usr/*, and /opt/* broad patterns
- Added explicit blacklist for /private/* with safe exceptions for
  logs, temp files, and diagnostic data
- Integrated should_protect_path() check for additional protection
- Added file deduplication with sort -u to prevent duplicate deletions
- Removed dry-run feature from batch uninstall (unused entry point)

Path Protection:
 Blocked: /etc/passwd, /var/db/*, /private/etc/*, all system binaries
 Allowed: /Applications/*, specific /Library/* subdirs, safe /private/* paths
 Additional: Keychain files, system preferences via should_protect_path()

This fixes a critical security issue where parsing .bom receipt files
could result in deletion of system files like /etc/passwd and /var/db/*,
leading to system corruption and data loss.

Affects: V1.12.14 and later versions
Testing: Validated against critical system paths, all blocked correctly
2026-01-15 21:01:11 +08:00
Tw93
30547c9c4c refactor(uninstall): enhance login item removal and brew UI
- Escape quotes/backslashes in app names for AppleScript safety
- Silence osascript stdout to prevent output noise
- Capture brew uninstall output to avoid spinner corruption
- Log brew errors to debug_log for troubleshooting
2026-01-15 15:13:51 +08:00
Tw93
9a9e6c780f Merge pull request #318 from NanmiCoder/main
fix: resolve password input issue with special characters
2026-01-15 14:34:25 +08:00
Tw93
7b14a3abd8 feat(uninstall): enhance brew UX and auto-cleanup dependencies
- Auto-run 'brew autoremove' after uninstalling casks
- Fix spinner interference during brew operations
- Add safety check for cask token detection
2026-01-15 14:31:36 +08:00
Tw93
dbf036fdaa refactor: simplify brew.sh with native macOS tools
- resolve_path: use realpath (macOS 12.3+) instead of python3/perl
- deduplicate tokens with sort -u instead of manual loop
- reuse _extract_cask_token_from_path in symlink check
- simplify brew_uninstall_cask boolean logic

Reduces 88 lines (281 → 193)
2026-01-15 14:05:42 +08:00
Tw93
b82dd42fb1 Merge pull request #314 from JackPhallen/fix/harden-brew-uninstall
fix(uninstall): Harden brew uninstall
2026-01-15 14:02:03 +08:00
Tw93
3b517c7a6b Merge branch 'dev' into fix/harden-brew-uninstall 2026-01-15 14:00:20 +08:00
程序员阿江(Relakkes)
f8cb96d328 fix: resolve password input issue with special characters
Remove -icanon mode from stty settings to fix password authentication
failures when passwords contain special characters like '.' or '@'.

The non-canonical mode (-icanon min 1 time 0) caused character loss
in Terminal.app. Using only -echo keeps canonical mode which provides
more reliable character handling across all terminal emulators.
2026-01-15 13:29:35 +08:00
Tw93
518b57024c chore: auto format code 2026-01-15 03:42:35 +00:00
Tw93
318c67ffbe perf: optimize search filter rendering in paginated menu
- Use partial redraw for search input updates instead of full screen refresh
- Reduces flickering when typing in the filter box
- Improve responsiveness of search interaction
2026-01-15 11:41:16 +08:00
Tw93
9e1d09cb93 fix: handle spaces in dock item removal
- URL-encode paths when matching against Dock persistent-apps
- Fixes issue where apps with spaces in names (e.g. 'Clash Party') were not removed from Dock
2026-01-15 11:40:49 +08:00
Tw93
c34d91b36f feat: enhance uninstall with launch items and login items cleanup
- Add automatic cleanup of LaunchAgents/Daemons (Issue #315)
- Support both system and user-level launch paths
- Add Login Items cleanup (fixing broken entries like CodexBar)
- Improve Homebrew uninstall logging visibility
- Update security audit and tests
2026-01-15 11:39:33 +08:00
Tw93
cac2909093 fix: prevent Microsoft Teams from being misdetected as Edge
Fixes #313

Change browser process detection from pgrep -f (full command line match)
to pgrep -x (exact process name match) to prevent false positives.

Microsoft Teams processes contain 'Microsoft' in their paths and may have
Chromium-based components, which was causing them to be incorrectly
identified as Microsoft Edge during clean operations.

Changes:
- Chrome detection: pgrep -f → pgrep -x
- Edge detection: pgrep -f → pgrep -x
- Edge updater detection: pgrep -f → pgrep -x

This approach is consistent with Firefox detection and prevents Apps like
Microsoft Teams, Microsoft Office, or other Microsoft products from
triggering false Edge detection.

All existing tests pass (9/9 in clean_browser_versions.bats).
2026-01-15 09:51:56 +08:00
Jack Phallen
9f441eea86 Fix unrelated test failures
Fixed WHITELIST_PATTERNS unbound variable error in lib/core/app_protection.sh
Updated clean_empty_library_items to match current behavior
2026-01-14 09:29:05 -05:00
Jack Phallen
d884a268e8 fix(uninstall): Harden brew uninstall 2026-01-14 09:17:41 -05:00
Tw93
5ec237b9dd publish 1.21 V1.21.0 2026-01-14 15:26:42 +08:00
Tw93
d0faaa33c6 chore: auto format code 2026-01-14 06:10:25 +00:00
Tw93
62cfafd7da Tighten dock removal and add brew uninstall fallback 2026-01-14 14:09:08 +08:00
Tw93
572c5c7b3b chore: auto format code 2026-01-14 05:01:12 +00:00
github-actions[bot]
5708559d53 chore: update contributors [skip ci] 2026-01-14 04:57:34 +00:00
Tw93
a800e9e48f Merge branch 'main' of github.com:tw93/Mole 2026-01-14 12:56:54 +08:00
Tw93
8a873c85a3 fix: remove unsafe file cleanup in Library root and fix tests
- lib/clean: remove empty file cleanup in ~/Library to protect potential sentinel files
- tests: fix unbound variable error in clean_user_core.bats by initializing WHITELIST_PATTERNS
2026-01-14 12:56:38 +08:00
Tw93
00a712711e chore: auto format code 2026-01-14 03:59:21 +00:00
Tw93
7089ce69d1 Merge branch 'dev' of github.com:tw93/Mole into dev 2026-01-14 11:57:46 +08:00
Tw93
facaf5b34c fix: precision issue in battery metrics and adaptive purge UI
- cmd/status: use ParseUint to handle negative battery power values correctly
- bin/purge: make path truncation adaptive to terminal width
2026-01-14 11:57:10 +08:00
Tw93
ef6336ab74 fix: precision issue in battery metrics and adaptive purge UI
- cmd/status: use ParseUint to handle negative battery power values correctly
- bin/purge: make path truncation adaptive to terminal width
2026-01-14 11:55:24 +08:00
Tw93
9c996e944e update agents 2026-01-14 11:34:42 +08:00
Tw93
9b3220bfe4 fix: handle uint64 overflow in battery power metrics
- Fix display of invalid large values like 18446744073709544W
- macOS ioreg returns negative values as uint64 (two's complement)
- Detect overflow pattern (value > 2^63) and convert to signed
- Validate reasonable power range (-200W to 200W) for battery
- Add range validation for SystemPower (0 to 1000W)

Root cause: During charging, battery power is negative but ioreg
formats it as unsigned uint64, causing overflow. This fix properly
converts these values back to signed integers.
2026-01-14 11:26:37 +08:00
Tw93
0a632c0a22 fix: protect Firefox browser data from cleaning
Fixes #307

- Add Firefox to DATA_PROTECTED_BUNDLES to prevent cleaning
- Protects IndexedDB, localStorage, and other complex storage
- Prevents Gmail and other web apps from breaking after clean
2026-01-14 11:26:24 +08:00
Tw93
c8eae1d085 Merge branches 'dev' and 'dev' of github.com:tw93/Mole into dev 2026-01-14 10:47:00 +08:00
Tw93
9108b0f85d update the windows user use 2026-01-14 10:46:55 +08:00
Tw93
5afd602027 refactor: optimize CPU temp feature with tests and performance fix
- Restore performance test threshold to 200ms (from 500ms)
  User caching is highly effective (~8ms for 100 calls)
- Add unit tests for colorizeTemp() covering thresholds and edge cases
2026-01-14 10:31:01 +08:00
github-actions[bot]
081ec0b2be chore: update contributors [skip ci] 2026-01-14 02:24:04 +00:00
Tw93
55b61eeb09 Merge pull request #312 from Copper-Eye/dev
Feature: Add cpu temp, top consumers, and visual improvements
2026-01-14 10:23:47 +08:00
Tw93
c210aad3a3 Merge branch 'dev' into dev 2026-01-14 10:18:21 +08:00
Tw93
83dc59bb54 feat: improve purge display with full paths and size sorting (#311)
- Show full project paths (~/www/project) instead of just project names
  - Sort artifacts by size descending (largest first)
  - Increase path display width for better readability
  - Support CMD+Click to open folders in terminal
2026-01-14 10:15:58 +08:00
Tw93
7360f0a59e feat: Implement empty file cleanup in ~/Library root (#234)
- Add logic to remove 0-byte files in ~/Library (maxdepth 1)
- Explicitly protect .localized files to preserve Finder localization
- Respect global whitelist patterns
2026-01-14 09:49:47 +08:00
Copper-Eye
fae1c88fa2 add cpu temp display and optimize user check 2026-01-13 17:21:03 -04:00
github-actions[bot]
68708484e3 chore: update contributors [skip ci] 2026-01-13 21:06:42 +00:00
Tw93
acac949bc7 update agents.md 2026-01-13 19:48:08 +08:00
Tw93
421cdd09dc feat: enhance safe cache cleaning for Electron apps and VS Code
- Add safe cleanup for Antigravity, Filo, and Claude caches in Application Support (Cache, GPUCache, Code Cache only).
- Enhance VS Code cleanup to include deep rendering caches (GPU, Dawn) and extension installers.
- Validated to ensure no user data or pnpm/yarn executables are touched.
2026-01-13 19:04:54 +08:00
Tw93
8ec7663a70 Fixed the ShellCheck warning 2026-01-13 16:54:10 +08:00
Tw93
3a05db5e1d Merge branch 'main' of github.com:tw93/Mole 2026-01-13 15:59:51 +08:00
Tw93
0bd30955a2 feat: detect multiple NDK and Rust toolchain versions (#234)
Add report-only detection for multiple Android NDK and Rust toolchain
installations. Users receive helpful guidance for manual cleanup via
Android Studio SDK Manager or rustup commands.

- Add check_android_ndk() and check_rust_toolchains()
- Extract check_multiple_versions() helper (DRY)
- Add 4 test cases, optimize test performance
- Fix shellcheck warnings

All 393 tests passing.
2026-01-13 15:59:43 +08:00