Skip to content

Releases: bberka/FileOrganizerNET

v2.0.0

Choose a tag to compare

@bberka bberka released this 20 Aug 12:27

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-file option 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 the organize command. 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

Choose a tag to compare

@bberka bberka released this 15 Aug 14:34

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 of Rules. 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 explicit Action to perform on matching files:

    • Move: Relocates the file to the DestinationFolder. (This remains the default if no action is specified).
    • Copy: Creates a duplicate of the file in the DestinationFolder, leaving the original untouched.
    • Delete: Permanently removes the file from the system. (Use with caution).
  • init Command for Configuration Generation:
    A new init command allows users to generate a comprehensive default config.json file. This simplifies getting started and provides a template for customization. Use FileOrganizerNET init or FileOrganizerNET init --force to overwrite existing files.

  • validate Command for Configuration Verification:
    A new validate command checks the syntax and structure of a config.json file. 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

Choose a tag to compare

@bberka bberka released this 15 Aug 12:01

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-run flag 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

Choose a tag to compare

@bberka bberka released this 15 Aug 03:31

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.pdf already exists, a new file will be automatically renamed to report (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

  1. Download the appropriate package for your operating system from the assets below.

  2. Unzip the package.

  3. Open a terminal or command prompt in the unzipped folder.

  4. Run the command:

    # On Windows
    .\FileOrganizerNET.exe organize "C:\Path\To\Your\Downloads"
    
    # On macOS / Linux
    ./FileOrganizerNET organize "/path/to/your/downloads"
  5. You can customize the sorting rules by editing the included config.json file.