feat(api)!: finalize the v1 image API surface; consolidated CHANGELOG - #57
Merged
Conversation
The semver review against docs/V1_DESIGN.md, item by item. The public option enums are now strictly format-keyed: DecodeOptions::WebpLibwebp/SvgResvg/ PpmZune and EncodeOptions::PngGamut/WebpLibwebp renamed to WebP/Svg/Ppm/Png — backend identity belongs to registry ids and config-type names (which stay honestly backend-named only for blocked/exception backends, now documented as the rule). Three never-wired planned-backend config structs (LibjpegTurboEncodeConfig, MozjpegEncodeConfig, SvtAv1EncodeConfig) are deleted — the upstream-first policy makes them dead letters. RawFile gains the format() accessor V1_DESIGN promised; the prelude gains the one missing decode config export. Rustdoc: all five publishable doc configs build clean under -D warnings; the image crate documents its gamut-backed architecture; the facade's example doctest was broken (wrong arity, hidden behind ignore) and now compiles and runs. V1_DESIGN.md is reconciled to shipped reality where the delivered shape was the deliberate improvement (encode_rgb_image names, RgbImage surface, hwdec CodecConfig, ColorDescription consts, option-field tables). CHANGELOG's [Unreleased] is rewritten as the consolidated v1 section: the release-shape preamble (git-consumable release until gamut publishes; crates.io deferred by owner decision), one grouped breaking list, the additions (rawshift-hwdec + VAAPI, container APIs, compile-boundary CI), the dependency graveyard, and the fixes the migration surfaced. The version bump and rc tag are deliberately NOT performed — they are the owner's explicit release decision per the issue. BREAKING CHANGE: DecodeOptions/EncodeOptions variant renames; three unused config structs removed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #37 (reviewable scope — the rc cut is yours, checklist below).
Stacked on #56 — the top of the stack; merge order #42 → … → #56 → this.
What is Delivered
docs/V1_DESIGN.md, item by item (full table in the work log). Highlights:WebpLibwebp/SvgResvg/PpmZune/PngGamutvariants renamed toWebP/Svg/Ppm/Png. Backend identity lives in registry ids; config-type names stay backend-named only where that is the honest truth (blocked/exception backends), and that rule is now documented.LibjpegTurboEncodeConfig,MozjpegEncodeConfig,SvtAv1EncodeConfig) — dead letters under the upstream-first policy.RawFile::format()added — the one genuine gap vs the design doc. One missing prelude export fixed.Gamut{context,source},HwDecoderUnavailable{codec,reason}; gamut#254 noted for future context enrichment).-D warnings; the facade's example doctest was silently broken (ignore+ wrong arity) — fixed and now actually runs; image crate documents the gamut-backed architecture.[Unreleased]consolidated into the v1 section — release-shape preamble, grouped breaking list, additions, the full dependency graveyard, and migration-surfaced fixes.Owner checklist to cut 1.0.0-rc (not performed — your call per the issue)
version(e.g.1.0.0-rc.1) in one commit[Unreleased]under the version headingdde9f64) is the intended release pinv1.0.0-rc.1— git-consumable release; skip/disable the crates.io publish flow until gamut publishesVerification Done
Run independently:
cargo test --workspace388/0;--features full563/0; facade doctest 1/0 (newly compiling); docs 5/5 configs clean under-D warnings; clippy-D warnings0; fmt clean; lefthook green.