This release adds a native Dispatcharr source with channel-first stream management, opt-in sample clips for checking stream quality, and fixes for remuxed playback.
Dispatcharr
- Adds a Dispatcharr source to the Open dialog, saved playlists, and recent sources. It signs in with an API key or username and password and loads every channel's ordered streams through the REST API (#248, ref #200).
- Shows one row per channel with a per-stream health strip and an alive/total count. Channels expand to their streams in failover order (ref #204).
- Writes Fix order, Make primary, move, and remove straight to Dispatcharr. Each write re-fetches the channel and refuses if it changed since load. Each row has Undo, and Fix all applies to the current filter with Undo all (ref #201, ref #202).
- Finds, tests, and links replacement streams for channels whose streams are all dead, and lists channels that have no streams.
- Scans honour each M3U account's connection limit, including viewers already watching through Dispatcharr, and report busy accounts instead of marking streams dead.
- Adds channel filters for primary dead, any dead stream, and all dead. The stats bar counts channels.
- Merges probe results into Dispatcharr's stream stats after each scan. This is on by default and can be turned off in Settings, alongside the ranking signals and dead-stream handling Fix order uses.
Sample clips
- Adds Capture Sample to the selected-channel sidebar, which records a 5 to 10 second clip, and an Auto-capture sample clips setting that records one for every alive channel during scans. Auto-capture is off by default, so default scans are unchanged (#253, ref #187).
- Clips are stream-copied, never transcoded: captured as MPEG-TS and remuxed locally to MP4, keeping the MPEG-TS when the codecs do not fit MP4.
- Single-provider scans add the clip as another output of the existing ffmpeg diagnostics run, so no extra connection is opened. On single-connection playlists, manual capture, playback, scans, and catch-up tests wait for each other.
- Plays clips inline from the localhost stream proxy with byte ranges. Open uses the configured external player, and Show in folder reveals the file.
- Clips share the screenshot folder, retention, and low-space pause, and free space is checked before every clip. The Screenshots settings tab is now Media.
Playback
- Missing video timestamps no longer become large negative PTS values when remuxing. Missing durations are recovered from adjacent source DTS within a 0.5-second bound (#247).
- When every playback route fails, the most informative decode error is kept instead of "Format not supported" (#247).
Fixes
- Scan completion flushes the last batched results first, so everything reacting to completion sees every result (#248).
- Fake ffmpeg scripts in the Rust tests are written through
install, removing an ETXTBSY race that made parallel test runs flaky.
Full changelog: v2.0.2...v2.1.0







