From fb139c47584aaec5751c8b996351d9d55e1cd923 Mon Sep 17 00:00:00 2001 From: MattJackson <1085847+MattJackson@users.noreply.github.com> Date: Tue, 7 Apr 2026 20:35:11 -0700 Subject: [PATCH] Release v0.4.0: labels rewrite, eject, capture fix --- CHANGELOG.md | 36 ++++++++++++++++++++++++++++++++++++ Cargo.toml | 2 +- 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..8ef89b6 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,36 @@ +# Changelog + +## 0.4.0 (2026-04-07) + +### Labels — complete rewrite + +- **Detect-then-parse architecture**: each BD-J authoring format has its own parser module with `detect()` and `parse()` functions. Drop in a new parser with one line in the registry. +- **5 format parsers**: Paramount (`playlists.xml`), Criterion (`streamproperties.xml`), Pixelogic (`bluray_project.bin`), Warner CTRM (`menu_base.prop` / `language_streams.txt`), shared label vocabulary (`vocab.rs`) +- **Raw disc data principle**: label data passes through as-is from disc. Only BD-standard codec identifiers (MLP, AC3, DTS) are mapped to display names. Unknown authoring tool codes (csp, eda, cf) pass through raw. +- **`variant` field**: replaces `region` — language dialect codes from authoring tools, not BD spec regions +- Removed: old `jar` module (superseded by labels) +- Removed: dead label apply functions from disc.rs + +### Drive + +- **`DriveSession::eject()`**: sends PREVENT ALLOW MEDIUM REMOVAL then START STOP UNIT. Works reliably after raw mode unlock. +- **`DiscRegion` enum**: Free, BluRay(A/B/C), Dvd(1-8). UHD always region-free. + +### Capture + +- **Fixed sector range collection**: captures ALL files on disc (only skips STREAM/ video files and >50MB). Previously skipped BACKUP/, DUPLICATE/, and files >10MB which missed JAR content. + +## 0.3.1 + +- Labels module: 4 disc file parsers for stream labels +- Simplified labels API + +## 0.3.0 + +- Initial public release +- SCSI transport (Linux SG_IO, macOS IOKit) +- UDF 2.50 filesystem reader +- MPLS/CLPI parsers with full STN support +- Drive identification + profile matching +- 206 bundled drive profiles +- AACS 1.0 decryption (VUK + unit keys) diff --git a/Cargo.toml b/Cargo.toml index 322a0ce..5ecbc52 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "libfreemkv" -version = "0.3.1" +version = "0.4.0" edition = "2021" license = "AGPL-3.0-only" description = "Open source raw disc access library for optical drives"