From abd8fc2eb95940948ee802d628a7f38fc9687e6a Mon Sep 17 00:00:00 2001 From: Andy Date: Sun, 18 Jan 2026 19:03:14 +0000 Subject: [PATCH] chore(release): bump version to 2.3.0 --- CHANGELOG.md | 33 +++++++++++++++++++++++++++++++++ pyproject.toml | 2 +- unshackle/core/__init__.py | 2 +- uv.lock | 2 +- 4 files changed, 36 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f477a7c..343b09e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,39 @@ 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.3.0] - 2026-01-18 + +### Added + +- **Unicode Filenames Option**: New `unicode_filenames` config option to preserve native characters + - Allows disabling ASCII transliteration in filenames + - Preserves Korean, Japanese, Chinese, and other native language characters + - Closes #49 + +### Fixed + +- **WebVTT Cue Handling**: Handle WebVTT cue identifiers and overlapping multi-line cues + - Added detection and sanitization for cue identifiers (Q0, Q1, etc.) before timing lines + - Added merging of overlapping cues with different line positions into multi-line subtitles + - Fixes parsing issues with pysubs2/pycaption on certain WebVTT files +- **Widevine PSSH Filtering**: Filter Widevine PSSH by system ID instead of sorting + - Fixes KeyError crash when unsupported DRM systems are present in init segments +- **TTML Negative Values**: Handle negative values in multi-value TTML attributes + - Fixes pycaption parse errors for attributes like `tts:extent="-5% 7.5%"` + - Closes #47 +- **ASS Font Names**: Strip whitespace from ASS font names + - Handles ASS subtitle files with spaces after commas in Style definitions + - Fixes #57 +- **Shaka-Packager Error Messages**: Include shaka-packager binary path in error messages +- **N_m3u8DL-RE Merge and Decryption**: Handle merge and decryption properly + - Prevents audio corruption ("Box 'OG 2' size is too large") with DASH manifests + - Fixes duplicate init segment writing when using N_m3u8DL-RE +- **DASH Placeholder KIDs**: Handle placeholder KIDs and improve DRM init from segments + - Detects and replaces placeholder/test KIDs in Widevine PSSH + - Adds CENC namespace support for kid/default_KID attributes +- **PlayReady PSSH Comparison**: Correct PSSH system ID comparison in PlayReady + - Removes erroneous `.bytes` accessor from PSSH.SYSTEM_ID comparisons + ## [2.2.0] - 2026-01-15 ### Added diff --git a/pyproject.toml b/pyproject.toml index 68b8a79..80d989d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "unshackle" -version = "2.2.0" +version = "2.3.0" description = "Modular Movie, TV, and Music Archival Software." authors = [{ name = "unshackle team" }] requires-python = ">=3.10,<3.13" diff --git a/unshackle/core/__init__.py b/unshackle/core/__init__.py index 8a124bf..55e4709 100644 --- a/unshackle/core/__init__.py +++ b/unshackle/core/__init__.py @@ -1 +1 @@ -__version__ = "2.2.0" +__version__ = "2.3.0" diff --git a/uv.lock b/uv.lock index 9ca0001..ee38efe 100644 --- a/uv.lock +++ b/uv.lock @@ -1565,7 +1565,7 @@ wheels = [ [[package]] name = "unshackle" -version = "2.2.0" +version = "2.3.0" source = { editable = "." } dependencies = [ { name = "aiohttp-swagger3" },