Health Checks

Check Message

Full changelog is available on GitHub

Release Notes

Added

  • Show playout warnings count badge in left menu
  • Graphics Engine:
    • Add MediaItem_Resolution template data (the current Resolution variable is the FFmpeg Profile resolution)
    • Add MediaItem_Start template data (DateTimeOffset)
    • Add MediaItem_Stop template data (DateTimeOffset)
    • Add ScaledResolution template data (the final size of the frame before padding)
    • Add place_within_source_content (true/false) field to image graphics element
    • Add name field to all graphics elements to display in the UI
  • Classic and block schedules: add collection type Search Query
    • This allows defining search queries directly on schedule items without creating smart collections beforehand
    • As an example, this can be used to filter or combine existing smart collections
      • Filter: smart_collection:"sd movies" AND plot:"christmas"
      • Combine: smart_collection:"old commercials" OR smart_collection:"nick promos"
  • Scripted schedules: add custom_title to start_epg_group
  • Add MPEG-TS Script system
    • This allows using something other than ffmpeg (e.g. streamlink) to concatenate segments back together when using MPEG-TS streaming mode
    • Scripts live in config / scripts / mpegts
    • Each script gets its own subfolder which contains an mpegts.yml definition and corresponding windows (batch) and linux (bash) scripts
    • The global MPEG-TS script can be configured in Settings > FFmpeg > Default MPEG-TS Script
  • Add .avs AviSynth Script support to all local libraries
    • .avs was added as a valid extension, so they should behave the same any other video file
    • There are two requirements for AviSynth Scripts to work:
      • FFmpeg needs to be compiled with AviSynth support (not currently available in Docker)
      • AviSynth itself needs to be installed
  • Add Troubleshoot button to classic schedule list
    • This generates JSON representing the entire schedule which can be shared when requested for troubleshooting
  • Add Settings > FFmpeg > Probe For Interlaced Frames
    • When enabled, this will probe local content for interlaced frames on demand (immediately before playback)
    • This will be used as a more accurate check for interlaced content
    • The result will be cached (only probed once and stored) in the database along with all other media item statistics (e.g. duration)
    • This feature will currently ignore content that is not streamed from disk
  • Add error/offline background customization
    • Default error background is now named _background.png
    • Error streams will prioritize using background.png if it exists
      • Replacing this background.png file will allow custom error/offline backgrounds
  • Add Troubleshoot Playback buttons on movie and episode detail pages
  • Add song background and missing album art customization
    • Default files start with an underscore; custom versions must remove the underscore
  • Expose arbitrary EPG data to graphics engine via channel guide templates
    • XML nodes using the etv: namespace will be passed to the graphics engine EPG template data
    • For example, adding <etv:episode_number_key>{{ episode_number }}</etv:episode_number_key> to episode.sbntxt will also add the episode_number_key field to all EPG items in the graphics engine
    • All values parsed from XMLTV will be available as strings in the graphics engine (not numbers)
    • All etv: nodes will be stripped from the XMLTV data when requested by a client
  • Add channel troubleshooting button to channels list
    • This will open the playback troubleshooting tool in "channel" mode
    • This mode requires entering a date and time, and will play up to 30 seconds of one item from that channel's playout starting at the entered date and time
  • Block schedules: add copy template button to templates table

Fixed

  • Fix HLS Direct playback with Jellyfin 10.11
  • Fix remote stream scripts (parsing issue with spaces and quotes)
  • Fix block history being removed when it is still needed for mirror channel
    • This caused playout build errors like "Unable to locate history for playout item"
  • Fix crashes due to invalid smart collection searches, e.g. smart_collection:"this collection does not exist"
  • Fix UI crash when editing block playout that has default deco
  • Fix playback failure when seeking content with certain DTS audio (e.g. DTS-HD MA)
  • Properly set explicit audio decoder on combined audio and video input file
  • Fix building sequential schedules across a UTC offset change
  • Fix block start time calculation across a UTC offset change
  • Fix classic schedule start time calculation across a UTC offset change
  • Fix XMLTV generation for channels using on-demand playout mode
  • Fix some file not found songs missing from trash view
  • Fix error/offline screen generation
  • Fix subtitle title sync from Jellyfin libraries
    • Deep scans will be required to update subtitle titles on existing media items
  • Fix saving subtitle title changes to the database
    • This fixes e.g. where stream selection would continue to use the original title
    • This fix applies to all libraries (local and media server)
  • Fix (3 year old) bug removing tags from local libraries when they are removed from NFO files (all content types)
    • New scans will properly remove old tags; NFO files may need to be touched to force updating during a scan
  • Fix bug where looping motion graphics wouldn't be displayed when seeking into second half of content
  • Fix content_total_duration value in graphics engine opacity expressions
    • This bug caused some graphics elements to display too early after first joining a channel
  • Optimize database calls made for search index rebuilds and updates
    • This should improve performance of library scans
  • Add toggle to hide/show disabled channels in channel list
  • Add disabled text color and (D) and (H) labels for disabled and hidden channels in channel list
  • Graphics engine: fix subtitle path escaping and font loading
  • Fix corrupt output (green artifacts) when decoding certain 10-bit content using AMD Polaris GPUs
  • Work around sequential schedule validation limit (1000/hr by Newtonsoft.Json.Schema library)
    • Playout builds now use JsonSchema.Net library which has no validation limit
    • Validation tool in the UI still uses Newtonsoft.Json.Schema (with 1000/hr limit) as the error output is easier to understand
  • Fix editing scripted and sequential playouts when using MySql
  • Fix HLS Direct streams remaining open after client disconnect
  • Always log scanner exit code when it is non-zero

Changed

  • Classic schedules: Refresh classic playouts from playout list; do not Reset them
    • This mode maintains progress; progress can be reset by editing the playout and clicking Erase Items and History
  • Use smaller batch size for search index updates (100, down from 1000)
    • This should help newly scanned items appear in the UI more quickly
  • Replace favicon and logo in background image used for error streams
  • Block schedules:
    • Auto scroll day view to block item time when adding and removing block items from template
    • Allow keyboard selection of
      • Block groups in block list
      • Template groups in template list
      • Block groups and blocks in template editor
    • Replace template tree view with searchable table (like blocks)
  • Upgrade to dotnet 10
An error has occurred. This application may no longer respond until reloaded. Reload 🗙