@ -26,7 +26,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- ETV versions through v0.8.4-beta (using dotnet 7) stored config data in `$HOME/.local/share/ersatztv`
- ETV versions through v0.8.4-beta (using dotnet 7) stored config data in `$HOME/.local/share/ersatztv`
- ETV versions starting with v0.8.5-beta (using dotnet 8) store config data in `$HOME/Library/Application Support/ersatztv`
- ETV versions starting with v0.8.5-beta (using dotnet 8) store config data in `$HOME/Library/Application Support/ersatztv`
- If a dotnet 8 version of ETV has NOT been launched on MacOS, it will automatically migrate the config folder on startup
- If a dotnet 8 version of ETV has NOT been launched on MacOS, it will automatically migrate the config folder on startup
- If a dotnet 8 version of ETV *has* been launched on MacOS, a failing health check will display with instructions on how to resolve the config issue to restore data
- If a dotnet 8 version of ETV *has* been launched on MacOS, a failing health check will display with instructions on how to resolve the config issue to restore data
- Add `Video Profile` setting to `FFmpeg Profile` editor when `h264` format is selected
- Add `Video Profile` setting to `FFmpeg Profile` editor when `h264` format is selected
- Add `Video Preset` setting to `FFmpeg Profile` editor for some combinations of acceleration and video format:
- Add `Video Preset` setting to `FFmpeg Profile` editor for some combinations of acceleration and video format:
- `Nvenc` / `h264`
- `Nvenc` / `h264`
@ -72,17 +72,20 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- `Something.sdh.en.srt`
- `Something.sdh.en.srt`
- `Something.en.forced.srt`
- `Something.en.forced.srt`
- `Something.en.sdh.srt`
- `Something.en.sdh.srt`
- Fix playback from Jellyfin 10.9 by allowing playlist HTTP HEAD requests
- Fix playback from Jellyfin 10.9 by allowing playlist HTTP HEAD requests
@ -189,11 +192,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- GET `/api/sessions`
- GET `/api/sessions`
- Show brief info about all active sessions
- Show brief info about all active sessions
- DELETE `/api/session/{channel-number}`
- DELETE `/api/session/{channel-number}`
- Stop the session for the given channel number
- Stop the session for the given channel number
- Add channel preview (web-based video player)
- Add channel preview (web-based video player)
- Channels MUST use `H264` video format and `AAC` audio format
- Channels MUST use `H264` video format and `AAC` audio format
- Channels MUST use `MPEG-TS` or `HLS Segmenter` streaming modes
- Channels MUST use `MPEG-TS` or `HLS Segmenter` streaming modes
- Since `MPEG-TS` uses `HLS Segmenter` under the hood, the preview player will use `HLS Segmenter`, so it's not 100% equivalent, but it should be representative
- Since `MPEG-TS` uses `HLS Segmenter` under the hood, the preview player will use `HLS Segmenter`, so it's not 100% equivalent, but it should be representative
- Add button to stop transcoding session for each channel that has an active session
- Add button to stop transcoding session for each channel that has an active session
- Add more log levels to `Settings` page, allowing more specific debug logging as needed
- Add more log levels to `Settings` page, allowing more specific debug logging as needed
- Default Minimum Log Level (applies when no other categories/level overrides match)
- Default Minimum Log Level (applies when no other categories/level overrides match)
@ -209,10 +212,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Update show year when changed within Plex
- Update show year when changed within Plex
- Fix crop scale behavior with NVIDIA, QSV acceleration
- Fix crop scale behavior with NVIDIA, QSV acceleration
- Fix bug that corrupted uploaded images (watermarks, channel logos)
- Fix bug that corrupted uploaded images (watermarks, channel logos)
- Re-uploading images should fix them
- Re-uploading images should fix them
- Recreate XMLTV channel list (including logos) when channels are edited in ErsatzTV
- Recreate XMLTV channel list (including logos) when channels are edited in ErsatzTV
- This bug caused the ErsatzTV logo to be used instead of channel logos in some cases
- This bug caused the ErsatzTV logo to be used instead of channel logos in some cases
- Update drop down search results in main search bar when items are created/edited/removed
- Update drop down search results in main search bar when items are created/edited/removed
- Fix green line at bottom of video when NVIDIA accel is used with intermittent watermark
- Fix green line at bottom of video when NVIDIA accel is used with intermittent watermark
- Fix error starting streaming session when subtitles are still being extracted for the current item
- Fix error starting streaming session when subtitles are still being extracted for the current item
@ -332,7 +335,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
### Fixed
### Fixed
- Only allow a single instance of ErsatzTV to run
- Only allow a single instance of ErsatzTV to run
- This fixes some cases where the search index would become unusable
- This fixes some cases where the search index would become unusable
- Fix VAAPI rate control mode capability check
- Fix VAAPI rate control mode capability check
### Changed
### Changed
- Rework startup process to show UI as early as possible
- Rework startup process to show UI as early as possible
@ -378,14 +381,14 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- `MKV` output format: stream copy any embedded subtitles
- `MKV` output format: stream copy any embedded subtitles
### Fixed
### Fixed
- Fix extracting embedded text subtitles that had been incompletely extracted in the past
- Fix extracting embedded text subtitles that had been incompletely extracted in the past
- Fix fallback filler looping by forcing software mode for this content
- Fix fallback filler looping by forcing software mode for this content
- Other content will still use hardware acceleration as configured
- Other content will still use hardware acceleration as configured
- Hardware-accelerated fallback filler may be re-enabled in the future
- Hardware-accelerated fallback filler may be re-enabled in the future
- Fix playout building when shuffle in order is used with a single media item
- Fix playout building when shuffle in order is used with a single media item
- Fix pgs subtitle burn in from media server libraries
- Fix pgs subtitle burn in from media server libraries
- Fix subtitle and watermark overlays with RadeonSI VAAPI driver
- Fix subtitle and watermark overlays with RadeonSI VAAPI driver
- Fix NVIDIA pipeline to use hardware-accelerated decoder with 8-bit h264 content
- Fix NVIDIA pipeline to use hardware-accelerated decoder with 8-bit h264 content
### Changed
### Changed
- Timeout playout builds after 2 minutes; this should prevent playout bugs from blocking other functionality
- Timeout playout builds after 2 minutes; this should prevent playout bugs from blocking other functionality
@ -435,7 +438,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
### Changed
### Changed
- Use Poster artwork for XMLTV if available
- Use Poster artwork for XMLTV if available
- If Poster artwork is unavailable, use Thumbnail
- If Poster artwork is unavailable, use Thumbnail
- Improve XMLTV response time by caching data as playouts are updated
- Improve XMLTV response time by caching data as playouts are updated
## [0.7.6-beta] - 2023-03-24
## [0.7.6-beta] - 2023-03-24
### Added
### Added
@ -529,13 +532,13 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
### Changed
### Changed
- Merge generated `Other Video` folder tags with tags from sidecar NFO
- Merge generated `Other Video` folder tags with tags from sidecar NFO
- Prioritize audio streams that are flagged as "default" when multiple candidate streams are available
- Prioritize audio streams that are flagged as "default" when multiple candidate streams are available
- For example, a video with a stereo commentary track and a stereo "default" track will now prefer the "default" track
- For example, a video with a stereo commentary track and a stereo "default" track will now prefer the "default" track
## [0.7.3-beta] - 2023-01-25
## [0.7.3-beta] - 2023-01-25
### Added
### Added
- Attempt to release memory periodically
- Attempt to release memory periodically
- Add OpenID Connect (OIDC) support (e.g. Keycloak, Authelia, Auth0)
- Add OpenID Connect (OIDC) support (e.g. Keycloak, Authelia, Auth0)
- This only protects the management UI; all streaming endpoints will continue to allow anonymous access
- This only protects the management UI; all streaming endpoints will continue to allow anonymous access
- This can be configured with the following env vars (note the double underscore separator `__`)
- This can be configured with the following env vars (note the double underscore separator `__`)
- `OIDC__AUTHORITY`
- `OIDC__AUTHORITY`
- `OIDC__CLIENTID`
- `OIDC__CLIENTID`
@ -553,7 +556,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Day of week
- Day of week
- Day of month
- Day of month
- Month
- Month
- The lowest priority (bottom) item will always match all parameters, and can be considered a "default" or "fallback" schedule
- The lowest priority (bottom) item will always match all parameters, and can be considered a "default" or "fallback" schedule
### Fixed
### Fixed
- Fix schedule editor crashing due to bad music video artist data
- Fix schedule editor crashing due to bad music video artist data
@ -585,7 +588,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Fix song playback with VAAPI and NVENC
- Fix song playback with VAAPI and NVENC
- Fix edge case where some local movies would not automatically be restored from trash
- Fix edge case where some local movies would not automatically be restored from trash
- Fix synchronizing Jellyfin and Emby collection items
- Fix synchronizing Jellyfin and Emby collection items
- Fix saving some external subtitle records to database
- Fix saving some external subtitle records to database
### Changed
### Changed
- Upgrade to dotnet 7
- Upgrade to dotnet 7
@ -663,7 +666,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
### Added
### Added
- Add music video credits template system
- Add music video credits template system
- Templates are selected in each channel's settings
- Templates are selected in each channel's settings
- Templates should be copied from `_default.ass.sbntxt` which is located in the config subfolder `templates/music-video-credits`
- Templates should be copied from `_default.ass.sbntxt` which is located in the config subfolder `templates/music-video-credits`
- Copy the file, give it any name ending with `.ass.sbntext`, and only make edits to the copied file
- Copy the file, give it any name ending with `.ass.sbntext`, and only make edits to the copied file
- The default template will be extracted and overwritten every time ErsatzTV is started
- The default template will be extracted and overwritten every time ErsatzTV is started
@ -738,7 +741,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Replace `setsar` filter with `setdar` filter
- Replace `setsar` filter with `setdar` filter
- `setsar` caused issues scaling between two different aspect ratios
- `setsar` caused issues scaling between two different aspect ratios
- For example, some 4:3 content would appear stretched when scaled to a 16:9 resolution
- For example, some 4:3 content would appear stretched when scaled to a 16:9 resolution
- `setdar` is now only used when aspect ratios match
- `setdar` is now only used when aspect ratios match
- Prioritize aspect ratio from container when video stream contains conflicting aspect ratio
- Prioritize aspect ratio from container when video stream contains conflicting aspect ratio
- This is usually caused by bad authoring, but the change should improve scaling behavior for edge cases
- This is usually caused by bad authoring, but the change should improve scaling behavior for edge cases
@ -841,7 +844,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Reduce memory use due to library scan operations
- Reduce memory use due to library scan operations
- Fix some instances of filler getting "stuck" when a filler item is encountered that's too long for the gap
- Fix some instances of filler getting "stuck" when a filler item is encountered that's too long for the gap
- Properly ignore Plex `Other Videos` libraries (`movie` libraries where agent is `com.plexapp.agents.none`)
- Properly ignore Plex `Other Videos` libraries (`movie` libraries where agent is `com.plexapp.agents.none`)
- Fix `Custom Title` for schedule items with `One`, `Multiple` and `Flood` playout modes
- Fix `Custom Title` for schedule items with `One`, `Multiple` and `Flood` playout modes
- Fix scheduling bug where flood items would sometimes fail to continue after midnight
- Fix scheduling bug where flood items would sometimes fail to continue after midnight
### Added
### Added
@ -871,7 +874,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Fix occasional erroneous log messages when HLS channel playback times out because all clients have left
- Fix occasional erroneous log messages when HLS channel playback times out because all clients have left
- Fix fallback filler playback
- Fix fallback filler playback
- Fix stream continuity when error messages are displayed
- Fix stream continuity when error messages are displayed
- Fix duplicate scanning within `Other Video` libraries (i.e. folders would be scanned multiple times)
- Fix duplicate scanning within `Other Video` libraries (i.e. folders would be scanned multiple times)
### Added
### Added
- Add `show_genre` and `show_tag` to search index for seasons and episodes
- Add `show_genre` and `show_tag` to search index for seasons and episodes
@ -959,7 +962,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Fix setting VAAPI driver name
- Fix setting VAAPI driver name
- Fix ffmpeg troubleshooting reports
- Fix ffmpeg troubleshooting reports
- Fix bug where filler would behave as if it were configured to pad even though a different mode was selected
- Fix bug where filler would behave as if it were configured to pad even though a different mode was selected
- Fix bug where mid-roll count filler would skip scheduling the final chapter in an episode
- Fix bug where mid-roll count filler would skip scheduling the final chapter in an episode
### Added
### Added
- Add `Empty Trash` button to `Trash` page
- Add `Empty Trash` button to `Trash` page
@ -1266,7 +1269,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- When streaming is attempted during an unscheduled gap, the resulting video will be determined using the following priority:
- When streaming is attempted during an unscheduled gap, the resulting video will be determined using the following priority:
- Channel fallback filler
- Channel fallback filler
- Global fallback filler
- Global fallback filler
- Generated `Channel Is Offline` error message video
- Generated `Channel Is Offline` error message video
### Changed
### Changed
- Allow per-episode folders for local show libraries
- Allow per-episode folders for local show libraries
@ -1374,7 +1377,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
## [0.1.0-alpha] - 2021-10-08
## [0.1.0-alpha] - 2021-10-08
### Added
### Added
- Add *experimental* streaming mode `HLS Segmenter` (most similar to `HLS Hybrid`)
- Add *experimental* streaming mode `HLS Segmenter` (most similar to `HLS Hybrid`)
- This mode is intended to increase client compatibility and reduce issues at program boundaries
- This mode is intended to increase client compatibility and reduce issues at program boundaries
- If you want the temporary transcode files to be located on a particular drive, the docker path is `/root/.local/share/etv-transcode`
- If you want the temporary transcode files to be located on a particular drive, the docker path is `/root/.local/share/etv-transcode`
- Store frame rate with media statistics; this is needed to support HLS Segmenter
- Store frame rate with media statistics; this is needed to support HLS Segmenter
@ -1410,7 +1413,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- See `Logs` for unmatched item details
- See `Logs` for unmatched item details
- Trakt lists can only be scheduled by using Smart Collections
- Trakt lists can only be scheduled by using Smart Collections
- Add seasons to search index
- Add seasons to search index
- This is needed because Trakt lists can contain seasons
- This is needed because Trakt lists can contain seasons
- This requires rebuilding the search index and search results may be empty or incomplete until the rebuild is complete
- This requires rebuilding the search index and search results may be empty or incomplete until the rebuild is complete
### Fixed
### Fixed
@ -1762,7 +1765,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Limit channels to one playout per channel
- Limit channels to one playout per channel
- Though more than one playout was previously possible it was unsupported and unlikely to work as expected, if at all
- Though more than one playout was previously possible it was unsupported and unlikely to work as expected, if at all
- A future release may make this possible again
- A future release may make this possible again
## [0.0.32-prealpha] - 2021-04-09
## [0.0.32-prealpha] - 2021-04-09
### Added
### Added
- `Add All To Collection` button to quickly add all search results to a collection
- `Add All To Collection` button to quickly add all search results to a collection