# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [0.2.0] - 2026-01-22 ### Changed - Refactored core traversal logic to a **single-pass, in-memory tree construction** algorithm. This visits every file exactly once, replacing the previous $O(N \times Depth)$ behavior with $O(N)$. - Switched default CSV output to use the `csv` crate for robust escaping (fixes issues with filenames containing commas). - Optimized JSON output to use zero-copy serialization, improving performance and memory usage. ### Added - Added `MANUAL.md` with comprehensive usage documentation. - Added comprehensive test suite (unit and integration tests). - Added performance benchmarks using `criterion`. ### Removed - Removed `walkdir` dependency (replaced by `ignore::WalkBuilder` for all traversal). - Removed `humansize` (consolidated to `byte-unit`). - Removed `chrono` (replaced with lightweight `time`). - Removed `atty` (unused). ## [0.1.0] - 2026-01-22 ### Added - Core directory traversal and size calculation logic. - Parallel processing using `rayon` for high performance. - Rich table output format using `comfy-table` with colored entries. - Recursive depth control via `-d`/`--depth`. - Minimum size filtering via `-m`/`--min-size`. - Multi-column sorting support (`--sort`). - Relative path display by default, with `-f`/`--path-full` override. - "Total size" summary with dual units (Binary/Decimal) and block counts. - Concurrency control via `-j`/`--threads`. - `.gitignore` and `.ignore` file support via `-i`/`--ignore`. - Multiple output formats: Text (Table), CSV, JSON (`--format`). - Save to file functionality with auto-naming (`--save`). - Shell completion generation (`--completions`).