Skip to content

Conversation

@thanhdevapp
Copy link
Owner

No description provided.

Add dedicated --react-native (--rn) flag to scan and clean React Native-specific caches in TMPDIR:
- Metro bundler cache (metro-*)
- Haste map cache (haste-map-*)
- RN packager cache (react-native-packager-cache-*)
- React temp files (react-*)

Implementation:
- Add TypeReactNative to types.CleanTargetType
- Create internal/scanner/react_native.go with ScanReactNative()
- Update scanner.ScanAll() to include RN scanning (parallel)
- Add --react-native and --rn flags to scan/clean commands
- Add comprehensive tests in react_native_test.go

Documentation:
- Update README Overview with React Native
- Add RN usage examples for scan and clean
- Add RN section to Scanned Directories
- Update Roadmap with completed RN support

Typical space savings: 200MB-1.2GB per system

Usage:
  dev-cleaner scan --rn
  dev-cleaner clean --rn --confirm
  dev-cleaner scan --rn --ios --android --node  # Full RN project
Add comprehensive Flutter/Dart cleanup functionality following the Node.js scanner pattern.

Features:
- Scan global Flutter/Dart caches (~/.pub-cache, ~/.dart_tool, Flutter caches)
- Recursively detect Flutter projects via pubspec.yaml marker
- Clean build artifacts across 8 platforms (iOS, Android, macOS, Linux, Windows, Web)
- Concurrent scanning with goroutines for optimal performance
- Flutter blue UI styling (#02569B) with type breakdown
- CLI flags: --flutter for scan and clean commands

Expected disk recovery: 10-15GB typical, up to 50GB for heavy users

Files changed:
- pkg/types/types.go: Add TypeFlutter constant and IncludeFlutter field
- internal/scanner/flutter.go: NEW - Core Flutter scanning logic (150 lines)
- internal/scanner/scanner.go: Integrate Flutter into ScanAll()
- internal/ui/formatter.go: Add Flutter color and styling
- cmd/root/scan.go: Add --flutter flag
- cmd/root/clean.go: Add --flutter flag
- README.md: Document Flutter support

Follows KISS, YAGNI, DRY principles. All safety features inherited from existing scanners.
…imation, and version display

Implement three major TUI improvements to enhance user experience:

1. **Unified Status Bar Across All States**
   - Dynamic left/center/right layout with auto-width adjustment
   - State-specific information display (scanning progress, selected items, time tracking)
   - Real-time updates showing session duration and operation time
   - Consistent styling with primary purple color scheme

2. **Animated Scanning Progress**
   - StateScanning phase with package-manager-style loading animation
   - Category-by-category scanning display (✓ Complete, ⠋ Scanning..., ○ Pending)
   - 600ms interval progression through Xcode, Android, Node.js, Flutter
   - Smooth transition to StateSelecting after completion

3. **Version Display in Title**
   - Show application version in TUI title bar
   - Format: "🧹 Mac Dev Cleaner v{version}"
   - Pass version as parameter to avoid import cycles
   - Maintain [DRY-RUN] indicator when applicable

**Technical Implementation:**
- Added Model fields: startTime, deleteStart, scanningCategories, scanComplete, currentScanning, version
- Created renderStatusBar() method handling 5 different states
- Implemented tickScanning() for timed scanning progression
- Fixed import cycle by passing version as parameter through tui.Run()
- Updated both scan.go and clean.go to pass Version parameter

**Status Bar Sections:**
- Left: State indicator (🔍 Scanning, 📋 Select items, ⚠️ Confirm, 🗑️ Deleting, ✅ Done)
- Center: Context info (progress %, selected count, operation status)
- Right: Hints (keyboard shortcuts) or elapsed time

**Files Modified:**
- internal/tui/tui.go: Core TUI enhancements (150+ lines added)
- cmd/root/scan.go: Pass version to tui.Run()
- cmd/root/clean.go: Pass version to tui.Run()

Tested with real Flutter projects: Successfully scanned 21 items (32.4 GB) including 10 Flutter items (7.0 GB)
…anOptions` with new types, and enhance `scan` command documentation and TUI features.
Add comprehensive support for Docker and Java/Kotlin ecosystems:

Scanner Implementation:
- Create docker.go scanner with CLI integration (docker system df)
- Create java.go scanner for Maven/Gradle caches and build artifacts
- Handle Docker pseudo-paths (docker:images, docker:containers, etc.)
- Integrate all Phase 1 + Phase 2 scanners in parallel execution

Cleaner Enhancements:
- Add cleanDocker() method using Docker CLI commands (prune operations)
- Update safety validation to allow Docker pseudo-paths
- Support special cleanup for Docker resources via CLI

CLI Updates:
- Add flags: --python, --rust, --go, --homebrew, --docker, --java
- Update scan.go and clean.go with new ecosystem flags
- Update help documentation with all 10 ecosystems

TUI Improvements:
- Add category detection for Python, Rust, Go, Homebrew, Docker, Java
- Add color badges: Python (blue), Rust (orange), Go (cyan), Homebrew (yellow), Docker (blue), Java (orange)
- Update rescanItems() to use DefaultScanOptions() for all ecosystems

Total ecosystems supported: 10 (Xcode, Android, Node.js, Flutter, Python, Rust, Go, Homebrew, Docker, Java)
Potential disk reclaim: 30-100+ GB per developer
README.md:
- Add 6 new ecosystems to Overview (Python, Rust, Go, Homebrew, Docker, Java)
- Add scan examples for all 10 ecosystems
- Add detailed Scanned Directories sections for new ecosystems
- Update Roadmap to reflect TUI completion

TUI Help Screen:
- Add "Supported Ecosystems" section with emoji icons
- Display all 10 ecosystems in organized layout
- Add tip about disk space reclaim potential (30-100+ GB)
- Add 7 new scanner types: Flutter, Go, Python, Rust, Homebrew, Docker, Java/Kotlin
- Total 10 ecosystem scanners now supported (iOS, Android, Node + 7 new)
- Enhanced TUI with new scanner types
- All tests passing, 35 items scannable (43.2 GB)
- Version bumped to 1.0.1
- Documentation archived and updated
Merged feat/wails-v2-migration branch into dev-mvp, combining:
- Wails v2 GUI framework with React frontend
- Multi-ecosystem scanner support (Flutter, Python, Rust, Go, Homebrew, Docker, Java)
- ReactNative scanner from GUI branch

Resolved conflicts in internal/scanner/scanner.go by keeping all ecosystem scanners.
Auto-generated TypeScript bindings updated to reflect merged ScanOptions.
- Changed main path from ./main.go (Wails GUI) to ./cmd/dev-cleaner/main.go (CLI)
- This fixes v1.0.1 release which had no binaries due to build failure
- GUI entry point requires CGO and Wails build, not compatible with GoReleaser
- Future: Will create separate workflow for GUI releases
- Create INSTALL.md with comprehensive installation guide
- Add GitHub Actions workflow to auto-update docs on release
- Support 4 platforms: macOS ARM/Intel, Linux ARM/AMD64
- Auto-updates version numbers and download links
- Triggered on release publish or manual dispatch
@thanhdevapp thanhdevapp merged commit ec97c46 into main Dec 17, 2025
2 of 6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants