Download Latest Version Release v0.32.0 source code.zip (4.9 MB) Google Add to Preferred Sources
Home / v0.32.0
Name Modified Size InfoDownloads / Week
Parent folder
README.md 2026-10-07 8.8 kB
Release v0.32.0 source code.tar.gz 2026-10-07 4.3 MB
Release v0.32.0 source code.zip 2026-10-07 4.9 MB
Totals: 3 Items   9.2 MB 18

✨ New Features

Optional Reverse Proxy Header Authentication

  • Admins can enable Settings → System → Reverse Proxy Auth to exchange a configured identity header (such as X-Forwarded-User, X-Auth-Request-User, or Cf-Access-Authenticated-User-Email) for standard JWT tokens. (Closes [#1644]) - Thanks @benjitobz:
  • Stays disabled until DISPATCHARR_TRUSTED_PROXIES explicitly names the proxy
  • The proxy must strip client-supplied identity headers before forwarding

Radio Channels in M3U and XC Output

  • Radio streams and channels are preserved end-to-end through refresh, create-from-stream, auto-sync, M3U, and XC. (Closes [#1683]) - Thanks @dillardblom:
  • Streams pick up radio status from the M3U radio attribute or XC stream_type: radio_streams
  • M3U emits radio="true" and XC get_live_streams returns stream_type: radio_streams from the effective value
  • Channel editor and batch editor expose a Radio control; auto-synced channels can keep a manual override across refreshes
  • Upgrading: streams pick up the flag on the next account refresh, and auto-synced channels follow after that. Manually created channels stay TV until you mark them — select them in the channels table and set Radio to Yes in the batch editor (or use the Radio switch on a single channel)

Catch-up on XC M3U Playlists

  • XC M3U playlists advertise catch-up for players that read EXTINF tags. - Thanks @dillardblom:
  • Catch-up channels that already report archive in get_live_streams get playlist tags (days capped at the EPG lookback ceiling; the user catch-up setting still applies)
  • Non-direct playlists use catchup="default" with a {utc} catchup-source on /streaming/timeshift.php (epoch seconds and {duration:60}), so wall-clock placeholders match Dispatcharr's timeshift endpoints; utc= is accepted as an alias for start=
  • Admin direct=true provider playlists keep catchup="xc" when the resolved URL is XC /live/ form
  • Plain /output/m3u stays untagged (those stream URLs cannot be rewritten for catch-up)
  • When catch-up is allowed, XC /live/ M3U headers also advertise catchup-timezone="UTC" (same zone as player_api server_info.timezone)

Richer Live Stream Events for Connect

  • Live-proxy stream events identify which stream stalled or failed over, so webhooks, scripts, and plugins can track unstable providers without scraping logs. (Closes [#1564]) - Thanks @lukezbihlyj:
  • channel_buffering, channel_failover, channel_reconnect, channel_error, and stream_switch carry the active stream_id
  • Switches also carry previous_stream_id, a switch reason, and previous stream name/provider when known
  • channel_buffering is a Connect subscription event; a buffering timeout that cannot switch emits a single channel_error per stalled stream

🔄 Changes & Improvements

Default Stream Profiles

  • The locked default stream profile is renamed FFmpeg (command stays ffmpeg) and its parameters are updated for more resilient live remuxing:
  • Maps every input stream (-map 0) so extra audio, subtitle, and data tracks are kept instead of dropped
  • Copies codecs as-is; streams ffmpeg cannot remux are written as private data instead of failing to start the stream
  • Adds -fflags +genpts+discardcorrupt and repeats MPEG-TS PAT/PMT headers so clients recover more cleanly on corrupt or discontinuous input
  • Probe size and analyze duration stay at ffmpeg defaults
  • The locked Streamlink profile is renamed the same way and muxes to MPEG-TS when ffmpeg is used, matching the channel buffer. (Closes [#237])
  • Locked stream and output profiles can no longer be edited through the API (name, command, parameters, active state, or lock); the user-agent on a locked stream profile can still be updated
  • Seeded output profiles that remux audio now copy subtitle PIDs instead of failing to open on channels that carry subtitles. (Fixes [#1502]) - Thanks @v8eta

DVR Playback While Recording & recording_end Timing

  • In-progress DVR recordings are served as HLS event playlists, so players that treat an untyped live playlist as a short sliding window can seek across the whole recording while it is still being written. - Thanks @aethewulf11-ops
  • recording_end now fires after post-processing (not when capture stops), with outcome (success / failed / cancelled), file fields, and scheduled times. (Fixes [#1681]) - Thanks @v8eta:
  • Crash-recovery finalize and in-progress cancel emit it too
  • Branch on outcome / failure_reason (the old interrupted boolean is gone)

Profiles Tables, Playlists & Logging

  • Stream and output profile tables list locked defaults first, then sort by name
  • M3U generation and channel list responses do less work, so large playlists and channel lists load more efficiently
  • Container boot and runtime logs are much quieter (Postgres probes, routine proxy/Redis/plugin startup, and similar noise). - Thanks @nagelm
  • Fresh-install AIO migrate no longer tries the Redis settings cache before Redis is up; the entrypoint sets DISPATCHARR_SKIP_REDIS_CACHE=1 so settings reads go straight to Postgres and boot stays free of connection-refused warnings

🐛 Bug Fixes

Channels Table & Catch-up Flags

  • Fixed channels table sort, search, filter, and renumbering ignoring override values, so rows with pinned numbers/names/groups/EPG no longer looked out of order. (Fixes [#1630])
  • Fixed bulk create channels from streams leaving catch-up flags unset until the next account refresh. (Fixes [#1542])

Live Proxy, VOD Sessions & Connection Limits

  • Fixed stopping a channel leaving orphaned child processes from multi-process stream profiles (for example a wrapper with ffmpeg/vlc children). (Fixes [#1718])
  • Fixed a VOD response closed before the body starts leaving its profile slot reserved. (Fixes [#1728])
  • Fixed FFmpeg-based VOD clients (and Emby/Jellyfin via libmpv) minting a new session on every probe and seek, which could return HTTP 503 on single-stream profiles. (Fixes [#1472])
  • Fixed concurrent tunes stealing a live channel owner lock before metadata was written, which could stall or return HTTP 503. (Fixes [#1753])
  • Fixed Server Group connection counters leaking when concurrent streams stop or profiles switch, which could eventually return HTTP 503. (Fixes [#1725]) - Thanks @sh-k-l
  • Fixed web preview of Redirect channels colliding with the live Proxy worker or failing when viewers have different allowed M3U profiles. - Thanks @c-riccio

Catch-up Playback

  • Fixed catch-up fast-forward with Range: bytes=0- restarting at the original position instead of the requested time (affects clients such as Kodi with inputstream.ffmpegdirect). - Thanks @amwalters
  • Fixed catch-up scrub offsets leaving the cached CDN file incorrectly, so seeks and timestamp restarts stay aligned with the open archive

M3U / XC Refresh & Output

  • Fixed M3U/XC refreshes marking streams stale (and potentially deleting auto-created channels) when a write batch failed. (Fixes [#1715]) - Thanks @JonathanAlbarran
  • Fixed XC get_live_categories returning an empty list for Standard Users who still received live streams under a Channel Profile. (Fixes [#1765])

TV Guide, URLs, Redis & Docker

  • Fixed the TV Guide marking time-only custom dummy events as ended before kickoff. (Fixes [#1722])
  • Fixed absolute URLs baking in the container listen port (for example :9191) when Docker remaps 80:9191 and Host has no port. (Fixes [#1654])
  • Fixed Redis TLS via discrete REDIS_SSL* env vars failing with the bounded connection pool. (Fixes [#1709])
  • Fixed REDIS_URL being ignored when set (including unix sockets). (Fixes [#1427]) - Thanks @Holbormon
  • Fixed System → Logs being hidden when Persist Logs to File was on but a live collector process check failed (common on modular installs)
  • Fixed modular log config/ ownership so the Logs page no longer warns that nothing is running when files are being written
  • Fixed PostgreSQL failing to start when only the data directory's owner was wrong. (Fixes [#1453]) - Thanks @JonathanAlbarran
  • Fixed deleting a locked stream or output profile raising an unhandled API error instead of a clear 400
Source: README.md, updated 2026-10-07