1
0
mirror of https://github.com/tw93/Mole.git synced 2026-02-05 11:28:48 +00:00
Commit Graph

95 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
Tw93
edf5ed09a9 chore: restructure windows branch (move windows/ content to root, remove macos files) 2026-01-10 13:23:29 +08:00
Tw93
b1bb91be1f Fix the wrong test 2026-01-08 15:36:09 +08:00
Tw93
d3f1cdd834 fix(security): allow Firefox ..files directories in path validation
Fixes #263

- Change regex from \.\. to (^|/)\.\.(/|$) to only match path components
- Firefox uses ..files suffix in IndexedDB dirs (e.g., name..files)
- Still blocks actual traversal: /tmp/../etc
- Added test cases for Firefox compatibility
- All 16 tests passing
2026-01-06 09:51:34 +08:00
Tw93
3da97c57c6 test: mock clean_ds_store_tree and UI functions in clean_misc.bats 2026-01-05 17:43:25 +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
797c069e89 Test to prevent uninstall local 2026-01-04 23:52:47 +08:00
Tw93
e434a1e837 feat(uninstall): add support for third-party input methods
- Add '/Library/Input Methods' to application scan paths
- Unprotect Sogou, QQ, and Baidu input methods from system critical list
- Enhance file cleanup logic to detect input method plugins and caches
- Allow clean uninstallation and deep cleaning of WeType, Sogou, etc.
2026-01-04 23:19:02 +08:00
Tw93
768b1bf274 docs: add --debug flag documentation and update tests
- Add --dry-run --debug usage examples to README
- Add detailed preview tip explaining debug log features
- Update tests/clean_core.bats for debug functionality
- Closes GitHub issue #242
2026-01-04 17:30:49 +08:00
Tw93
fc4d94f7c7 Merge pull request #247 from JackPhallen/feat/more-purge-support
feat(purge): C# bin purge support
2026-01-04 16:16:59 +08:00
Tw93
0df0de33f5 Merge pull request #248 from JackPhallen/fix/protect-whitelisted-subdirectories
fix: Respect whitelisted subdirectories
2026-01-04 16:12:39 +08:00
Tw93
4ed7c9a75a Merge pull request #245 from JackPhallen/chore/skip-tests-requiring-timeout
chore: Skip tests that require timeout
2026-01-04 16:05:38 +08:00
Jack Phallen
70e1544490 fix: Respect whitelisted subdirectories 2026-01-04 00:00:28 -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
Jack Phallen
aabee42344 feat(purge): C# bin purge support 2026-01-03 23:24:25 -08:00
Jack Phallen
5fa0ea403b chore: Skip tests that require timeout 2026-01-03 22:17:28 -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
c4df04ff4f test: remove obsolete environment variable tests 2026-01-03 13:44:55 +08:00
Tw93
5ee7d2d703 test: fix empty directory cleanup depth and remove obsolete spinner test 2026-01-03 13:37:53 +08:00
Tw93
5c1e3a939d Adds iterative empty directory cleanup and smart Edge Updater version management. 2026-01-03 13:32:07 +08:00
Tw93
c165230159 refactor: simplify ui and log defaults
Remove support for obscure env var overrides in favor of sensible defaults.
2026-01-03 13:29:07 +08:00
Tw93
5955bd93dc feat: enhance clean logic
1. Add recursive empty directory cleanup for Application Support and Caches.
2. Add support for cleaning old Edge Updater versions.
2026-01-03 13:29:07 +08:00
Tw93
3cb21aad7e refactor: improve brew cleanup timeout handling and remove app_caches, clean_extras, and optimize_core tests. 2026-01-03 12:53:31 +08:00
Tw93
4aef2de0fc refactor: Consolidate and refactor test suite by removing redundant files and simplifying test execution. 2026-01-03 12:04:57 +08:00
Tw93
f5a8adb97e feat: implement empty Library directory cleanup and Android NDK version check. 2026-01-03 09:41:05 +08:00
Tw93
d701519310 refactor: simplify pnpm environment variable handling in clean script 2026-01-02 19:10:20 +08:00
Tw93
910e79df4e feat: Improve clean command's regex handling and pnpm cache cleaning, enhance test output, update completion descriptions, and clarify installation instructions. 2026-01-02 18:50:42 +08: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
Tw93
64a9946483 feat: add unit tests for project root detection and vendor directory protection logic 2026-01-02 00:07:10 +08:00
Tw93
a671c63401 feat: smart vendor directory handling in purge
- Only clean PHP Composer vendor (regeneratable)
  - Protect Rails, Go, and unknown vendor directories
  - Enhanced test coverage for all scenarios

  Builds on PR #229 with improved multi-language support
2026-01-02 00:03:17 +08:00
Jalen Yan
9e84883de5 fix: skip Rails vendor during purge 2026-01-01 23:37:02 +08:00
Tw93
fdcaa7fa25 Fix workflow errors 2025-12-31 22:54:51 +08:00
Tw93
592f02e6e2 feat: overhaul quality checks and expand test suite for clean and optimize features 2025-12-31 18:13:37 +08:00
Tw93
97ed11cd42 refactor: clean_local_snapshots now uses an array for snapshot processing and includes a read_key fallback, with new tests. 2025-12-31 10:23:11 +08:00
Tw93
5f6448b99d perf: Increase section tracking overhead test threshold and ensure note_activity is defined for testing. 2025-12-30 17:22:22 +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
f0c9683048 feat: Add new system optimizations, refine existing tasks with safety checks, and update whitelisting options. 2025-12-30 15:44:52 +08:00
Andrii Medvediev
7e62ed19f9 feat: add configurable purge paths (#197) 2025-12-29 19:16:16 +08:00
Tw93
376d7fb8cd remove 2025-12-29 19:07:36 +08:00
Tw93
44e91be007 feat: add new system optimization tasks and implement orphaned startup item cleanup 2025-12-29 19:06:04 +08:00
Tw93
5f7df6235e enhance macOS update check with configurable timeout and debug logging 2025-12-29 08:20:27 +08:00
Tw93
f84b019694 Merge branch 'pr-182' 2025-12-29 08:09:02 +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
amanthanvi
9239571be1 Tighten macOS update check and add empty-output test 2025-12-28 11:18:12 -05:00
amanthanvi
014e15f721 Add macOS update check edge case tests 2025-12-28 10:59:40 -05:00
amanthanvi
62c783d5b3 Fix macOS update detection timeout 2025-12-28 10:49:00 -05: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