From 71b4b09c93b062400175eaafeea7bafc11234f4c Mon Sep 17 00:00:00 2001 From: Matthew Jackson <1085847+MattJackson@users.noreply.github.com> Date: Mon, 29 Jun 2026 08:41:26 -0700 Subject: [PATCH] =?UTF-8?q?docs:=201.2.0=20CHANGELOG=20=E2=80=94=20documen?= =?UTF-8?q?t=20the=20breaking=20public-API=20changes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Per the release decision: ship the AACS-version-stride API changes under the 1.2.0 minor bump, with an explicit Breaking section (DiscInputs new field, DiscInputsCtx::new arity, read_aacs_inputs* 3-tuple return). --- CHANGELOG.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3ad2db6..66541ec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,28 @@ ## [1.2.0] — 2026-06-28 +### Breaking + +The disc's AACS version is now carried through the key-resolution path as the +single source of truth for the `Unit_Key_RO` stride (AACS-1.0 = 48-byte, +AACS-2.x = 64-byte), so keys are always read at the disc's own layout. That +threaded one new value through three public signatures. In-tree consumers +(`freemkv`, `autorip`, `freemkv-keysources`) are updated; external callers must +adjust: + +- **`DiscInputs` gains a `version: u8` field** (between `volume_id` and `mkb`). + Code constructing it with a struct literal must add the field. It is normally + obtained from `Disc::inputs()`, not constructed by hand. +- **`keysource::DiscInputsCtx::new` takes one argument, not two** — the version + is now read from `inputs.version` (`new(inputs)` instead of + `new(inputs, version)`). +- **`disc::read_aacs_inputs` / `read_aacs_inputs_from_drive` return a 3-tuple** + `(inf, mkb, version)` instead of `(inf, mkb)`. + +These are source-breaking for external crates.io consumers. Shipped under a +minor bump (1.2.0): libfreemkv's surface is not yet frozen and the only known +consumers are the in-tree toolchain crates. + ### Added - **Mux loss concealment — a logged gap still produces a decode-clean file.**