v0.3.4 — Bug Fixes
Fixed: Source metadata failing on large channels
yt-dlp's playlist:%()j template dumped the full playlist info dict including per-video format data, producing multi-megabyte JSON for large channels. This caused Jason.DecodeError on truncated writes, silently crashing the metadata worker and leaving sources without descriptions, posters, or banners. The template is now scoped to only the fields actually used (description, thumbnails, title, id, etc.), and --flat-playlist is applied so yt-dlp never processes individual entry format data. JSON output is now a few KB regardless of channel size.
Fixed: Source metadata worker crashing with unguarded match error
A bare {:ok, metadata} = pattern match in fetch_source_metadata_and_images caused a MatchError on any metadata fetch failure, bypassing the Oban rescue block and producing noisy retries/discards. The match is now handled with a proper case — fetch failures log a warning and the job completes gracefully rather than crashing.
Fixed: PO token test timing out on ARM hardware
The token server health check used --max-time 15, which was too short for the bgutil Innertube challenge on ARM (Pi 4). The timeout is now 30 seconds, confirmed working on Pi hardware.
Full Changelog: v0.3.3...v0.3.4