···2233All notable changes to this project will be documented in this file.
4455+## [0.4.0] - 2026-04-25
66+77+### Bug Fixes
88+99+- Trigger publish workflow explicitly from release-plz
1010+- Preserve per-stage config via Compressor::clone_boxed
1111+- Follow symlinks in container pre-walk to match walker
1212+- Enable ZIP64 to support archives with entries >4GiB
1313+- Avoid panics on non-UTF8 filenames
1414+- Show known total on pipeline compression bar
1515+1616+### Documentation
1717+1818+- List brotli, snappy, and lzma in supported formats
1919+2020+### Features
2121+2222+- Add brotli compression support
2323+- Add snappy framed compression support
2424+- Add legacy LZMA1 compression support
2525+- Recognize .tgz/.tbz/.tbz2/.txz/.tzst shortcut extensions
2626+- Add --force / -f to overwrite existing output
2727+- Generate shell completions and man page
2828+- Add --list / -l to print archive contents
2929+- Add 7zip backend with sevenz-rust2
3030+- Add --level compression level support
3131+- Add --level compression level support
3232+- Add progress bars with shared pre-walk helper
3333+- Add progress bars during compression
3434+- Add progress bars during extraction
3535+- Add progress bars during compression
3636+- Add progress bars during extraction
3737+- Install shell completions and document usage
3838+- Accept compound format prefix like `tar.gz` as first arg
3939+- Preserve shortcut format string in default output name
4040+- Add --append flag for growing tar and zip archives in place
4141+4242+### Miscellaneous Tasks
4343+4444+- Declare MSRV of 1.88 in Cargo.toml
4545+- Validate aarch64 in nix.yml and attach static binaries to releases
4646+- Pin all GitHub Actions to commit SHAs
4747+4848+### Refactor
4949+5050+- Extract shared I/O helpers for single-stream codecs
5151+- Extract job inference into its own module
5252+- Add LevelArgs::resolve to trim backend constructors
5353+- Extract mechanical helpers from get_job
5454+- Linearize output/action/compressor resolution in get_job
5555+- Eliminate Action::Unknown in favor of Option<Action>
5656+- Gate behind cfg(test) to exclude from release binary
5757+- Unify single + shortcut extension lookup in chain_from_ext
5858+- Collect compressors directly instead of round-tripping names
5959+- Replace wildcard utils imports with explicit ones
6060+- Drop redundant overrides and dead-code allows
6161+- Consolidate stream-codec scaffolding via prepare_output/copy_stream
6262+- Share threaded stage driver across compress/extract/list
6363+- Use inc-based ProgressReader for shared bars
6464+- Move clone_boxed to blanket helper trait
6565+- Collapse --decompress into --extract alias
6666+- Replace non-test unwraps with proper error handling
6767+6868+### Styling
6969+7070+- Rename ExtractedTarget variants to CamelCase
7171+- Unify error message prefixes across job and backends
7272+- Apply cargo fmt
7373+7474+### Testing
7575+7676+- Add lzma, brotli, tar, zip, and tar.\* pipeline interop tests
7777+- Add tar.{bz2,zst,lzma,br,lz4,sz} roundtrip tests
7878+- Add snappy and tar.{lzma,br,lz4,sz} interop tests
7979+580## [0.3.0] - 2026-03-29
681782### Bug Fixes