Download Latest Version Release v0.22.1 source code.tar.gz (3.1 MB)
Email in envelope

Get an email when there's a new version of Dispatcharr

Home / v0.21.0
Name Modified Size InfoDownloads / Week
Parent folder
README.md 2026-03-17 11.8 kB
Release v0.21.0 source code.tar.gz 2026-03-17 3.0 MB
Release v0.21.0 source code.zip 2026-03-17 3.4 MB
Totals: 3 Items   6.4 MB 0

✨ New Features

TV Guide Program Enhancements

  • TV Guide program cards now display richer metadata — Thanks @CodeBormen: (Closes [#1065])
  • Season/episode badges (e.g. S12E06) on program cards
  • Episode subtitles shown below the program title; falls back to the short description when unavailable
  • Status badges: LIVE, NEW, PREMIERE, and FINALE on both cards and the detail modal
  • Program detail modal: Click any program to view full details — poster, season/episode, subtitle, duration, categories, cast/credits, content rating, ratings, air dates, video quality, and links to IMDb and TMDB
  • Real-time progress bars on currently-airing programs
  • Channel name tooltip when hovering the channel logo column

DVR Enhancements

  • Major DVR improvements across recording management, reliability, and metadata — Thanks @CodeBormen:
  • Stop Recording: New Stop button ends a recording early while keeping the partial file for playback (distinct from Cancel). (Closes [#454])
  • Extend Recording: Extend in-progress recordings by 15, 30, or 60 minutes without interrupting the stream.
  • Inline metadata editing: Edit title and description directly in the recording details modal.
  • Refresh artwork button: Manually re-fetch poster art from the recording card.
  • Multi-source poster resolution: Artwork now queries EPG, VOD, TMDB, OMDb, TVMaze, and iTunes.
  • Series rules for currently-airing episodes: Series rules now capture currently-airing episodes in addition to future ones. (Closes [#473])
  • Search and filter controls added to the recordings list.
  • Automatic crash recovery: Recordings stuck in "recording" status are automatically recovered when the worker restarts.

Account Expiration Tracking for M3U Profiles

  • M3U account profiles now track and alert on subscription expiration dates:
  • New Expiration column in the M3U accounts table shows the nearest expiration date per account, color-coded: red = expired, orange = expiring soon, white = OK. Hover for per-profile details.
  • For Xtream Codes accounts, expiration dates are automatically synced from the provider. Non-XC accounts support manual date entry.
  • Notifications are raised when an account is expiring within 7 days or has already expired, and are automatically cleared when the date is updated or removed.

Configurable Sidebar Navigation

  • The sidebar can now be customized per user — Thanks @jcasimir:
  • Reorder nav items via drag-and-drop in Settings → UI Settings → Navigation.
  • Hide individual nav items using the eye toggle.
  • A "Reset to Default" button restores the default order.
  • Changes take effect immediately without a page reload.

Floating Video Player Improvements

  • Title display: The channel, stream, or VOD title is now shown in the player header bar.
  • Persistent state: Size, position, volume, and mute state are saved across sessions and restored on next open.

New Client Buffer Setting

  • New Client Buffer setting in Settings → Proxy: new clients joining an active channel are buffered a configurable number of seconds behind live. Defaults to 5 seconds. Set to 0 for no buffer.

Channel Table Has Stale Streams Filter

  • New Has Stale Streams filter in the channel table highlights and filters channels containing stale streams (shown with an orange tint). — Thanks @JCBird1012

Next Highest Channel Numbering Mode

  • A new Next Highest option is now available when creating channels from the Streams table (both bulk and single-stream). Selecting it assigns channel numbers starting one above the current highest existing channel number. (Closes [#1000]) — Thanks @JCBird1012

Column Sorting Enhancements

  • Sort icons added to the Group and EPG columns in the Channels table, and the Group column in the Streams table. Click to cycle through ascending/descending/unsorted. (Closes [#854]) — Thanks @CodeBormen

🔄 Changes & Improvements

Dependency Updates

  • Django upgraded from 5.2.11 → 6.0.3 (see Security section)
  • django-celery-beat updated to ≥2.9.0

EPG

  • The EPG source dropdown when assigning a channel now only lists enabled (active) EPGs, sorted alphabetically.
  • EPG output no longer includes already-ended programs when no days parameter is specified.

Channels Page Layout

  • Default Channels page splitter ratio changed from 50/50 to 60/40 (channels/streams) so all channel action buttons are visible without scrolling on 1080p displays.

Frontend Refactoring

  • Various frontend components refactored for better maintainability and consistency. — Thanks @nick4810

🐛 Bug Fixes

DVR

  • Fixed duplicate recordings being created for sessions scheduled more than one hour out. (Fixes [#940], [#641]) — Thanks @CodeBormen
  • Fixed recordings failing to resume after transient network drops; recordings now reconnect automatically.
  • Fixed recordings stuck in "recording" status after a worker restart not being recovered. (Fixes [#619], [#624])
  • Fixed output file collisions when multiple recordings targeted the same filename.
  • Fixed deleting a completed recording incorrectly terminating an active stream on that channel.
  • Fixed recording card logos not displaying.
  • Fixed poster artwork lookup producing incorrect results for channels with special characters in their name.
  • Fixed the series modal incorrectly showing "No upcoming episodes".
  • Fixed series rule deletion leaving orphaned recordings and stale Guide indicators. (Fixes [#1041])
  • Fixed series rules dropping scheduled recordings for users in UTC-negative timezones after 4 pm local time. (Fixes [#1042])
  • Fixed the recording detail modal crashing on load in production builds.
  • Fixed the description field losing focus immediately when opened in the recording detail modal.
  • Fixed comskip causing post-processing to fail on recordings with no commercials.
  • Fixed season/episode badges overlapping on recording cards.
  • Fixed the series rule modal showing a blank state instead of a delete option when the parent rule no longer exists.
  • Fixed series rule creation returning a 500 error when stored rule data was corrupted. (Fixes [#1059]) — Thanks @CodeBormen

TS Proxy & Streaming

  • Fixed clients getting stuck indefinitely when a stream fails to recover during failover. (Fixes [#1103]) — Thanks @cmcpherson274 & @CodeBormen
  • Fixed ghost clients and channels stuck in the initializing state. (Fixes [#695], [#669]) — Thanks @CodeBormen
  • Fixed connection slot leaks that could cause stream limits to be exceeded. (Fixes [#947]) — Thanks @CodeBormen & @patchy8736
  • Fixed streams dying after 30–200 seconds in multi-worker deployments. (Fixes [#992], [#980]) — Thanks @PFalko
  • Fixed audio sync issues on the client side when streams switch between sources. (Fixes [#1102]) — Thanks @cmcpherson274
  • Fixed client lag recovery jumping clients too far forward in the buffer unnecessarily.

M3U & EPG

  • Fixed memory leak during M3U/XC refresh causing 20–80 MB growth per refresh cycle. (Fixes [#1012], [#1053]) — Thanks @CodeBormen
  • Fixed a crash when providers send invalid values for adult content flags. (Fixes [#1061]) — Thanks @JCBird1012
  • Fixed M3U attributes (e.g. tvg-logo) being silently dropped when values contained = characters. (Fixes [#1055]) — Thanks @JCBird1012
  • Fixed XC stream refresh crashing when a provider returns streams with a null or empty name; affected streams are assigned a fallback name.
  • Fixed 504 Gateway Timeout when saving M3U group settings on slower hardware (e.g. Synology NAS). (Fixes [#745]) — Thanks @nickgerrer
  • Fixed EPG parsing dropping entire batches of programmes when a title exceeded 255 characters. (Fixes [#1039])
  • Fixed currently-airing programs missing from EPG output immediately after a refresh.
  • Fixed table flickering and instability during M3U imports. — Thanks @marcinolek

Docker & System

  • Fixed container startup failure when PUID/PGID is set due to database folder ownership conflicts. Existing installations are migrated automatically on first startup. (Fixes [#1078]) — Thanks @CodeBormen
  • Fixed uWSGI segfaults on ARM64/Python 3.13 in dev and debug configurations. — Thanks @jcasimir
  • Fixed spurious timezone-related warnings emitted during startup and record creation.
  • Fixed several modular mode deployment issues — Thanks @CodeBormen:
  • DVR recordings failed when DISPATCHARR_PORT was set to a non-default value.
  • Environment variables (e.g. REDIS_HOST) were not available during the Redis readiness check.
  • Environment variable changes after a container restart could be silently ignored.
  • Celery worker could hang indefinitely on startup if the web container was slow to start.
  • db and redis containers now wait for actual health-check readiness before starting dependent services.
  • Added host.docker.internal resolution support for Linux hosts.
  • Modular mode Redis flush now preserves Celery queue data. (Fixes [#1045])
  • Fixed debian_install.sh failures in non-UTF8 environments (e.g. minimal LXC containers), including PostgreSQL encoding issues and background tasks unable to locate ffmpeg/ffprobe. — Thanks @marcinolek

UI & Navigation

  • Fixed the single-stream channel creation modal not opening when clicking the channel-creation button on an individual stream row in the Streams table. — Thanks @JCBird1012
  • Fixed duplicate error notifications being shown when a settings save failed.
  • Fixed navigation order/visibility changes from one browser session overwriting changes made in another concurrent session.
  • Fixed the "update available" notification persisting after upgrading to the notified version.

Floating Video Player

  • Fixed the player getting stuck in resize or drag mode after releasing the mouse outside the browser window.
  • Fixed the player being draggable entirely off screen, making the header and controls unreachable.

VOD

  • Fixed a crash during VOD library refresh when a concurrent update caused a conflict during orphan cleanup.

🔒 Security

  • Updated flatted to 3.4.1, resolving a High severity unbounded recursion DoS vulnerability (GHSA-25h7-pfq9-p65f)
  • Updated Django to 6.0.3 and django-celery-beat to 2.9.0 to address:
  • Moderate: Potential denial-of-service via URLField on Windows (CVE-2026-25673)
  • Moderate: Potential incorrect permissions on newly created file system objects (CVE-2026-25674)
Source: README.md, updated 2026-03-17