# 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 ### Added - **Comparison Mode**: Added `--compare` flag to display total size vs. non-ignored size (respecting `.gitignore`). - **Unit Control**: Added `--units ` flag to toggle standard IEC (MiB) vs. SI (MB) unit systems. - **Precision Control**: Added `--precision ` to control decimal places in output (default: 2). - **Physical vs. Logical Distinction**: Explicitly show **Apparent Size** (logical) and **Disk Usage** (actual blocks consumed) in all output formats. - **Release Assets**: - Project **Makefile** for easy system-wide installation via `make install`. - Universal **`scripts/release.sh`** for generating optimized binaries, man pages, shell completions, and `.deb` packages. - Official **man page** (`sized.1`) for standard Unix documentation documentation. - Updated **Homebrew Formula** for tap-based distribution. - **Improved Errors**: Graceful handling for inaccessible directories (e.g., system protected folders) with "Access Denied" status. - Added a full user guide in `MANUAL.md`. ### Changed - **Performance Overhaul**: - Replaced serial/par-bridge traversal with `ignore::WalkParallel` for true multi-threaded directory scanning. - Implemented **dynamic thread allocation** to balance CPU load between directory breadth and depth. - Refactored core logic to a **single-pass, in-memory tree construction** algorithm ($O(N)$ complexity). - **Architecture**: Refactored the project into a usable Rust library (`src/lib.rs`) and a thin CLI wrapper (`src/main.rs`). - **Dependencies**: - Switched to `byte-unit` for more flexible and accurate unit formatting. - Replaced `walkdir` with `ignore` for faster traversal and native `.gitignore` support. - Replaced `atty` and `chrono` with standard library features and the lightweight `time` crate. - **Serialization**: Optimized JSON and CSV output for zero-copy performance and detailed metric reporting. ### Fixed - Resolved performance bottleneck in extremely deep directory structures. - Fixed inconsistent total size reporting when `.gitignore` was active. ### Removed - Dependency on `walkdir`, `humansize`, `chrono`, and `atty`. ## [0.1.0] - 2026-01-22 ### Added - Initial release with core directory traversal and size calculation. - Basic parallel processing using `rayon`. - Rich table output via `comfy-table`. - Basic filtering (`--min-size`, `--depth`) and sorting (`--sort`). - Output format support: Text, CSV, and JSON. - Save to file and shell completion generation.