Fundamental stability and safety mechanisms.
- Protected Paths
[Priority: Critical]- Goal: Prevent Iris from sorting inside critical system/code directories.
- Expand
PROTECTED_PATHSlist. - Logic to ignore sort if folder contains identifiers like
.git,.idea.
- Dry Run / Simulation
[Priority: Critical]- Goal: Allow users to preview actions without making changes.
- Implement
--dry-runflag. - Print "Would move X to Y" for all operations.
- Operation Logging
[Priority: High]- Goal: Audit trail for user actions.
- Implement local log file (e.g.,
~/.iris/history.log). - Log timestamp, source, destination, and rule used.
Settings management and flexibility.
- Presets Path Refactoring
[Priority: Critical]- Goal: Reduce
iris.tomlcomplexity (currently ~400 lines). - Implement
presets_pathoption. - Move default presets out of
iris.tomlto external files inpresets_path.
- Goal: Reduce
- Custom Target Paths
[Priority: Medium]- Add
customoption for target paths. - Allow
iris sortto use custom target without explicit path arg.
- Add
- Conflict Resolution Strategy
[Priority: High]- Goal: Customized handling of file collisions.
- Add
on_conflictoption in config. - Supported modes:
skip,overwrite,rename(append suffix).
Background processes and user interaction flows.
- Watcher Command
[Priority: High]- Goal: Continuous background sorting with minimal overhead.
- Implement
iris watch <folder>(e.g.,iris watch ~/Downloads).
- Undo Command
[Priority: Low/Future]-
iris undoto reverse last operation.
-
Automated file maintenance and archiving strategies.
- Duplicate Detection
[Priority: High]- Goal: Identify and handle duplicate files.
- Implement hash-based duplicate detection
- Add
iris cleanup duplicatescommand. - Config for duplicate handling modes:
delete,move-to-folder,keep-newest,keep-largest,interactive. - Config for duplicate handling criteria: keep
oldest,newest.
- Old File Cleanup
[Priority: High]- Goal: Automatically remove or archive files based on age.
- Add
age_thresholdconfig option (e.g.,30d,6m,1y). - Implement
iris cleanup oldcommand. - Config for old file cleanup actions:
delete,archive,move-to-trash.
- Archive Command
[Priority: Medium]- Goal: Compress and archive old or infrequently accessed files.
- Implement
iris archive <folder>command. - Support compression formats:
.zip,.tar.gz,.tar.zst,.7z. - Config for archive naming: timestamp-based or custom pattern.
- Config for archive deletion: delete originals after successful archiving.
- Config for archive date ranges (e.g., archive all files from 2023).
- Temporary File Cleanup
[Priority: Medium]- Goal: Remove system and application temporary files.
- Detect common temp file patterns (
.tmp,.cache,~$*, etc.). - Add
iris cleanup tempcommand. - Config for safe deletion with whitelist/blacklist (only delete files matching patterns in whitelist while omitting patterns in blacklist).
- Empty Directory Removal
[Priority: Low]- Goal: Clean up empty folders after sorting operations.
- Config for empty directory removal.
- Implement
iris cleanup emptycommand. - Recursive empty directory detection config flag.
- Archive Rotation
[Priority: Low/Future]- Goal: Maintain archive history with automatic rotation.
- Config for archive rotation interval (e.g.,
7d,1m,1y). - Config for archive rotation retention policy (e.g.,
keep_last_n,keep_within_time_window). - Config for automatic deletion of old archives based on retention policy.
Rules for how and what to sort.
- File Naming System
[Priority: High]- Global switch:
rename_files = true. -
sanitize_names = true(remove invalid chars). -
rename_methodstyles:lower,upper,title,camel,pascal,snake,kebab. -
space_replacement(optional).
- Global switch:
- Exclusions
[Priority: High]-
file_exclusionslist (regex support). -
directory_exclusionslist (regex support).
-
- Filter Conditions
[Priority: Medium]- Filename patterns:
contains,!contains,regex. - Size filtering:
min_file_size,max_file_size.
- Filename patterns:
- Advanced Sorting Options
[Priority: Future]- Sort by: Time Created, Time Modified, File Size, File Type, File Owner.
- Smart Media Sorting
[Priority: Future]- Integration with external APIs (MusicBrainz, TMDB) for metadata-based sorting.