1
0
mirror of https://github.com/tw93/Mole.git synced 2026-02-04 20:19:45 +00:00
Commit Graph

92 Commits

Author SHA1 Message Date
tw93
0fcf777230 refactor: simplify channel send logic with trySend function 2026-01-31 20:05:21 +08:00
tw93
e81be16031 perf: optimize scanner timer usage and app protection matching
- Replace time.After() with reusable timer to reduce GC pressure
- Use pre-compiled regex for app bundle matching (O(1) vs O(N))
- Fix Bash 3.2 compatibility (remove local -n usage)
2026-01-30 15:37:13 +08:00
tw93
89dcb0c3b5 fix: Use du -P for accurate size calculation and add timeouts to channel sends to prevent blocking. 2026-01-30 15:06:30 +08:00
tw93
ab4433d9c0 Merge branch 'main' of https://github.com/tw93/Mole 2026-01-28 11:43:41 +08:00
tw93
61a3238f19 fix(scan): prevent hang on cyclic symlinks (#378, #379) 2026-01-28 11:43:39 +08:00
Tw93
6036b4606c chore: auto format code 2026-01-28 03:26:51 +00:00
Dylan Joss
a9c5794ec4 test: add tests for utility functions and heap implementations (#380)
Add unit tests for utility functions in cmd/status/view_test.go:
- formatRate: MB/s rate formatting with adaptive precision
- shorten: string truncation with ellipsis
- humanBytesShort: byte formatting with binary units

Add unit tests for heap implementations in cmd/analyze/heap_test.go:
- entryHeap: min-heap for dirEntry (basic ops, empty, single element)
- largeFileHeap: min-heap for fileEntry (basic ops, top N pattern)
2026-01-28 11:25:08 +08:00
tw93
86c9005381 Merge branch 'dwjoss/cleanable-tests' of https://github.com/dwjoss/Mole; branch 'main' of https://github.com/tw93/Mole 2026-01-27 10:30:43 +08:00
Dylan Joss
162ba949ee test: expand cleanable directory detection tests
Enhance test coverage for `isCleanableDir` and add new tests for
`isHandledByMoClean` in `cmd/analyze/analyze_test.go`.

`TestIsHandledByMoClean` (new, 12 test cases):
- Paths `mo clean` handles (caches, logs, saved state, trash, reports)
- Paths `mo clean` does NOT handle (project dirs, home, random)
- Case sensitivity verification

`TestIsCleanableDir` (expanded from 3 to 24 test cases):
- Project dependencies (`node_modules`, `venv`, `pycache`, `build`, etc.)
- Xcode/iOS directories (DerivedData, Pods)
- Build outputs (dist, target, .next, coverage)
- Paths excluded because `mo clean` handles them
- Edge cases (empty string, root path, just basename)
2026-01-26 14:05:02 -08:00
tw93
e966838c82 style: standardize punctuation across codebase
- Replace parentheses with commas for supplementary info
- Use commas instead of em-dashes for separators
- Update bullet points from - to * in some contexts
- Improve version extraction regex with fallback logic
2026-01-26 14:36:06 +08:00
Tw93
83166f2fe8 fix: avoid orphan service false positives and warm large file threshold 2026-01-23 20:16:06 +08:00
Tw93
7e359c57d9 fix(analyze): correct top list and thresholds 2026-01-23 18:27:05 +08:00
Tw93
d862d58672 test: stabilize formatUnusedTime by using UTC baseline 2026-01-22 17:24:55 +08:00
Tw93
6be7f7d0f8 Merge branch 'pr-348' 2026-01-22 17:22:48 +08:00
Dylan Joss
217eb986e2 test: add formatUnusedTime tests and fix duplicate comment
Add unit tests for formatUnusedTime in cmd/analyze/format_test.go:
- Zero time (time.Time{}) returns empty string
- Recent files (< 90 days) return empty string
- Boundary tests at 89/90 days threshold
- Month formatting (3mo, 4mo, 6mo, 11mo, 12mo)
- Year formatting (1yr, 2yr, 3yr)
- Boundary tests at year transitions

Also remove duplicate "Memory pressure penalty" comment in
cmd/status/metrics_health.go (line 72-73).
2026-01-21 22:42:13 -08:00
Andrei Murariu
192ea08f8d bug-fix: mo analyze keybindings misalignment (#342)
* bug-fix: mo analyze keybindings misalignment

handle also uppercase R together with lowercase r

* bug-fix: mo analyze keybindings misalignment

Fix the logic also for:
- q with Q
- k with K
- j with J
- l with L
- b with B
- h with H
- o with O
2026-01-22 11:16:42 +08:00
bikraj2
c99535c2d7 fix(history): prevent adding multiple history entries with same path when scanning 2026-01-16 19:28:32 +05:30
Tw93
93dee7b94d Implemented safer temp cleanup and error reporting while fixing folded-directory size fallback to prevent double counting and aligning Homebrew cleanup traps with safe removal. 2026-01-12 15:45:31 +08:00
Tw93
3bae4f356a Merge branch 'dev' into pr-300 2026-01-12 14:20:24 +08:00
Jack Phallen
47ce1cb75b fix(analyze): Fix race condition in currentPath 2026-01-11 23:44:55 -05:00
Jack Phallen
1e2cf97b47 fix(analyze): Additional improvements to limit sem blocking 2026-01-11 23:28:44 -05:00
Tw93
df2f00c92f Merge branch 'pr-296' into dev 2026-01-12 11:52:19 +08:00
Tw93
f21fc833b5 Merge pull request #295 from JackPhallen/fix/cap-scanner-buffer-size
fix: cap entryChan buffer to prevent memory spikes
2026-01-12 11:46:00 +08:00
Tw93
8aee56b7fa fix: enhance overview scan UI and invalidate cache on refresh
- Invalidate disk cache for overview entries on refresh to ensure fresh data.

- Show dynamic status messages (e.g., 'Scanning Applications...') instead of static text in Overview.

- Adjust spinner animation speed to 100ms for smoother visual experience.
2026-01-12 11:42:07 +08:00
frozturk
08c577d24a fix: refresh not working in overview mode 2026-01-11 19:38:56 +01:00
Jack Phallen
8870141923 Cap entryChan buffer to prevent memory spikes
Cap buffer at 4096. All entries still process normally—producers just briefly block if
the buffer fills, which is negligible since the collector drains it quickly.
2026-01-11 11:06:00 -05:00
Jack Phallen
b8ab9511fd Create separate limiter for du subprocesses
Introduce duSem to cap concurrent du subprocess spawns while keeping
the existing sem to limit overall scan fan-out (dir recursion/task concurrency).
This prevents du from monopolizing scan concurrency and reduces resource
spikes during folded-dir sizing.
2026-01-11 10:58:45 -05:00
Jack Phallen
cf4690191e Fix semaphore acquisition order
Acquire semaphore before spawning goroutine in calculateDirSizeFast to prevent goroutine
explosion. Previously, all subdirectory goroutines were spawned immediately and blocked on
the semaphore—now the spawning itself is throttled.
2026-01-11 10:58:45 -05:00
Oleksandr Redko
14b8fa688e refactor: simplify with slices.Clone 2026-01-10 20:41:05 +02:00
Tw93
7d43e669a8 fix(analyze): improve deletion safety and UI clarity
- Update UI status to 'Moving to Trash...' for clarity
- Use os.Lstat instead of os.Stat to correctly handle broken symlinks during deletion checks
2026-01-10 08:51:14 +08:00
Tw93
ebb4f7a1e9 feat(analyze): safer deletion with Trash and two-key confirm
- Change delete confirmation from double-delete to Delete→Enter
- Move files to macOS Trash instead of permanent deletion
- Allow file recovery from Trash if accidentally deleted
- Update UI prompts to show 'Press Enter to confirm'
- Skip Finder-dependent tests in CI environments
- Update SECURITY_AUDIT.md with new safety mechanisms

Closes #288
2026-01-10 07:24:58 +08:00
Tw93
2b5dd3f44c feat: show scanning progress as percentage in disk analyzer
- Implemented progress percentage display (e.g., `(45%)`) in `cmd/analyze` to show scanning status based on cached total files.
- Kept the UI clean by avoiding a full progress bar.
- fix: formatting improvements in `bin/touchid.sh`.
2026-01-09 14:16:29 +08:00
Tw93
79a19ffbfe Go code formatting optimization 2026-01-08 15:26:35 +08:00
Tw93
0d15177735 refactor: remove trimName and renderGPUCard functions 2026-01-06 21:07:51 +08:00
Tw93
c2c589ac81 Merge pull request #264 from alexandear-org/refactor/do-not-use-deprecated-funcs
refactor: replace deprecated `Start` with `Run`
2026-01-06 21:05:10 +08:00
Oleksandr Redko
158af1e1ba refactor: modernize Go code 2026-01-06 12:04:27 +02:00
Oleksandr Redko
80757ec074 refactor: replace deprecated Start with Run 2026-01-06 11:46:59 +02:00
Tw93
1e8ff30fa1 chore: auto format code 2025-12-31 08:24:02 +00:00
Tw93
9aa569cbb6 feat: Enhance clean, optimize, analyze, and status commands, and update security audit documentation. 2025-12-31 16:23:31 +08:00
Tw93
b67204f959 feat: remove SQLite vacuum optimization, enhance CJK/emoji width calculation, and improve system cleanup and UI feedback. 2025-12-29 00:29:42 +08:00
Tw93
44685d3999 feat: Improve CJK character width calculation, enhance SQLite vacuum test robustness, and update security audit documentation for core cleaning and optimization logic. 2025-12-28 21:29:10 +08:00
Hensell
23479c61bd feat: add .dart_tool to project purge targets and disk analyzer (#179) 2025-12-28 20:12:22 +08:00
Tw93
66ad3b34ee chore: auto format code 2025-12-28 11:39:34 +00:00
Tw93
e238c84917 Add comprehensive tests for analyze format utilities 2025-12-28 19:38:55 +08:00
Tw93
ae82c83714 chore: auto format code 2025-12-22 03:24:39 +00:00
Tw93
d2dc68da90 feat: Enhance app protection with centralized critical component checks, improve UI string width calculation, refine analysis and cleaning logic, and add new tests. 2025-12-22 11:24:04 +08:00
Tw93
58e30fbcaa feat: Separate Home and Library entries in overview, exclude Library from Home's size, and sort overview entries by size. 2025-12-22 10:38:38 +08:00
Tw93
f8765ee3d3 feat: optimize application scanning performance, improve multi-selection robustness 2025-12-22 09:46:10 +08:00
Tw93
e13d92abc0 fix(analyze): clear multi-select on refresh and optimize delete
- Clear multi-selection map on refresh to prevent index mismatch
- Use built-in min function in delete.go
- Improve delete cancellation logic
2025-12-21 22:15:18 +08:00
Sizk
74d05ed9aa feat(analyze): add multi-select for batch file operations (#140)
- Add spacebar to toggle selection on files/directories
- Support batch delete for multiple selected items
- Support batch open (O) and reveal in Finder (F) for selections
- Show selection count and total size in status bar
- Display selection indicator (● selected, ○ unselected)
- Clear selections when navigating directories or switching views

Authored-by: Sizk <sizk@users.noreply.github.com>
2025-12-21 22:15:14 +08:00