Skip to content

Releases: dr8co/doppel

v1.0.0

10 Oct 14:12
v1.0.0
87bb7fa

Choose a tag to compare

Release Notes - Version 1.0.0

Overview

This major release represents a complete rewrite and modernization of the duplicate file finder, introducing a robust configuration system, enhanced performance through multi-stage hashing, and a comprehensive logging framework.

🎯 Major Features

Configuration Management System

  • Multi-source configuration support: Load settings from TOML, YAML, and JSON files, environment variables, and command-line flags with proper precedence
  • Validation and merging: Automatic validation of configuration options with intelligent deep-merging capabilities
  • Extensible providers: FileProvider and EnvProvider for flexible configuration sourcing

Advanced Hashing Strategy

  • Multi-stage hashing optimization: Implements quick hash (XXH3) for initial filtering followed by full hash (BLAKE3) for verification
  • Configurable hash algorithms: Support for XXH3 and BLAKE3 with reusable buffer pools
  • Performance improvements: Candidate filtration reduces unnecessary full hashing operations

Professional Logging Framework

  • Multiple output formats: Support for text, JSON, pretty (colored), and discard formats
  • Thread-safe implementation: Atomic operations and proper synchronization throughout
  • Flexible configuration: Adjustable log levels, output destinations (file/stdout/stderr), and formatting options
  • Source position tracking: Accurate caller reporting for debugging

Enhanced User Experience

  • Loading spinners: Visual feedback for long-running operations
  • Human-readable file sizes: Input and output support for KB, MB, GB units
  • Improved error messages: Context-rich error reporting throughout the application
  • Terminal theme adaptation: Color schemes automatically adapt to light/dark terminal themes

🚀 Performance Enhancements

  • Worker pool optimization: Limits workers to task count with proper context cancellation
  • Memory efficiency: Strategic slice clipping and buffer reuse patterns
  • Optimized I/O: Uses io.CopyBuffer and ReadAt for efficient file operations
  • Reduced allocations: Builder pools and style caching in formatters

🛠️ Technical Improvements

Code Quality

  • Comprehensive test coverage: Unit tests for all core packages (config, logger, finder, output, pathutil)
  • Race condition detection: GitHub Actions CI includes race detector
  • Linting configuration: golangci-lint integration for code quality enforcement
  • Package documentation: Complete package-level documentation for maintainability

Architecture Refactoring

  • Module separation: Clean separation of concerns (finder, filter, output, logger, config, pathutil)
  • Type safety: Introduction of FileInfo struct for improved data handling
  • Context propagation: Proper context handling throughout for cancellation and timeouts
  • Error handling: Uses errors.Is for robust error checking

Developer Experience

  • Modern Go practices: Range-over-func loops, pointer types in pools
  • Standardized naming: Consistent naming conventions across the codebase
  • Improved readability: Extracted helper functions and simplified complex logic

📝 Command-Line Interface

New Flags

  • --min-size, --max-size: Human-readable file size filters (e.g., "10MB", "1.5GB")
  • --output-format: Choose between pretty, json, yaml output formats
  • --output-file: Write results to file instead of stdout
  • --log-format: Configure logging output format
  • --log-level: Set logging verbosity
  • Exclusion flag aliases for improved usability

Enhanced Commands

  • find: Improved directory scanning with deduplication and subdirectory handling
  • preset: Configuration preset management with suggestions
  • Better command descriptions and help text

🔧 Configuration

Supported Formats

  • TOML: Primary configuration format
  • YAML config files
  • JSON config files
  • Environment variables: PREFIX-based environment variable support
  • Command-line flags: Override any configuration option

🎨 Output Formatting

Pretty Formatter

  • Color-coded output with lipgloss styling
  • Detailed statistics: file count, duplicate groups, wasted space, scan duration
  • Adaptive color schemes for terminal themes
  • Improved pluralization and formatting

JSON/YAML Formatters

  • Structured output for programmatic consumption
  • Complete duplicate group information
  • Metadata and statistics included

🔒 Security Improvements

  • Updated file/directory permissions (0o600 for files, 0o700 for directories)
  • Proper path validation and normalization
  • Safe handling of symbolic links and special files

📦 Dependencies

Updated

  • Go toolchain to stable version
  • Various GitHub Actions to latest versions
  • Core dependencies updated for security and performance

Added

  • github.com/pelletier/go-toml/v2: TOML configuration support
  • github.com/charmbracelet/lipgloss: Terminal styling
  • github.com/zeebo/xxh3: Fast hashing
  • github.com/zeebo/blake3: Secure hashing

🐛 Bug Fixes

  • Fixed source position handling in text and JSON log handlers
  • Corrected byte conversion unit (changed from 1024 to 1000 for human-readable output)
  • Improved numeric parsing error messages
  • Fixed frame caching in logging for accurate caller reporting

🗑️ Removed Features

  • --exclude-empty flag (empty files now always excluded for clarity)
  • Placeholder/unused code removed throughout

📚 Documentation

  • Comprehensive README updates with examples
  • Package-level documentation for all modules
  • Improved contribution guidelines
  • Terminal preview image added
  • Fixed table of contents links

🔄 Breaking Changes

  • Logger API completely redesigned
  • Output format structure changed
  • Some command-line flags renamed or removed

🙏 Acknowledgments

  • ImgBot for image optimization
  • Dependabot for automated dependency updates
  • GitHub Actions for CI/CD infrastructure

New Contributors


Full Changelog: v0.1.2...v1.0.0

Installation: Download the latest release for your platform or build from source

Upgrade Notes: This is a major version with breaking changes. Review the configuration format and CLI flag changes before upgrading.

v0.1.2

10 Oct 14:35
v0.1.2
9672277

Choose a tag to compare

v0.1.2 Pre-release
Pre-release

Pre-release 2

Full Changelog: v0.1.1...v0.1.2

v0.1.0

10 Oct 14:36
v0.1.0
ffe9f22

Choose a tag to compare

v0.1.0 Pre-release
Pre-release