From dc9823cd289c2dca9ece00a26eed13c4fec7f4a8 Mon Sep 17 00:00:00 2001 From: Andy Date: Thu, 27 Nov 2025 23:35:56 +0000 Subject: [PATCH] chore(release): bump version to 2.1.0 --- CHANGELOG.md | 41 ++++++++++++++++++++++++++++++++++++++ pyproject.toml | 2 +- unshackle/commands/dl.py | 1 - unshackle/core/__init__.py | 2 +- uv.lock | 2 +- 5 files changed, 44 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 59d0d67..9625999 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,47 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [2.1.0] - 2025-11-27 + +### Added + +- **Per-Track Quality-Based CDM Selection**: Dynamic CDM switching during runtime DRM operations + - Enables quality-based CDM selection during runtime DRM switching + - Different CDMs can be used for different video quality levels within the same download session + - Example: Use Widevine L3 for SD/HD and PlayReady SL3 for 4K content +- **Enhanced Track Export**: Improved export functionality with additional metadata + - Added URL field to track export for easier identification + - Added descriptor information in export output + - Keys now exported in hex-formatted strings + +### Changed + +- **Dependencies**: Upgraded to latest compatible versions + - Updated various dependencies to their latest versions + +### Fixed + +- **Attachment Preservation**: Fixed attachments being dropped during track filtering + - Attachments (screenshots, fonts) were being lost when track list was rebuilt + - Fixes image files remaining in temp directory after muxing +- **DASH BaseURL Resolution**: Added AdaptationSet-level BaseURL support per DASH spec + - URL resolution chain now properly follows: MPD → Period → AdaptationSet → Representation +- **WindscribeVPN Region Support**: Restricted to supported regions with proper error handling + - Added error handling for unsupported regions in get_proxy method + - Prevents cryptic errors when using unsupported region codes +- **Filename Sanitization**: Fixed space-hyphen-space handling in filenames + - Pre-process space-hyphen-space patterns (e.g., "Title - Episode") before other replacements + - Made space-hyphen-space handling conditional on scene_naming setting + - Addresses PR #44 by fixing the root cause +- **CICP Enum Values**: Corrected values to match ITU-T H.273 specification + - Added Primaries.Unspecified (value 2) per H.273 spec + - Renamed Primaries/Transfer value 0 from Unspecified to Reserved for spec accuracy + - Simplified Transfer value 2 from Unspecified_Image to Unspecified + - Verified against ITU-T H.273, ISO/IEC 23091-2, H.264/H.265 specs, and FFmpeg enums +- **HLS Byte Range Parsing**: Fixed TypeError in range_offset conversion + - Converted range_offset to int to prevent TypeError in calculate_byte_range +- **pyplayready Compatibility**: Pinned to <0.7 to avoid KID extraction bug + ## [2.0.0] - 2025-11-10 ### Breaking Changes diff --git a/pyproject.toml b/pyproject.toml index 96f9cdc..5c91c9b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "unshackle" -version = "2.0.0" +version = "2.1.0" description = "Modular Movie, TV, and Music Archival Software." authors = [{ name = "unshackle team" }] requires-python = ">=3.10,<3.13" diff --git a/unshackle/commands/dl.py b/unshackle/commands/dl.py index 8c8e68f..cfd09ec 100644 --- a/unshackle/commands/dl.py +++ b/unshackle/commands/dl.py @@ -1368,7 +1368,6 @@ class dl: kept_tracks.extend(title.tracks.subtitles) if keep_chapters: kept_tracks.extend(title.tracks.chapters) - # Always preserve attachments (screenshots, fonts, etc.) for cleanup kept_tracks.extend(title.tracks.attachments) title.tracks = Tracks(kept_tracks) diff --git a/unshackle/core/__init__.py b/unshackle/core/__init__.py index 8c0d5d5..9aa3f90 100644 --- a/unshackle/core/__init__.py +++ b/unshackle/core/__init__.py @@ -1 +1 @@ -__version__ = "2.0.0" +__version__ = "2.1.0" diff --git a/uv.lock b/uv.lock index c426e06..f2ad4bb 100644 --- a/uv.lock +++ b/uv.lock @@ -1565,7 +1565,7 @@ wheels = [ [[package]] name = "unshackle" -version = "2.0.0" +version = "2.1.0" source = { editable = "." } dependencies = [ { name = "aiohttp-swagger3" },