rskiller 0.2.1

Find and clean Rust project build artifacts and caches with parallel processing
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
# rskiller

**rskiller** is a command-line tool inspired by [npkill](https://www.npmjs.com/package/npkill) but designed specifically for Rust projects. It helps you find and clean up Rust project build artifacts, target directories, and other cache files to free up disk space.

## Table of Contents

- [Features]#features
- [Installation]#installation
- [Usage]#usage
- [Configuration]#configuration
- [Command Line Options]#command-line-options
- [Safety Features]#safety-features
- [What Gets Cleaned]#what-gets-cleaned
- [Contributing]#contributing
- [License]#license
- [Roadmap]#roadmap

## Features

- **Find Rust Projects**: Automatically scans for `Cargo.toml` files to locate Rust projects
- **Clean Build Artifacts**: Remove `target` directories and their contents
- **Size Analysis**: Shows the disk space used by each project's build artifacts
- **Last Modified**: Displays when projects were last modified to help identify stale projects
- **Interactive Mode**: Navigate through projects with keyboard shortcuts
- **List Mode**: Non-interactive listing of projects and their sizes
- **Colorized Output**: Beautiful terminal interface with customizable colors
- **Configuration Files**: Support for TOML and JSON configuration files with flexible priority system
- **Parallel Processing**: Multi-threaded scanning and cleanup operations for improved performance
- **Safety Features**: Warns about active projects and system directories
- **Workspace Support**: Detects and handles Cargo workspaces
- **Cache Cleanup**: Optional Cargo registry and git cache cleanup

## Installation

### Pre-built Binaries (Recommended)

Download pre-compiled binaries from the [releases page](https://github.com/NakaSato/rskiller/releases):

#### macOS
```bash
# Download and install (Intel Mac)
curl -L https://github.com/NakaSato/rskiller/releases/latest/download/rskiller-macos-x64.tar.gz | tar xz
sudo mv rskiller /usr/local/bin/

# Download and install (Apple Silicon Mac)
curl -L https://github.com/NakaSato/rskiller/releases/latest/download/rskiller-macos-arm64.tar.gz | tar xz
sudo mv rskiller /usr/local/bin/

# Or using Homebrew (when available)
brew install rskiller
```

#### Linux
```bash
# Download and install (x86_64)
curl -L https://github.com/NakaSato/rskiller/releases/latest/download/rskiller-linux-x64.tar.gz | tar xz
sudo mv rskiller /usr/local/bin/

# Download and install (ARM64)
curl -L https://github.com/NakaSato/rskiller/releases/latest/download/rskiller-linux-arm64.tar.gz | tar xz
sudo mv rskiller /usr/local/bin/

# Or using package managers (when available)
# Debian/Ubuntu
wget https://github.com/NakaSato/rskiller/releases/latest/download/rskiller_amd64.deb
sudo dpkg -i rskiller_amd64.deb

# Arch Linux (AUR)
yay -S rskiller

# Fedora/RHEL
sudo rpm -i https://github.com/NakaSato/rskiller/releases/latest/download/rskiller-1.x86_64.rpm
```

#### Windows
```powershell
# Download and extract
Invoke-WebRequest -Uri "https://github.com/NakaSato/rskiller/releases/latest/download/rskiller-windows-x64.zip" -OutFile "rskiller.zip"
Expand-Archive -Path "rskiller.zip" -DestinationPath "C:\Program Files\rskiller"

# Add to PATH manually or using PowerShell
[Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\Program Files\rskiller", "Machine")

# Or using Chocolatey (when available)
choco install rskiller

# Or using Scoop
scoop install rskiller
```

#### Manual Installation
1. Go to [releases page]https://github.com/NakaSato/rskiller/releases
2. Download the appropriate binary for your platform
3. Extract the archive
4. Move the `rskiller` binary to a directory in your PATH:
   - **macOS/Linux**: `/usr/local/bin/` or `~/.local/bin/`
   - **Windows**: `C:\Program Files\rskiller\` (and add to PATH)

#### Verify Installation
```bash
rskiller --version
```

#### Shell Completions

After installation, you can enable shell completions:

```bash
# Bash (add to ~/.bashrc)
source <(rskiller --completion bash)

# Zsh (add to ~/.zshrc)
rskiller --completion zsh > ~/.zsh/_rskiller
autoload -U compinit && compinit

# Fish (add to config.fish)
rskiller --completion fish | source

# PowerShell (add to profile)
rskiller --completion powershell | Out-String | Invoke-Expression
```

### Quick Install Script

For automated installation, you can use this one-liner that detects your platform:

```bash
# Unix-like systems (macOS, Linux)
curl -sSL https://raw.githubusercontent.com/NakaSato/rskiller/main/install.sh | bash

# Or with wget
wget -qO- https://raw.githubusercontent.com/NakaSato/rskiller/main/install.sh | bash
```

```powershell
# Windows (PowerShell)
iwr -useb https://raw.githubusercontent.com/NakaSato/rskiller/main/install.ps1 | iex
```

The install script will:
- Detect your operating system and architecture
- Download the appropriate binary
- Install it to the correct location
- Add it to your PATH if needed

### From Source

```bash
git clone https://github.com/NakaSato/rskiller.git
cd rskiller
cargo install --path .
```

### Using Cargo

```bash
cargo install rskiller
```

### Building Your Own Binary

If you want to build an optimized binary yourself:

```bash
# Clone the repository
git clone https://github.com/NakaSato/rskiller.git
cd rskiller

# Build optimized release binary
cargo build --release

# The binary will be available at:
# ./target/release/rskiller (Unix)
# ./target/release/rskiller.exe (Windows)

# Install locally
cargo install --path .

# Or copy the binary manually to your preferred location
cp ./target/release/rskiller /usr/local/bin/  # Unix
# or
copy .\target\release\rskiller.exe C:\Windows\System32\  # Windows
```

#### Cross-compilation for Multiple Platforms

To build for different platforms:

```bash
# Install cross-compilation targets
rustup target add x86_64-pc-windows-gnu
rustup target add x86_64-apple-darwin
rustup target add aarch64-apple-darwin
rustup target add x86_64-unknown-linux-gnu
rustup target add aarch64-unknown-linux-gnu

# Build for specific targets
cargo build --release --target x86_64-pc-windows-gnu
cargo build --release --target x86_64-apple-darwin
cargo build --release --target aarch64-apple-darwin
cargo build --release --target x86_64-unknown-linux-gnu
cargo build --release --target aarch64-unknown-linux-gnu
```

## Usage

### Interactive Mode (Default)

```bash
rskiller
```

This opens an interactive terminal interface where you can:
- Navigate with `↑↓` or `j/k`
- Delete target directories with `Space` or `Del`
- Open project directories with `o`
- Refresh the list with `r`
- Delete all targets with `a`
- Quit with `q` or `Esc`

### List Mode

```bash
rskiller --list-only
```

### Common Options

```bash
# Start from a specific directory
rskiller --directory ~/projects

# Search from home directory (default behavior)
rskiller --full

# Show sizes in gigabytes
rskiller --gb

# Sort by different criteria
rskiller --sort size    # Default
rskiller --sort path
rskiller --sort last-mod

# Exclude directories
rskiller --exclude "target,node_modules"

# Include Cargo cache analysis
rskiller --include-cargo-cache

# Dry run (don't actually delete)
rskiller --dry-run

# Auto-delete all found target directories
rskiller --delete-all --dry-run  # Test first!
```

## Configuration

rskiller supports configuration files to set default options and avoid repetitive command line arguments. Configuration files are loaded in the following priority order (highest to lowest):

1. **Command line arguments** (highest priority)
2. **`./rskill.toml`** (project-local TOML config)
3. **`./.rskillrc`** (project-local JSON config)
4. **`~/.config/rskiller/rskill.toml`** (user TOML config)
5. **`~/rskill.toml`** (home directory TOML config)
6. **`~/.rskillrc`** (home directory JSON config)
7. **Default values** (lowest priority)

### Configuration File Formats

#### TOML Format (`rskill.toml`)

```toml
[search]
directory = "~/"
target = "target"
exclude = ["node_modules", "vendor", ".git"]
exclude_hidden = true
include_cargo_cache = false

[output]
sort = "size"  # size, path, last-mod
gb = false
color = "blue"  # blue, cyan, magenta, white, red, yellow
hide_errors = false

[behavior]
dry_run = false
delete_all = false
list_only = false
no_check_update = false

[safety]
confirm_large_deletions = true
large_deletion_threshold = "1GB"
backup_before_delete = false
max_concurrent_deletions = 3

[performance]
enable_parallel_scanning = true
max_parallel_threads = 0  # 0 = auto-detect
chunk_size = 1000
enable_parallel_cleanup = true

[filters]
min_age_days = 0
max_age_days = 365
min_size = "1MB"
ignore_active_projects = true
active_threshold_hours = 24
```

#### JSON Format (`.rskillrc`)

```json
{
  "search": {
    "directory": "~/",
    "target": "target",
    "exclude": ["node_modules", "vendor", ".git"],
    "excludeHidden": true,
    "includeCargoCache": false
  },
  "output": {
    "sort": "size",
    "gb": false,
    "color": "blue",
    "hideErrors": false
  },
  "behavior": {
    "dryRun": false,
    "deleteAll": false,
    "listOnly": false,
    "noCheckUpdate": false
  },
  "safety": {
    "confirmLargeDeletions": true,
    "largeDeletionThreshold": "1GB",
    "backupBeforeDelete": false,
    "maxConcurrentDeletions": 3
  },
  "performance": {
    "enableParallelScanning": true,
    "maxParallelThreads": 0,
    "chunkSize": 1000,
    "enableParallelCleanup": true
  },
  "filters": {
    "minAgeDays": 0,
    "maxAgeDays": 365,
    "minSize": "1MB",
    "ignoreActiveProjects": true,
    "activeThresholdHours": 24
  }
}
```

### Configuration Commands

```bash
# Generate sample configuration file
rskiller --init-config                    # Creates rskill.toml in current directory
rskiller --init-config --format json      # Creates .rskillrc in current directory
rskiller --init-config --global           # Creates user-level config

# Use specific configuration file
rskiller --config ./custom-config.toml

# Print effective configuration (after merging all sources)
rskiller --print-config

# Validate a configuration file
rskiller --validate-config ./rskill.toml

# Show configuration file search paths and which ones exist
rskiller --config-info
```

### Performance Configuration

The `[performance]` section allows you to optimize rskiller's scanning and cleanup operations for your system:

- **`enable_parallel_scanning`**: Enable multi-threaded scanning of directories (default: `true`)
- **`max_parallel_threads`**: Maximum number of threads to use. Set to `0` for auto-detection based on CPU cores (default: `0`)
- **`chunk_size`**: Number of projects to process per parallel chunk (default: `1000`)
- **`enable_parallel_cleanup`**: Enable parallel cleanup operations for future use (default: `true`)

**Example performance tuning:**
```toml
[performance]
enable_parallel_scanning = true
max_parallel_threads = 8        # Use 8 threads explicitly
chunk_size = 500               # Smaller chunks for better load balancing
enable_parallel_cleanup = true
```

**Note**: Parallel processing significantly improves performance when scanning large directory trees with many Rust projects. The optimal thread count depends on your CPU and storage type (SSDs benefit more than HDDs).

## Command Line Options

| Option | Description |
|--------|-------------|
| `-d, --directory <PATH>` | Directory to start searching from (default: home directory) |
| `-f, --full` | Search from user's home directory |
| `-t, --target <NAME>` | Target directory name to search for (default: "target") |
| `-s, --sort <TYPE>` | Sort by: size, path, or last-mod |
| `--gb` | Show sizes in gigabytes instead of megabytes |
| `-E, --exclude <DIRS>` | Exclude directories (comma-separated) |
| `-x, --exclude-hidden` | Exclude hidden directories |
| `-e, --hide-errors` | Hide error messages |
| `-D, --delete-all` | Automatically delete all found directories |
| `--dry-run` | Don't actually delete anything |
| `-l, --list-only` | Non-interactive mode, just list projects |
| `--include-cargo-cache` | Include Cargo registry and git cache analysis |
| `-c, --color <COLOR>` | Interface color: blue, cyan, magenta, white, red, yellow |
| `--config <FILE>` | Use specific configuration file |
| `--print-config` | Print effective configuration (after merging all sources) |
| `--init-config` | Generate sample configuration file |
| `--format <FORMAT>` | Configuration file format for --init-config (toml, json) |
| `--global` | Generate global user configuration instead of project-local |
| `--validate-config <FILE>` | Validate configuration file |
| `--config-info` | Show configuration file locations and precedence |

### Future Scheduling Options (Planned)

| Option | Description |
|--------|-------------|
| `--schedule <TYPE>` | Schedule automatic cleanup: daily, weekly, monthly, interval |
| `--time <HH:MM>` | Time for scheduled cleanup (24-hour format) |
| `--day <DAY>` | Day for weekly (monday-sunday) or monthly (1-31) cleanup |
| `--hours <N>` | Interval in hours for recurring cleanup |
| `--threshold <SIZE>` | Only run if total cleanable size exceeds threshold |
| `--schedule-config <FILE>` | Load schedule configuration from file |
| `--list-schedules` | List all configured schedules |
| `--remove-schedule <ID>` | Remove a scheduled cleanup task |

## Safety Features

rskiller includes several safety features to prevent accidental deletion of important files:

- **Active Project Detection**: Projects modified recently are marked as "Active"
- **System Directory Protection**: Avoids scanning system directories
- **Workspace Awareness**: Understands Cargo workspaces
- **Dry Run Mode**: Test deletions before actually removing files (use `--dry-run`)
- **Size Warnings**: Large deletions are highlighted
- **Confirmation Prompts**: For important operations (in interactive mode)
- **Configuration Validation**: Validates config files before use

## What Gets Cleaned

rskiller can clean the following Rust-related artifacts:

### Project Level
- `target/` directories (build outputs)
- `target/debug/` (debug builds)
- `target/release/` (release builds)
- `target/deps/` (compiled dependencies)
- Incremental compilation cache

### Global Level (with `--include-cargo-cache`)
- `~/.cargo/registry/` (crate registry cache)
- `~/.cargo/git/` (git dependency cache)

## Contributing

Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.

### Development Setup

```bash
# Clone the repository
git clone https://github.com/NakaSato/rskiller.git
cd rskiller

# Set up development environment
make dev-setup

# Run in development mode
cargo run

# Run with arguments
cargo run -- --directory ~/projects --list-only

# Run tests
make test

# Build release
make build
```

### Building and Releasing

The project uses GitHub Actions for automated building and releasing:

- **CI Pipeline**: Runs tests, clippy, formatting, and security audits on every push
- **Release Pipeline**: Creates multi-platform binaries when a new tag is pushed
- **Package Publishing**: Automatically updates package managers (Homebrew, etc.)

#### Manual Release Process

```bash
# Create a new release
make release VERSION=v0.3.0

# This will:
# 1. Update Cargo.toml version
# 2. Create a git tag
# 3. Push to GitHub
# 4. Trigger automated build and release
```

#### Package Managers

The release process automatically:
- **Creates binaries** for Linux (x64, ARM64), macOS (x64, ARM64), Windows (x64)
-**Updates Homebrew** formula via PR to homebrew-tap
-**Publishes to crates.io** for `cargo install`
-**Generates packages** (DEB, RPM) for Linux distributions
-**Chocolatey** and **Scoop** packages (manual PR required)
-**AUR package** for Arch Linux (manual upload)

#### Automated Publishing

The project includes automated publishing to crates.io:
- **Automatic Detection**: Publishes when version in `Cargo.toml` is bumped
- **Safety Checks**: Runs full test suite before publishing
- **Duplicate Prevention**: Skips if version already exists on crates.io
- **Smart Triggers**: Only triggers on relevant file changes (src/, Cargo.toml, etc.)

See [docs/AUTO_PUBLISH.md](docs/AUTO_PUBLISH.md) for detailed setup instructions.

#### Development Tools

```bash
# Security audit
make check-security

# Generate shell completions
make completions

# Cross-compile for multiple platforms
make cross-compile

# Create distribution packages
make package

# View documentation
make docs
```

## License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

## Acknowledgments

- Inspired by [npkill]https://www.npmjs.com/package/npkill for Node.js projects
- Built with the amazing Rust ecosystem
- Thanks to all contributors and users

## Roadmap

### Core Features
- [ ] **Advanced Filtering**: Filter by project age, size, or activity
- [ ] **Batch Operations**: Select multiple projects for batch deletion
- [ ] **Project Templates**: Detect and handle different project types (bin, lib, workspace)
- [ ] **Smart Cleanup**: Analyze dependencies and suggest cleaning unused crates
- [ ] **Regex Support**: Use regex patterns for custom target directory names
- [ ] **Symlink Handling**: Better support for symbolic links and junction points

### User Experience
- [x] **Configuration File**: Support for `.rskillrc` or `rskill.toml` config files with flexible priority system
- [ ] **Themes**: Multiple color themes and customizable UI layouts
- [ ] **Progress Indicators**: Real-time progress bars for large operations
- [ ] **Undo Operations**: Ability to restore recently deleted target directories
- [ ] **Search/Filter**: Real-time search and filtering in interactive mode
- [ ] **Bookmarks**: Save and quick-access to frequently cleaned directories

### TUI (Terminal User Interface)
- [ ] **Modern TUI Framework**: Migrate from basic crossterm to advanced TUI framework (ratatui/tui-rs)
- [ ] **Multi-Panel Layout**: Split-screen view with project list, details, and actions
- [ ] **Real-time Monitoring**: Live disk usage updates and project activity tracking
- [ ] **Advanced Navigation**:
  - [ ] Tree view for nested project hierarchies
  - [ ] Breadcrumb navigation for deep directory structures
  - [ ] Quick jump to bookmarked directories
  - [ ] Fuzzy search with instant filtering
- [ ] **Interactive Widgets**:
  - [ ] Progress bars for scanning and cleanup operations
  - [ ] Sortable tables with column headers
  - [ ] Interactive charts for size distribution
  - [ ] Checkbox selection for batch operations
- [ ] **Enhanced Project Details**:
  - [ ] Dependency tree visualization
  - [ ] Build artifact breakdown (debug/release/tests)
  - [ ] Git status integration (branch, uncommitted changes)
  - [ ] Last build time and compiler version
- [ ] **Smart Panels**:
  - [ ] Project overview panel with key metrics
  - [ ] File browser for target directory contents
  - [ ] Cleanup confirmation dialog with impact preview
  - [ ] Help panel with context-sensitive shortcuts
- [ ] **Customizable Interface**:
  - [ ] Configurable keybindings and shortcuts
  - [ ] Theme system with multiple color schemes
  - [ ] Layout presets (compact, detailed, developer)
  - [ ] Font and terminal compatibility optimization
- [ ] **Advanced Interactions**:
  - [ ] Drag-and-drop project selection
  - [ ] Context menus for project actions
  - [ ] Modal dialogs for complex operations
  - [ ] Clipboard integration for paths and commands

### Statistics & Reporting
- [ ] **Historical Data**: Track cleanup history and disk space trends
- [ ] **Cleanup Reports**: Generate detailed reports of cleaned projects
- [ ] **Size Analytics**: Visualize disk usage patterns and recommendations
- [ ] **Project Health**: Score projects based on activity and cleanliness
- [ ] **Export Data**: Export project lists and statistics to CSV/JSON

### Integration & Automation
- [ ] **IDE Plugins**: VS Code, IntelliJ IDEA, and Vim/Neovim extensions
- [ ] **Git Hooks**: Automatic cleanup on branch switching or commits
- [ ] **CI/CD Integration**: Cleanup commands for continuous integration
- [ ] **Scheduled Cleanup**: Cron-like scheduling for automatic maintenance
  - [ ] Daily cleanup at specified time (e.g., 2:00 AM)
  - [ ] Weekly cleanup on specific days (e.g., Sunday midnight)
  - [ ] Monthly cleanup on first day of month
  - [ ] Custom interval scheduling (every N days/hours)
  - [ ] Conditional scheduling (only if disk usage > threshold)
  - [ ] Schedule configuration via config file or CLI
  - [ ] Integration with system schedulers (cron, Task Scheduler, launchd)
- [ ] **Docker Support**: Cleanup containerized Rust development environments

### Cross-Platform & Performance
- [ ] **Windows Improvements**: Better Windows support and testing
- [ ] **Network Drives**: Support for network-mounted project directories
- [x] **Parallel Processing**: Multi-threaded scanning and cleanup operations
- [ ] **Memory Optimization**: Reduce memory usage for large project collections
- [ ] **Incremental Scanning**: Only rescan changed directories

### Advanced Features
- [ ] **Workspace Intelligence**: Detect and respect Cargo workspace hierarchies
- [ ] **Dependency Analysis**: Show which projects share dependencies
- [ ] **Build Profile Awareness**: Distinguish between debug/release/custom profiles
- [ ] **Cache Management**: Smart handling of incremental compilation caches
- [ ] **Project Migration**: Help migrate projects between Rust versions
- [ ] **Audit Mode**: Check for security issues in cached dependencies

### Community & Ecosystem
- [ ] **Plugin System**: Allow community-developed extensions
- [ ] **Package Manager Integration**: Work with alternative package managers
- [ ] **Cloud Storage**: Backup/restore configurations across machines
- [ ] **Team Sharing**: Share cleanup policies across development teams
- [ ] **Metrics Dashboard**: Web-based dashboard for team cleanup statistics

## TUI Implementation Roadmap

### Phase 1: Foundation (v0.3.0) - Q4 2025
- [ ] **Framework Migration**: Replace crossterm with ratatui for advanced TUI capabilities
- [ ] **Basic Multi-Panel Layout**: Implement split-screen with project list and details
- [ ] **Enhanced Navigation**: Tree view and improved keyboard shortcuts
- [ ] **Progress Indicators**: Real-time progress bars for operations

### Phase 2: Interactive Features (v0.4.0) - Q1 2026
- [ ] **Advanced Widgets**: Sortable tables, interactive charts, checkbox selection
- [ ] **Smart Panels**: Project overview, file browser, confirmation dialogs
- [ ] **Search and Filter**: Fuzzy search with instant filtering
- [ ] **Theme System**: Multiple color schemes and layout presets

### Phase 3: Intelligence (v0.5.0) - Q2 2026
- [ ] **Git Integration**: Show branch status and uncommitted changes
- [ ] **Dependency Visualization**: Interactive dependency tree viewer
- [ ] **Build Analysis**: Detailed breakdown of build artifacts and profiles
- [ ] **Real-time Monitoring**: Live updates of disk usage and project activity

### Phase 4: Advanced UX (v0.6.0) - Q3 2026
- [ ] **Customization**: Configurable keybindings and interface layouts
- [ ] **Context Awareness**: Smart suggestions based on project patterns
- [ ] **Batch Operations**: Advanced multi-project selection and operations
- [ ] **Accessibility**: Screen reader support and high contrast themes

### Dependencies for TUI Implementation

**Required Crates:**
```toml
ratatui = "0.24"           # Modern TUI framework
crossterm = "0.27"         # Terminal manipulation (already included)
tui-tree-widget = "0.17"   # Tree view component
fuzzy-matcher = "0.3"      # Fuzzy search functionality
git2 = "0.18"             # Git integration
serde_json = "1.0"        # Enhanced config serialization
tokio = { version = "1.0", features = ["full"] }  # Async runtime (already included)
```

**Development Tools:**
- **Prototyping**: Use `tui-logger` for debug overlays during development
- **Testing**: Terminal automation testing with `expectrl`
- **Documentation**: Interactive demos using `asciinema` recordings

---

**Happy cleaning! Keep your Rust projects lean and your disk space free!**