Setup
- Add log_engine_output DRM flag and --log-decryptor-output CLI switch to tag Bento4/Shaka/flux subprocess output in the log
- Add ARR.anime_id_crosswalk_enabled config flag for the MAL/AniList→TMDB crosswalk
- Add a background thread that re-fetches domains.json every 30 minutes and invalidates cached domain lookups
Decryptor / DRM
- Detect legacy PIFF-brand (pre-CMAF Smooth Streaming) content and log it
- Prefer a scheme that maps to a known decrypt mode when multiple schm boxes disagree, instead of always taking the first one
Velora Downloader Pipeline (live decrypt & merge)
- Add in-flight (per-fragment) live decrypt and merge support for HLS SAMPLE-AES and ISM DRM streams, previously limited to DASH
- Treat DASH multi-period manifests where every Period shares the same underlying media segment (SSAI ad-break signaling) as single-period
- HLS parser: resolve #EXT-X-BYTERANGE offsets into per-segment Range request headers
MP4 Progressive Download (in-flight decrypt)
- Add LiveFragMp4Decryptor + FragBoxSplitter: decrypt a plain progressive MP4 fragment-by-fragment as it downloads instead of after
Muxing / Tagging
- Add chapters.txt OGM sidecar persistence into the downloader's temp dir whenever chapters are injected
- Replace -shortest with explicit -t <video_duration> for more precise trimming
- Log the ffmpeg tail output on a non-zero Join Media exit code
- Detect MPEG-TS content prefixed by a PNG wrapper
- Drop empty (0-byte) subtitle tracks before merge instead of feeding them to ffmpeg
- Add lyrics tagging support (FLAC lyrics, MP4 ©lyr, Opus lyrics, MP3 USLT)
Lyrics Provider
- Wire lyrics lookup into the Amazon Music download path
ARR / Anime TMDB Matching
- Add VibraVid/utils/anime_id_map.py: MAL/AniList→TMDB/TVDB crosswalk from the Fribb/anime-lists dataset, 24h disk cache with stale-on-failure fallback
- AnimeUnityAPI/AnimeWorldAPI.resolve_tmdb_id: resolve TMDB id via crosswalk when the provider exposes none directly
Selector / Utils
- FilterSpec.parse: accept both short and long native filter keys (res, lang/langs, codec/codecs, bitrate, id, for), with a warning fallback for unrecognized keys
GUI / ARR
- cinema_base.html: add an in-app update-available banner
- ArrDownloaderService: thread episode_number through for split-cour anime downloads
Full Changelog: v1.3.9...v1.4.0