Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
4d09d4f
feat: Add React Native cache scanning support
thanhdevapp Dec 15, 2025
9212e04
feat: Add Flutter/Dart cleanup support
thanhdevapp Dec 15, 2025
247be7d
feat: Add comprehensive TUI enhancements with status bar, scanning an…
thanhdevapp Dec 15, 2025
7d8f11e
feat: Add Go, Python, Rust, and Homebrew scanning support, extend `Sc…
thanhdevapp Dec 15, 2025
bf5ca09
add plan
thanhdevapp Dec 15, 2025
6ebbe89
chore: Ignore `plans` and `docs` directories in .gitignore.
thanhdevapp Dec 15, 2025
5fb3a0e
feat: Complete Phase 2 with Docker and Java/Kotlin scanning support
thanhdevapp Dec 15, 2025
d5c0e75
docs: Update README and TUI help with 10 ecosystem support
thanhdevapp Dec 15, 2025
4bf2592
feat: Add new and updated dependencies to node_modules.
thanhdevapp Dec 16, 2025
ce2d372
ci: Configure Vitest unit testing, coverage reporting, and CI workflow.
thanhdevapp Dec 16, 2025
17022df
merge: Integrate multi-ecosystem scanner support (Flutter, Go, Python…
thanhdevapp Dec 16, 2025
53e1a66
chore: Bump version to 1.0.1
thanhdevapp Dec 16, 2025
cb490a9
chore: Archive completed plans and add integration documentation
thanhdevapp Dec 16, 2025
9cb67c0
merge: Integrate multi-ecosystem scanner support v1.0.1
thanhdevapp Dec 16, 2025
5a51e7b
docs: Add CHANGELOG for v1.0.1 release
thanhdevapp Dec 16, 2025
bdeb7a5
docs: Add v1.0.1 release summary report
thanhdevapp Dec 16, 2025
b92b53b
merge: Integrate Wails v2 GUI with multi-ecosystem scanners
thanhdevapp Dec 16, 2025
dc45a72
feat: Add CLI and test executables, adjust frontend layout, and updat…
thanhdevapp Dec 16, 2025
2628155
fix: GoReleaser build from CLI entry point instead of GUI
thanhdevapp Dec 16, 2025
ab22d6b
fix: Exclude GUI package from release workflow tests
thanhdevapp Dec 17, 2025
f86eeb4
fix: Add build constraint to GUI main.go to prevent CLI build conflicts
thanhdevapp Dec 17, 2025
51e18d6
fix: Add build constraint to app.go for GUI build separation
thanhdevapp Dec 17, 2025
d842752
fix: Add CLI entry point and update gitignore to only ignore binary o…
thanhdevapp Dec 17, 2025
b7571b0
feat: Add auto-update documentation workflow
thanhdevapp Dec 17, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 51 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,14 @@ name: CI

on:
push:
branches: [main, dev-mvp]
branches: [main, dev-mvp, feat/wails-v2-migration]
pull_request:
branches: [main]
branches: [main, dev-mvp]

jobs:
build:
# Backend tests (Go)
backend:
name: Backend Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
Expand All @@ -23,7 +25,53 @@ jobs:
- name: Test
run: go test -v ./...

# Frontend tests (React + TypeScript)
frontend:
name: Frontend Tests
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./frontend
steps:
- uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '18'
cache: 'npm'
cache-dependency-path: './frontend/package-lock.json'

- name: Install dependencies
run: npm ci

- name: Run TypeScript check
run: npx tsc --noEmit

- name: Run tests
run: npm run test:run

- name: Generate coverage report
run: npm run test:coverage

- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
directory: ./frontend/coverage
flags: frontend
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: false

- name: Upload coverage artifacts
uses: actions/upload-artifact@v4
with:
name: coverage-report
path: ./frontend/coverage
retention-days: 7

# Linting
lint:
name: Go Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ jobs:
go-version: '1.21'

- name: Run tests
run: go test ./...
run: go test ./cmd/... ./internal/... ./pkg/...

- name: Run GoReleaser
uses: goreleaser/goreleaser-action@v5
Expand Down
119 changes: 119 additions & 0 deletions .github/workflows/update-docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
name: Update Documentation

on:
release:
types: [published]
workflow_dispatch:
inputs:
version:
description: 'Version to update to (e.g., v1.0.1)'
required: true

permissions:
contents: write

jobs:
update-docs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Get version
id: version
run: |
if [ "${{ github.event_name }}" = "release" ]; then
VERSION="${{ github.event.release.tag_name }}"
else
VERSION="${{ github.event.inputs.version }}"
fi

# Remove 'v' prefix if present
VERSION_NUMBER="${VERSION#v}"

echo "version=${VERSION}" >> $GITHUB_OUTPUT
echo "version_number=${VERSION_NUMBER}" >> $GITHUB_OUTPUT
echo "Updating to version: ${VERSION}"

- name: Update INSTALL.md
run: |
VERSION="${{ steps.version.outputs.version }}"
VERSION_NUMBER="${{ steps.version.outputs.version_number }}"

# Update version in download links
sed -i "s|v[0-9]\+\.[0-9]\+\.[0-9]\+|${VERSION}|g" INSTALL.md
sed -i "s|dev-cleaner_[0-9]\+\.[0-9]\+\.[0-9]\+|dev-cleaner_${VERSION_NUMBER}|g" INSTALL.md

# Update "Latest Release" header
sed -i "s|Latest Release: v[0-9]\+\.[0-9]\+\.[0-9]\+|Latest Release: ${VERSION}|" INSTALL.md

# Update last updated date
sed -i "s|Last updated:.*|Last updated: $(date +%Y-%m-%d)|" INSTALL.md

# Update expected version output
sed -i "s|dev-cleaner version [0-9]\+\.[0-9]\+\.[0-9]\+|dev-cleaner version ${VERSION_NUMBER}|g" INSTALL.md

- name: Update README.md
run: |
VERSION="${{ steps.version.outputs.version }}"
VERSION_NUMBER="${{ steps.version.outputs.version_number }}"

# Update Homebrew section - remove "Coming Soon"
sed -i 's|### Homebrew (Coming Soon)|### Homebrew (Recommended)|' README.md

# Add version badge if not exists
if ! grep -q "Version" README.md; then
sed -i '/\[!\[License\]/a [![Version](https://img.shields.io/badge/Version-'${VERSION_NUMBER}'-blue?style=flat-square)](https://github.com/thanhdevapp/mac-dev-cleaner-cli/releases/latest)' README.md
else
# Update existing version badge
sed -i "s|Version-[0-9]\+\.[0-9]\+\.[0-9]\+|Version-${VERSION_NUMBER}|" README.md
fi

# Update build instructions to use correct path
sed -i 's|go build -o dev-cleaner \.|go build -o dev-cleaner ./cmd/dev-cleaner|' README.md

# Add direct download section if not exists
if ! grep -q "Direct Download" README.md; then
# Add after Homebrew section
sed -i '/brew install dev-cleaner/a \\n### Direct Download\n\nDownload pre-built binaries: [INSTALL.md](INSTALL.md)' README.md
fi

- name: Check for changes
id: check_changes
run: |
if git diff --quiet INSTALL.md README.md; then
echo "has_changes=false" >> $GITHUB_OUTPUT
echo "No changes detected"
else
echo "has_changes=true" >> $GITHUB_OUTPUT
echo "Changes detected:"
git diff INSTALL.md README.md
fi

- name: Commit and push
if: steps.check_changes.outputs.has_changes == 'true'
run: |
VERSION="${{ steps.version.outputs.version }}"

git config --local user.email "[email protected]"
git config --local user.name "goreleaserbot"

git add INSTALL.md README.md
git commit -m "docs: Update installation docs to ${VERSION}"
git push

- name: Summary
run: |
VERSION="${{ steps.version.outputs.version }}"
echo "## Documentation Update Complete" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "Updated to version: **${VERSION}**" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY

if [ "${{ steps.check_changes.outputs.has_changes }}" = "true" ]; then
echo "✅ INSTALL.md and README.md updated" >> $GITHUB_STEP_SUMMARY
else
echo "ℹ️ No changes needed" >> $GITHUB_STEP_SUMMARY
fi
17 changes: 14 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,6 @@ GoogleService-Info.plist

repomix-output.xml
.serena/cache
plans/**/*
!plans/templates/*
screenshots/*
docs/screenshots/*
Expand All @@ -77,6 +76,18 @@ dev-cleaner
.claude/settings.bak.json
.claude
CLAUDE.md

# Project-specific
design-mockups
/plans/templates/

# IDE
/.idea/git_toolbox_prj.xml
/.idea/mac-dev-cleaner-cli.iml
/.idea/modules.xml
/.idea/vcs.xml

# Frontend node_modules (for Wails GUI)
frontend/node_modules
plans
docs
design-mockups
docs
2 changes: 1 addition & 1 deletion .goreleaser.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ before:

builds:
- id: dev-cleaner
main: ./main.go
main: ./cmd/dev-cleaner/main.go
binary: dev-cleaner
env:
- CGO_ENABLED=0
Expand Down
10 changes: 10 additions & 0 deletions .idea/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

124 changes: 124 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
# Changelog

All notable changes to Mac Dev Cleaner will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [1.0.1] - 2025-12-16

### Added
- **7 New Scanner Types** - Expand ecosystem support beyond iOS, Android, and Node.js
- **Flutter/Dart Scanner** - Clean build artifacts (.dart_tool, build/, .pub-cache)
- **Go Scanner** - Clean module cache (GOMODCACHE) and build cache (GOCACHE)
- **Python Scanner** - Clean pip, poetry, uv caches, virtualenvs, and __pycache__
- **Rust Scanner** - Clean cargo registry (.cargo/registry), git cache, and target directories
- **Homebrew Scanner** - Clean Homebrew download caches
- **Docker Scanner** - Clean unused images, containers, volumes, and build cache
- **Java/Kotlin Scanner** - Clean Maven (.m2), Gradle caches, and build directories
- **Enhanced TUI** - Updated interface to display all 10 scanner types
- **Comprehensive Documentation** - Added detailed docs for all scanner types
- **Integration Testing** - Verified all scanners work individually and combined

### Changed
- **Scanner Architecture** - Unified scanner interface for better extensibility
- **Command Flags** - Added 7 new flags (--flutter, --go, --python, --rust, --homebrew, --docker, --java)
- **Help Text** - Updated documentation showing all 10 supported ecosystems
- **Version Number** - Bumped from "dev" to 1.0.1

### Technical Details
- **Files Changed:** 69 files (+27,878 lines, -120 lines)
- **New Scanner Files:** 7 implementations (940 lines of Go code)
- **Test Coverage:** All unit tests passing (cleaner: 19.8%, scanner: 3.6%, ui: 8.7%)
- **Integration Tests:** Successfully scanned 35 items totaling 43.2 GB across all scanner types

### Performance
- **Scan Speed:** No degradation with additional scanners
- **Memory Usage:** Efficient scanning of large codebases
- **TUI Responsiveness:** Smooth navigation with 35+ items

### Breaking Changes
None - fully backward compatible with v1.0.0

### Migration Guide
No migration needed. New scanner types are automatically available via flags:
```bash
# Scan specific ecosystems
dev-cleaner scan --flutter
dev-cleaner scan --go
dev-cleaner scan --python
dev-cleaner scan --java

# Scan all (including new types)
dev-cleaner scan --all
```

---

## [1.0.0] - 2025-12-15

### Added
- Initial release with iOS, Android, and Node.js support
- Interactive TUI with keyboard navigation
- Safety checks and confirmation dialogs
- Homebrew installation support
- Comprehensive documentation

### Features
- Xcode DerivedData, Archives, and cache cleaning
- Android Gradle cache and SDK artifacts cleaning
- Node.js node_modules and package manager caches
- Interactive TUI with ncdu-style navigation
- Safety validation before deletion
- Real-time size calculations
- Keyboard shortcuts (vim bindings)

### Technical Details
- Go 1.21+ required
- Cobra CLI framework
- Bubble Tea TUI library
- Cross-platform compatibility (macOS focused)

---

## Release Notes

### v1.0.1 Summary

This release significantly expands Mac Dev Cleaner's ecosystem support, adding **7 new scanner types** to the existing iOS, Android, and Node.js scanners. With this update, Mac Dev Cleaner now supports **10 development ecosystems**, making it a comprehensive tool for cleaning development artifacts across multiple programming languages and platforms.

**Key Highlights:**
- ✅ **10 Total Scanners** - Flutter, Go, Python, Rust, Homebrew, Docker, Java + existing 3
- ✅ **Zero Breaking Changes** - Fully backward compatible
- ✅ **Production Ready** - All tests passing, comprehensive testing done
- ✅ **Well Documented** - Updated help text and documentation

**Testing Results:**
- 35 items scanned across all ecosystems
- 43.2 GB total cleanable space detected
- All scanner types verified operational
- Integration tests passed

**Upgrade Path:**
Simply update to v1.0.1 - no configuration changes needed. New scanners are immediately available through command-line flags.

---

## Links

- [Homepage](https://github.com/thanhdevapp/dev-cleaner)
- [Installation Guide](README.md#installation)
- [Usage Documentation](README.md#usage)
- [Contributing](CONTRIBUTING.md)
- [License](LICENSE)

---

## Version History

- **v1.0.1** (2025-12-16) - Multi-ecosystem scanner support
- **v1.0.0** (2025-12-15) - Initial release

---

*For detailed commit history, see [GitHub Releases](https://github.com/thanhdevapp/dev-cleaner/releases)*
Loading
Loading