Skip to content

v2.0.0

Latest

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 |