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

457 Commits

Author SHA1 Message Date
Bhadra
3bd2869e8d feat: Add Windows package manager publishing infrastructure (#343) (#356)
* feat: Add Windows package manager publishing infrastructure (#343)

- Add comprehensive release build scripts:
  - build-release.ps1: Creates portable ZIP + SHA256 checksums
  - build-exe.ps1: Standalone executable builder (PS2EXE)
  - build-msi.ps1: MSI installer builder (WiX Toolset)

- Add GitHub Actions workflow:
  - Automated builds on version tags
  - Runs tests before building
  - Auto-creates GitHub releases with artifacts

- Add package manager manifests:
  - WinGet: Complete manifests ready for microsoft/winget-pkgs
  - Chocolatey: Full package with install/uninstall scripts
  - Scoop: JSON manifest ready for submission

- Add comprehensive documentation:
  - RELEASE.md: Complete guide for building and publishing
  - Package-specific READMEs with submission instructions
  - ISSUE-343-SUMMARY.md: Quick reference and next steps

Successfully tested: Built mole-1.0.0-x64.zip (5 MB) with SHA256 checksums

Addresses #343

* chore: update contributors [skip ci]

* fix: Support uppercase V and -windows suffix in release workflow

* fix: Remove duplicate parameter definitions in clean, optimize, and purge commands

- bin/clean.ps1: Remove duplicate System, GameMedia, DebugMode, Whitelist params
- bin/optimize.ps1: Remove duplicate DebugMode param
- bin/purge.ps1: Remove duplicate DebugMode and Paths params

These duplicates were causing parser errors in tests.

* fix: Update test regex to match --dry-run format in help text

The help output shows --dry-run (kebab-case) but test was checking for DryRun (PascalCase).
Updated regex to accept both formats.

* fix: Handle Pester 5.x result object properties correctly

Pester 5.x uses different property names (Passed.Count, Failed.Count)
instead of PassedCount, FailedCount. Added fallback logic to support both formats.

* fix: Simplify Pester result parsing with better fallback logic

Since Pester already prints test results, just check for failures
and assume success if we can't parse the result object. This handles
different Pester versions more gracefully.

* feat: Add MSI and EXE builds to release workflow

- Install WiX Toolset for MSI creation
- Install PS2EXE module for standalone EXE
- Build all three formats: ZIP, MSI, EXE
- MSI and EXE builds marked optional (continue-on-error)
- Upload all artifacts to GitHub release
- Update release notes with installation instructions for all formats
- Add SHA256 verification instructions for each format

* fix: Resolve MSI and EXE build failures

MSI build fix:
- Use UTF8 without BOM for temp WXS file to avoid XML parsing errors
- WiX compiler requires clean UTF8 encoding without byte order mark

EXE build fix:
- Remove hashtable iteration that modified collection during enumeration
- Exclude null iconFile parameter from ps2exe params instead of removing it
- Prevents 'Collection was modified' exception

* fix: Properly handle encoding and version format for MSI and EXE builds

MSI fix:
- Use System.IO.File.ReadAllText/WriteAllText for consistent UTF8 without BOM
- Prevents XML parsing errors in WiX compiler

EXE fix:
- Extract numeric version only (strip '-windows' suffix) for ps2exe
- ps2exe requires version in format n.n.n.n (numeric only)
- Fallback to 1.0.0.0 if version parsing fails

* fix: Use WriteAllBytes to ensure no BOM in MSI WXS file

- Convert string to UTF8 bytes manually
- Write bytes directly to file
- This guarantees no byte order mark is added
- Prevents WiX XML parsing error at position 7

* fix: Read WXS source as bytes to completely avoid BOM issues

- Read source file as raw bytes
- Convert bytes to string using UTF8Encoding without BOM
- Replace version in string
- Convert back to bytes and write
- This completely avoids PowerShell's Get-Content BOM handling

* chore: Simplify release workflow - remove MSI build, minimal release notes

- Remove MSI build steps (has persistent BOM/encoding issues)
- Remove WiX Toolset installation
- Simplify release notes to bare minimum
- Focus on ZIP and EXE artifacts only

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-01-24 00:08:24 +08:00
Bhadra
5c493d3308 Merge branch 'windows' into windows 2026-01-16 12:54:40 +05:30
Bhadra
8e661a7b22 refactor: standardize CLI with 'mo' alias and lowercase flags
Addresses tw93's PR #305 feedback:
- Add 'mo' short alias (mo.cmd) alongside mole.cmd
- Use 'mo' in all help text and documentation
- Document lowercase flag style (--dry-run, --help, etc.)
- Simplify optimize: repairs run automatically, no extra flags
- Fix RepairsApplied counter bug in optimize.ps1
- Update README with standardized examples
2026-01-16 12:45:36 +05:30
Tw93
e9cddbf4af Optimize CLI: consolidate repairs and standardize flags 2026-01-16 15:08:42 +08:00
Bhadra
56434486fa refactor: merge repair command into optimize
Per tw93's feedback on PR #305, consolidate repair utilities into
the optimize command to keep the CLI simple and unified.

Changes:
- Add repair flags to optimize: -Repair, -Font, -Icon, -Search, -Store
- Remove standalone repair.ps1 command
- Update mole.ps1 menu and help to reflect changes
- optimize now handles both optimization and repair tasks

Usage:
  mole optimize              # Standard optimizations
  mole optimize -Repair      # Optimizations + all repairs
  mole optimize -Icon -Font  # Optimizations + specific repairs
2026-01-14 09:23:25 +05:30
Bhadra
3dccf3592f feat: add game media cleanup (replays, screenshots, recordings)
- Add Clear-GameMediaFiles function to clean old game media (>90d by default)
- Supports NVIDIA ShadowPlay/Highlights, AMD ReLive, Xbox Game Bar
- Supports Steam screenshots, OBS recordings, Medal.tv, Overwolf/Outplayed
- Includes game-specific replays (Fortnite, LoL, Valorant, Rocket League, etc.)
- New -GameMedia flag for mole clean command
- Uses age-based cleanup to protect recent recordings
2026-01-12 20:24:11 +05:30
Bhadra
a2f0ae6078 fix: repair command icon and null input handling
- Replace non-existent Icons.Mole with Icons.Admin
- Add null check for empty menu input
2026-01-12 12:14:45 +05:30
Bhadra
afe8d09c7c feat: add repair command with cache rebuilds and system fixes
Add new 'mole repair' command with the following utilities:
- DNS cache flush (Repair-DnsCache)
- Font cache rebuild (Repair-FontCache) - requires admin
- Icon cache rebuild (Repair-IconCache) - restarts Explorer
- Windows Search index reset (Repair-SearchIndex) - requires admin
- Windows Store cache reset (Repair-StoreCache) - runs wsreset.exe

Features:
- Interactive menu when run without arguments
- Command-line flags: -DNS, -Font, -Icon, -Search, -Store, -All
- Dry-run mode support
- Proper service stop/start for font and search repairs

Usage:
  mole repair           # Interactive menu
  mole repair -DNS      # Flush DNS only
  mole repair -All      # Run all repairs
2026-01-12 12:01:48 +05:30
Bhadra
661105670c feat: add GPU shader cache cleanup (NVIDIA, AMD, Intel, DirectX)
Add Clear-GPUShaderCaches function to clean GPU shader caches:
- NVIDIA: DXCache, GLCache, NV_Cache
- AMD: DXCache, GLCache, VkCache
- Intel: ShaderCache
- DirectX: D3DSCache, DirectX Shader Cache
- Vulkan: VulkanCache (pipeline cache)

These caches can grow to 10GB+ and are safe to delete.
They will be rebuilt automatically when needed.

Integrated into main clean.ps1 workflow.
2026-01-12 11:58:20 +05:30
Tw93
edf5ed09a9 chore: restructure windows branch (move windows/ content to root, remove macos files) 2026-01-10 13:23:29 +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
2394c5d768 feat(touchid): add sudo_local support with silent migration 2026-01-09 11:02:10 +08:00
Tw93
5eb2edf1cd fix: resolve spinner display and Ctrl+C handling issues
- fix(clean): stop spinner before safe_clean outputs results
- fix(uninstall): handle Ctrl+C during application scanning
2026-01-08 16:17:39 +08:00
Tw93
9e7f2a87cf Repair output 2026-01-08 16:12:39 +08:00
Tw93
3ef44efcf9 feat: Add debug logging for installer collection and improve Homebrew installer display names by stripping hash prefixes. 2026-01-05 18:55:04 +08:00
Tw93
62ef283943 feat: refine ZIP installer detection to handle many entries and app bundles, and update AI agent development guide 2026-01-05 10:30:45 +08:00
Tw93
07ea303105 feat: enhance optimization summary with specific metrics for cleaned cache, repaired configs, and optimized databases 2026-01-05 00:26:08 +08:00
Tw93
2fac1e1dea Merge branch 'main' of github.com:tw93/Mole 2026-01-04 23:21:37 +08:00
Tw93
8a0b98525c fix(install): implement atomic update to prevent binary corruption
- Use temporary files (*.new) during installation process
- Perform atomic 'mv -f' operation to replace binaries
- Prevent partial updates if process is interrupted/fails
- Fixes critical issue where failed update deleted existing app
2026-01-04 23:17:42 +08:00
Tw93
b044fa3e60 chore: auto format code 2026-01-04 09:52:09 +00:00
Tw93
3906c020fe fix: improve cleanup by exiting alt screen and refine whitelisting for directory paths and R renv cache. 2026-01-04 17:41:14 +08:00
Tw93
aedeed1817 fix: refine terminal alt screen management with IN_ALT_SCREEN flag and conditional message display 2026-01-04 17:38:32 +08:00
Tw93
9d59649b51 feat(debug): add detailed debug output for clean operations
- Add classify_cleanup_risk() for risk level classification (LOW/MEDIUM/HIGH)
- Enhance safe_clean() with operation details and risk info
- Show item counts and file lists in debug mode
- Support for lib/clean/user.sh debug enhancements
- Part of GitHub issue #242 implementation
2026-01-04 17:30:41 +08:00
Tw93
9f504dc249 feat: implement installer cleanup functionality, add ZIP and file descriptor installer tests, and update README 2026-01-04 15:46:48 +08:00
Tw93
ad42266b09 refactor: rename installers command to installer across commands, script, and documentation. 2026-01-04 10:23:23 +08:00
Tw93
4680982ea1 Merge pull request #240 from JackPhallen/feat/installers-clean
feat: Create utility to find stale app installers
2026-01-04 10:12:00 +08:00
Jack Phallen
a2f071fd48 feat: Create utility to find stale app installers 2026-01-03 10:00:57 -08:00
Tw93
6dfd675417 refactor: standardize epoch time retrieval with get_epoch_seconds and ensure locale-independent string transformations. 2026-01-03 18:07:47 +08:00
Tw93
3e1f22b3f7 feat: Add mo alias to zsh completion. 2026-01-03 14:03:45 +08:00
Tw93
f85f40b67c Merge branch 'main' of github.com:tw93/Mole 2026-01-02 17:47:55 +08:00
Tw93
1923a6bf2f chore: Add shellcheck directives and consolidate file writes. 2026-01-02 10:14:36 +08:00
Tw93
78ded00847 chore: auto format code 2026-01-02 01:56:20 +00:00
Tw93
88f434f01a feat: Add browser version cleanup tests, enhance shell completion with new tests, and introduce core command definitions. 2026-01-02 09:55:42 +08:00
Jean-Jacques Martrès
553bd47127 feat: add shell completion script
This commit introduces a new `completion` command that provides shell
completion for bash, zsh, and fish.

The completion is implemented as a shell script in `bin/completion.sh`
and the main `mole` script has been updated to use it.

This approach was chosen to keep the completion logic in shell script,
as the `mole` command is primarily a set of shell scripts.
2026-01-01 15:27:23 +01: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
b5b09461c7 feat: add spinner feedback to optimization tasks, enhance app discovery for uninstall, and improve UI robustness and signal handling 2025-12-31 10:59:50 +08:00
Tw93
bb49ec3170 fix: Improve shell script robustness by adding variable validation and safer du output parsing. 2025-12-30 18:07:48 +08:00
Tw93
fcde129d2f fix: expand default whitelist patterns for accurate comparison and list all active patterns in dry-run output 2025-12-30 17:46:21 +08:00
Tw93
6c1fcd23d7 feat: optimize clean operation performance by pre-expanding whitelist patterns, improving size calculation, and adapting parallel processing based on file types, alongside test suite enhancements. 2025-12-30 17:13:43 +08:00
Tw93
41ce597f02 fix: improve CI stability and Bluetooth audio detection 2025-12-30 16:27:52 +08:00
Tw93
8e45da97b5 chore: auto format code 2025-12-30 07:45:31 +00:00
Tw93
08aec02283 fix: ensure 0KB files or du failures are still cleaned (potential under-cleaning fix)
- Refactor safe_clean to decouple deletion logic from size calculation
 - Attempt deletion for all existing paths, even if size is 0 or unknown
 - Correctly count failures only for files that existed but couldn't be removed
2025-12-30 15:02:35 +08:00
Tw93
1c4b033cf7 refactor: rename total_size_bytes to total_size_kb in clean.sh for clarity 2025-12-30 14:55:43 +08:00
Tw93
184aab5f60 feat: add --dry-run support for mo optimize
- Skip destructive operations (killall, launchctl unload, sudo) in dry-run mode
- Add opt_msg() helper for consistent output formatting
- Refactor opt_system_services_refresh() with service array
- Show appropriate summary for dry-run vs actual execution
- Skip sudo session prompt in dry-run mode
2025-12-30 14:38:09 +08:00
Tw93
34d202eb01 fix: resolve syntax error in size calculation (Issue #203)
- Add numeric validation for size variables in safe_clean()
- Fix get_path_size_kb() to handle non-numeric du output
- Display custom whitelist patterns in dry-run output (Issue #206)
2025-12-30 14:38:02 +08:00
Tw93
af61748977 release binaries via GH releases and update installer fallback 2025-12-29 20:23:11 +08:00
Tw93
7485af0bee chore: Remove --force-rescan option from uninstall command and script. 2025-12-29 19:40:09 +08:00
Tw93
bb83362195 feat(purge): add --paths option to configure scan directories
- Add lib/manage/purge_paths.sh for interactive path management
- Shows current paths status and opens editor for customization
- Update bin/purge.sh to handle --paths option
- Update README with new command
2025-12-29 19:23:54 +08:00
Tw93
bf36d3d6b6 chore: polish PR #197 and add Xcode Archives whitelist option
- Remove duplicate comment in project.sh
- Fix color code issue in purge.sh help message
- Add proper spacing after load_purge_config function
- Add shell syntax highlighting in README code block
- Add Xcode Archives to whitelist options (fixes #195)
2025-12-29 19:18:41 +08:00