Releases: bberka/FileOrganizerNET
Release list
v2.0.0
Release v2.0.0 - Major Overhaul: Duplicate Detection & Refactored Core
This is a major release for FileOrganizerNET, introducing powerful new file management capabilities and a significant internal refactor to enhance testability, maintainability, and extensibility. This update includes a breaking change to the command-line interface.
BREAKING CHANGE: Logging Configuration
The --log-file command-line option has been removed.
- Reasoning: To streamline usage and ensure consistent logging, FileOrganizerNET now automatically writes all log output to
organizer.log(located next to the executable) by default, in addition to printing to the console. - Impact: Any existing automation scripts or commands that utilize the
--log-fileoption will need to be updated to remove this argument.
Added Features
- Duplicate File Detection and Deletion:
A new command-line option,--check-duplicates, is now available with theorganizecommand. When enabled, FileOrganizerNET will perform an additional pass after initial organization to:- Scan all managed destination folders (e.g., Photos, Documents, etc.).
- Identify files with identical content using fast XXHash checksums.
- Automatically delete all but one copy of each duplicated file, helping to reclaim valuable disk space.
Internal Enhancements & Quality
- Comprehensive Test Suite: The entire application now boasts an extensive suite of unit tests, ensuring reliability and correctness across all features and edge cases. Tests verify structured outcomes rather than relying on log parsing.
- Structured Results: Core operations now return detailed result objects (e.g.,
OrganizationResult), providing programmatic access to outcomes, statistics, and encountered errors. - Modular Design: The codebase has been refactored with clearer interfaces (
IFileOrganizer,IFileLogger,IConfigLoader) and separated concerns (RuleMatcher,FileSystemActions), making it more maintainable and extensible.
| Framework-Dependent |
v1.0.0
Release v1.0.0 - Major Refactor: Rule-Based Organization & Advanced Control
This release represents a significant architectural shift, transforming FileOrganizerNET from an extension-based sorter into a highly configurable and intelligent file management utility. The core logic has been re-engineered to support advanced, rule-driven automation.
BREAKING CHANGE: Configuration File Format
The structure of the config.json file has been completely revamped. This version is not backward-compatible with configurations from previous versions (0.x.x).
Users must update their existing config.json files to the new Rules array format.
Please refer to the updated README.md's "Configuration" section for detailed examples and migration guidance.
Added Features
-
Rule-Based Organization Engine:
The core file processing logic now uses an ordered list ofRules. The application evaluates files against these rules sequentially, applying the first rule that a file matches. This provides precise control over file placement. -
Advanced Rule Conditions:
Rules can now define sophisticated criteria beyond just file extensions. New conditions include:fileNameContains: Match files based on keywords found within their name.olderThanDays: Target files older than a specified number of days (based on last write time).minSizeMB: Identify files larger than a specified size in megabytes.
-
Configurable File Actions:
Each rule can now specify an explicitActionto perform on matching files:Move: Relocates the file to theDestinationFolder. (This remains the default if no action is specified).Copy: Creates a duplicate of the file in theDestinationFolder, leaving the original untouched.Delete: Permanently removes the file from the system. (Use with caution).
-
initCommand for Configuration Generation:
A newinitcommand allows users to generate a comprehensive defaultconfig.jsonfile. This simplifies getting started and provides a template for customization. UseFileOrganizerNET initorFileOrganizerNET init --forceto overwrite existing files. -
validateCommand for Configuration Verification:
A newvalidatecommand checks the syntax and structure of aconfig.jsonfile. This helps users ensure their custom rules are correctly formatted before initiating an organization run, preventing unexpected errors.
Quality Improvements
- Expanded Unit Test Suite: The test coverage has been significantly enhanced to ensure the reliability and correctness of the new rule-based engine, advanced conditions, and configurable actions across various scenarios.
v0.2.0
Release v0.2.0
This release introduces several powerful features focused on user safety, control, and deeper organization capabilities. The internal stability of the application has also been significantly improved with the addition of a comprehensive test suite.
Added
-
Dry Run Mode
A--dry-runflag has been added to simulate the organization process. When used, the application will print all proposed file and folder moves to the console without making any actual changes to the filesystem. This allows for safe previewing of an organization run before committing to any changes. -
Recursive Processing
The new--recursive(-r) flag enables the organizer to process files within all subdirectories of the target path. This allows for cleaning up deeply nested folder structures in a single command. Files already located in a correctly named category folder will be skipped. -
File Logging
A--log-file(-l) option is now available to write a detailed log of all operations to a specified file. This provides a persistent record of all actions taken during an organization session, which is useful for auditing or troubleshooting. -
Internal Quality Improvements
A comprehensive suite of unit tests has been implemented to ensure the reliability and stability of all features, both new and existing.
v0.1.0
Release v0.1.0 - Initial Release
This is the first public release of the File Organizer CLI, a powerful and configurable tool to bring order to your directories!
This initial version provides all the core functionality needed to automatically sort files and folders based on a simple, user-defined config.json.
Features
- Extensible Configuration: Define exactly which file extensions go into which folders using
config.json. - Smart Folder Creation: Category folders are created on-demand only when a file needs to be moved into them.
- Automatic Name Collision Handling: If
report.pdfalready exists, a new file will be automatically renamed toreport (1).pdf. - Subfolder Organization: Moves all existing subdirectories into a single, specified folder to declutter the main view.
- Cross-Platform: Builds are provided for Windows, macOS (Intel & Apple Silicon), and Linux, all powered by .NET 9.
How to Use
-
Download the appropriate package for your operating system from the assets below.
-
Unzip the package.
-
Open a terminal or command prompt in the unzipped folder.
-
Run the command:
# On Windows .\FileOrganizerNET.exe organize "C:\Path\To\Your\Downloads" # On macOS / Linux ./FileOrganizerNET organize "/path/to/your/downloads"
-
You can customize the sorting rules by editing the included
config.jsonfile.