From f3e7aeebd859e82e9eb065a7e26f52414a1d603c Mon Sep 17 00:00:00 2001 From: Vladyslav Vladinov Date: Tue, 13 Oct 2026 16:54:26 +0200 Subject: [PATCH] chore(workspace): release 0.4.0 0.4.0 and not 0.3.1: `Trial` and `Progress::Trial` gain `size`, `Search::run` returns `Scored`, `Output` gains `lossless`, and a quality on a named lossless-only encoder is an error. The page is waiting on the trial size, `options()` and the package's notices file. Co-Authored-By: Claude Fable 5.1 --- CHANGELOG.md | 2 ++ Cargo.lock | 22 +++++++++++----------- Cargo.toml | 18 +++++++++--------- README.md | 2 +- tools/calibrate/Cargo.lock | 23 +++++++++++++++-------- 5 files changed, 38 insertions(+), 29 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c7ca205..0e17ade 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased +## 0.4.0 + ### ⚠️ BREAKING CHANGES * **sqzer:** `Output` has a new public field, `lossless`: the bytes hold exactly the samples the encoder was given. Code that builds an `Output` by hand sets it, and code that read `Output::target` to learn whether an encode was lossless reads the field instead (ADR-0012 D4) diff --git a/Cargo.lock b/Cargo.lock index 6aac65c..d9e7fc8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -845,14 +845,14 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "heif-dl" -version = "0.3.0" +version = "0.4.0" dependencies = [ "libloading", ] [[package]] name = "heif-imageio" -version = "0.3.0" +version = "0.4.0" dependencies = [ "objc2-core-foundation", "objc2-core-graphics", @@ -861,7 +861,7 @@ dependencies = [ [[package]] name = "heif-wic" -version = "0.3.0" +version = "0.4.0" dependencies = [ "windows", ] @@ -2181,7 +2181,7 @@ checksum = "b9be42f50aa861c555654aa3a37f52f4b1074bacf4e48fe0ef7fa584e80f1f0f" [[package]] name = "sqzer" -version = "0.3.0" +version = "0.4.0" dependencies = [ "bytemuck", "fast_image_resize", @@ -2194,7 +2194,7 @@ dependencies = [ [[package]] name = "sqzer-cli" -version = "0.3.0" +version = "0.4.0" dependencies = [ "anstream", "anstyle", @@ -2211,7 +2211,7 @@ dependencies = [ [[package]] name = "sqzer-codecs" -version = "0.3.0" +version = "0.4.0" dependencies = [ "avif-parse", "exr", @@ -2245,18 +2245,18 @@ dependencies = [ [[package]] name = "sqzer-codecs-agpl" -version = "0.3.0" +version = "0.4.0" dependencies = [ "sqzer-core", ] [[package]] name = "sqzer-core" -version = "0.3.0" +version = "0.4.0" [[package]] name = "sqzer-metrics" -version = "0.3.0" +version = "0.4.0" dependencies = [ "fast-ssim2", "sqzer-core", @@ -2264,7 +2264,7 @@ dependencies = [ [[package]] name = "sqzer-native-tier" -version = "0.3.0" +version = "0.4.0" dependencies = [ "sqzer-codecs", ] @@ -2294,7 +2294,7 @@ dependencies = [ [[package]] name = "sqzer-wasm" -version = "0.3.0" +version = "0.4.0" dependencies = [ "console_error_panic_hook", "js-sys", diff --git a/Cargo.toml b/Cargo.toml index 0472c3f..fe89a30 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,7 +7,7 @@ members = ["crates/*"] exclude = ["tools/calibrate"] [workspace.package] -version = "0.3.0" +version = "0.4.0" edition = "2024" # 1.92 is what `gamut-jxl` (the `native-jxl` backend) asks for; the # portable tier itself needs nothing newer than 1.89. @@ -21,19 +21,19 @@ keywords = ["image", "optimization", "avif", "jpegxl", "webp"] categories = ["multimedia::images", "command-line-utilities"] [workspace.dependencies] -sqzer-core = { path = "crates/sqzer-core", version = "0.3.0" } -sqzer-codecs = { path = "crates/sqzer-codecs", version = "0.3.0", default-features = false } -sqzer-metrics = { path = "crates/sqzer-metrics", version = "0.3.0" } -sqzer = { path = "crates/sqzer", version = "0.3.0", default-features = false } +sqzer-core = { path = "crates/sqzer-core", version = "0.4.0" } +sqzer-codecs = { path = "crates/sqzer-codecs", version = "0.4.0", default-features = false } +sqzer-metrics = { path = "crates/sqzer-metrics", version = "0.4.0" } +sqzer = { path = "crates/sqzer", version = "0.4.0", default-features = false } # The three crates that hold the workspace's `unsafe`, one per HEIC # decoder (ADR-0005 D4). Not public API; published because `sqzer-codecs` # depends on them. -heif-dl = { path = "crates/heif-dl", version = "0.3.0" } -heif-imageio = { path = "crates/heif-imageio", version = "0.3.0" } -heif-wic = { path = "crates/heif-wic", version = "0.3.0" } +heif-dl = { path = "crates/heif-dl", version = "0.4.0" } +heif-imageio = { path = "crates/heif-imageio", version = "0.4.0" } +heif-wic = { path = "crates/heif-wic", version = "0.4.0" } # The per-target selection behind `sqzer/native` (ADR-0006). Not public # API; published because `sqzer` depends on it. -sqzer-native-tier = { path = "crates/sqzer-native-tier", version = "0.3.0" } +sqzer-native-tier = { path = "crates/sqzer-native-tier", version = "0.4.0" } [workspace.lints.rust] unsafe_code = "forbid" diff --git a/README.md b/README.md index 7b7a4a1..2ad5a4a 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Multi-format image optimizer with best-in-class defaults. A library, a CLI and a WebAssembly package for the browser, pure Rust by default, C codecs when you want the last few percent. -> **Note**: Early days. The command line and its defaults are what this README describes; the library API will still change before `1.0`. The browser build is the `sqzer` package on npm, described [below](#in-the-browser); the page to drop an image on is next. The design is in [`docs/adr/0001-system-design.md`](docs/adr/0001-system-design.md), the command line in [`docs/adr/0003-cli-interface.md`](docs/adr/0003-cli-interface.md), the native backends in [`docs/adr/0004-native-tier.md`](docs/adr/0004-native-tier.md), colour in [`docs/adr/0007-colour-management.md`](docs/adr/0007-colour-management.md), the browser build in [`docs/adr/0011-browser-build.md`](docs/adr/0011-browser-build.md). +> **Note**: Early days. The command line and its defaults are what this README describes; the library API will still change before `1.0`. The browser build is the `sqzer` package on npm, described [below](#in-the-browser), and the page to drop an image on is [sqzer.dev](https://sqzer.dev). The design is in [`docs/adr/0001-system-design.md`](docs/adr/0001-system-design.md), the command line in [`docs/adr/0003-cli-interface.md`](docs/adr/0003-cli-interface.md), the native backends in [`docs/adr/0004-native-tier.md`](docs/adr/0004-native-tier.md), colour in [`docs/adr/0007-colour-management.md`](docs/adr/0007-colour-management.md), the browser build in [`docs/adr/0011-browser-build.md`](docs/adr/0011-browser-build.md). ## What it is for diff --git a/tools/calibrate/Cargo.lock b/tools/calibrate/Cargo.lock index 7a7803c..682316b 100644 --- a/tools/calibrate/Cargo.lock +++ b/tools/calibrate/Cargo.lock @@ -950,14 +950,14 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "heif-dl" -version = "0.3.0" +version = "0.4.0" dependencies = [ "libloading", ] [[package]] name = "heif-imageio" -version = "0.3.0" +version = "0.4.0" dependencies = [ "objc2-core-foundation", "objc2-core-graphics", @@ -966,7 +966,7 @@ dependencies = [ [[package]] name = "heif-wic" -version = "0.3.0" +version = "0.4.0" dependencies = [ "windows", ] @@ -1873,6 +1873,12 @@ dependencies = [ "bytemuck", ] +[[package]] +name = "quantizr" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b28ab4659f6754222a9e96c7a48f68dba03a620f23803c67ccd4ca7c35d55f5f" + [[package]] name = "quick-error" version = "2.0.1" @@ -2250,7 +2256,7 @@ checksum = "b9be42f50aa861c555654aa3a37f52f4b1074bacf4e48fe0ef7fa584e80f1f0f" [[package]] name = "sqzer" -version = "0.3.0" +version = "0.4.0" dependencies = [ "bytemuck", "fast_image_resize", @@ -2274,7 +2280,7 @@ dependencies = [ [[package]] name = "sqzer-codecs" -version = "0.3.0" +version = "0.4.0" dependencies = [ "avif-parse", "exr", @@ -2294,6 +2300,7 @@ dependencies = [ "mozjpeg-rs", "oxipng", "png", + "quantizr", "ravif", "resvg", "rgb", @@ -2307,11 +2314,11 @@ dependencies = [ [[package]] name = "sqzer-core" -version = "0.3.0" +version = "0.4.0" [[package]] name = "sqzer-metrics" -version = "0.3.0" +version = "0.4.0" dependencies = [ "fast-ssim2", "sqzer-core", @@ -2319,7 +2326,7 @@ dependencies = [ [[package]] name = "sqzer-native-tier" -version = "0.3.0" +version = "0.4.0" dependencies = [ "sqzer-codecs", ]