this repo has no description
1# Changelog
2
3All notable changes to this project will be documented in this file.
4
5## [0.4.0] - 2026-04-25
6
7### Bug Fixes
8
9- Trigger publish workflow explicitly from release-plz
10- Preserve per-stage config via Compressor::clone_boxed
11- Follow symlinks in container pre-walk to match walker
12- Enable ZIP64 to support archives with entries >4GiB
13- Avoid panics on non-UTF8 filenames
14- Show known total on pipeline compression bar
15
16### Documentation
17
18- List brotli, snappy, and lzma in supported formats
19
20### Features
21
22- Add brotli compression support
23- Add snappy framed compression support
24- Add legacy LZMA1 compression support
25- Recognize .tgz/.tbz/.tbz2/.txz/.tzst shortcut extensions
26- Add --force / -f to overwrite existing output
27- Generate shell completions and man page
28- Add --list / -l to print archive contents
29- Add 7zip backend with sevenz-rust2
30- Add --level compression level support
31- Add --level compression level support
32- Add progress bars with shared pre-walk helper
33- Add progress bars during compression
34- Add progress bars during extraction
35- Add progress bars during compression
36- Add progress bars during extraction
37- Install shell completions and document usage
38- Accept compound format prefix like `tar.gz` as first arg
39- Preserve shortcut format string in default output name
40- Add --append flag for growing tar and zip archives in place
41
42### Miscellaneous Tasks
43
44- Declare MSRV of 1.88 in Cargo.toml
45- Validate aarch64 in nix.yml and attach static binaries to releases
46- Pin all GitHub Actions to commit SHAs
47
48### Refactor
49
50- Extract shared I/O helpers for single-stream codecs
51- Extract job inference into its own module
52- Add LevelArgs::resolve to trim backend constructors
53- Extract mechanical helpers from get_job
54- Linearize output/action/compressor resolution in get_job
55- Eliminate Action::Unknown in favor of Option<Action>
56- Gate behind cfg(test) to exclude from release binary
57- Unify single + shortcut extension lookup in chain_from_ext
58- Collect compressors directly instead of round-tripping names
59- Replace wildcard utils imports with explicit ones
60- Drop redundant overrides and dead-code allows
61- Consolidate stream-codec scaffolding via prepare_output/copy_stream
62- Share threaded stage driver across compress/extract/list
63- Use inc-based ProgressReader for shared bars
64- Move clone_boxed to blanket helper trait
65- Collapse --decompress into --extract alias
66- Replace non-test unwraps with proper error handling
67
68### Styling
69
70- Rename ExtractedTarget variants to CamelCase
71- Unify error message prefixes across job and backends
72- Apply cargo fmt
73
74### Testing
75
76- Add lzma, brotli, tar, zip, and tar.\* pipeline interop tests
77- Add tar.{bz2,zst,lzma,br,lz4,sz} roundtrip tests
78- Add snappy and tar.{lzma,br,lz4,sz} interop tests
79
80## [0.3.0] - 2026-03-29
81
82### Bug Fixes
83
84- Improve the compression level helpers
85- Disable progress bar in test.sh
86- Replace panics with proper Writer handling in all backends
87- Use correct changelog_config field in release-plz config
88- Correct snapcore/action-publish SHA pin
89- Match release-plz branch name prefix in PR detection
90- Fetch full git history for release-plz changelog generation
91
92### Documentation
93
94- Add installation instructions
95- Update README with badges
96- Note that compression libraries are statically compiled
97
98### Features
99
100- Adding support for unencrypted zip files
101- Improve tar with pipe support and more
102- Add progress bar to gzip
103- Add zstd support
104- Add lz4 support
105- Add static build for bzip2
106- Add multi-level compression support
107
108### Miscellaneous Tasks
109
110- Add code coverage uploading
111- Improving code coverage infrastructure
112- Fixing code coverage upload
113- Fixing typo in taskfile
114- Overhaul of flake to use flake-parts
115- Loosen cargo dep restrictions
116- Update nix deps
117- Taskfile cleanup
118- Remove unnecessary nixpkgs from flake-parts
119- Iterate on the flake
120- Add vscode files to gitignore
121- Iterate on the taskfile
122- Stop building tests in nix build .#cmprss
123- Fiddle with the nix build and ci
124- Pin versions of actions helpers
125- Add FUNDING.yml
126- Setting up Github<->Codeberg syncing
127- Add task clippy:fix
128- Run all Tasks even if no files have changed
129- Bump nix flake deps
130- Bump cargo deps
131- Taskfile fixups
132- Fix treefmt by pointing directly to a rustfmt binary
133- Adding pkg-config for updated cargo deps
134- Remove unused KNOWN_EXTENSIONS, replace unreachable fallbacks with asserts
135- Statically link xz/lzma, update README
136- Bump nix flake deps
137- Bump cargo deps
138- Add release profile optimizations and dev dep opt-level
139- Replace cargo-audit with cargo-deny for comprehensive dependency checks
140- Add typos and shfmt to treefmt
141- Add shellcheck, actionlint, statix, deadnix as nix checks
142- Switch from Taskfile (go-task) to justfile
143- Relicense from MIT to AGPL-3.0-or-later
144- Add fully static musl build via nix
145- Add snapcraft packaging and CI
146- Add missing metadata fields to snap
147- Migrate release flow to release-plz with publish workflow
148- Add git-cliff config for release-plz changelog generation
149
150### Refactor
151
152- Consolidate compression backends into dedicated module
153- Consolidate compressor lookup into single registry
154- Unify single-level and multi-level compressor selection
155- Rename MultiLevelCompressor to Pipeline and update module/comments
156- Use io::Error::other() and eliminate unwrap() calls
157- Migrate error handling from io::Error to anyhow
158
159### Styling
160
161- Pin rustfmt edition to 2024, simplify treefmt rustfmt config
162
163### Testing
164
165- Move comparison tests into Rust integration suite
166- Move the tar comparison tests into Rust
167- Add unit tests for pipeline extension scanning and trait methods
168
169## [0.2.0] - 2024-02-27
170
171### Bug Fixes
172
173- Remove leftover comment
174- Flush xz encoder/decoder to show correct output size
175- Error correction for 0 sized chunks
176- Restrict compression levels of bzip2
177
178### Documentation
179
180- Add categories to Cargo.toml
181- Update the crate description
182
183### Features
184
185- Add bzip2 support
186- Add shortcut for cargo audit
187- Switch out just for go-task
188- Pretty print the error messages
189- Add a progress bar to xz
190- Add argument to control progress bar
191- Add an option to set the chunk size for monitoring progress
192- Allow compression levels 'none' 'fast' 'best'
193- Add progress bar to bzip2
194- Allow `decompress` as an alias of `extract`
195- Add the magic cli
196
197### Miscellaneous Tasks
198
199- Overcomplicate the taskfile
200- Add git-cliff to generate changelogs
201- Release v0.2.0
202
203### Refactor
204
205- Minor changes to the utils
206- Move the args and parsing logic into compressor modules
207
208### Styling
209
210- Fix clippy warnings
211
212### Testing
213
214- Add tests for input parsing
215- Add a test script against the official tools
216
217### Build
218
219- Add a commit helper script
220
221## [0.1.0] - 2023-12-09
222
223### Bug Fixes
224
225- Set name for devshell
226- Remove unused gzip::EXT
227- Removing unnecessary comments
228- Fixing bug while checking input extension
229- Cleaning up some comments and naming
230- Improve error message when inferring output name
231- Improve output identification
232- Use first file's name to generate output filename
233- Default extracted filename for gzip
234
235### Documentation
236
237- Update package description
238- Add shorthand alias for gzip
239- Add usage examples
240- Cleanup the README
241- Add contributing guide
242- Add note about test coverage
243- Renaming my GH account to arcuru
244- Update description of gzip roundtrip tests
245- Cleanup of the README
246
247### Features
248
249- Adding tar extraction
250- Use subcommands
251- Make tar operate on generic Readers/Writers
252- Adding gzip support
253- Allow compressing/extracting to a pipe
254- Make the input filename optional
255- Allow multiple input files to compression
256- Adding test stubs
257- Init Rust workflow
258- Rewrite cli parsing
259- Add justfile for short scripts
260- Add flags to ignore just stdin or stdout pipes
261- Add test target to justfile
262- Add xz support
263- Extend the check script
264- Add .envrc
265
266### Miscellaneous Tasks
267
268- Bump flake deps
269- Expand Rust action
270- Ignore direnv cache
271- Add act and prettier to the environment
272- Add Nix action
273- Switch flake to use flake-parts and nci
274- All deps
275- Nix deps
276- Rust deps
277- Release v0.1.0
278
279### Refactor
280
281- Redo the dispatching with generics
282- Use common arguments struct
283- Standardize the interface for compressors
284- Use common fn for constructing errors
285- Simplifying the compressor API
286- Simplify gzip compression and extraction
287- Remove the unused extract command
288
289### Styling
290
291- Use descriptive names in CI
292
293### Testing
294
295- Add some tar cli tests with target inference
296- Use nextest to run tests
297
298### Build
299
300- Rewrite flake to use crane
301- Add separate cmprss package/app
302- Add overlay for easier consumption
303- Fix overlay output
304- Remove code coverage from nix flake check
305
306### Dev
307
308- Switch to using treefmt
309
310## [0.0.1] - 2023-04-02
311
312### Bug Fixes
313
314- Disable clippy pre-commit
315
316### Documentation
317
318- Adding basic cargo info
319
320### Features
321
322- Add initial hello world
323- Adding flake for dependency management
324- Add tar compression
325
326### Miscellaneous Tasks
327
328- Add nix result folder to gitignore
329- Bump flake deps
330
331<!-- generated by git-cliff -->