🔥 This is a big one! 🔥 A ton of new and enhanced features, better performance, and optimizations all around 😉
Some of the notable additions this round:
- EPG Viewer - you can now view your EPG display in-app!
- Playlist Viewer - see how your playlist will look in a native EPG view, with playback support (multi-stream support included!)
- In-app player has been completely re-written to use mpegts.js and hls.js internally
- EPG Caching - optimized performance and full support for Xtream API EPG endpoints (full, partial, by channel, custom number of days, etc.)
- Completely refactored proxy - allows for quicker startup, failover support (mid-stream), timeshift, and other performance optimizations.
New Features
- Added xTeVe-like proxy functionality and new proxy models for better overall proxy functionality. Also adds the ability for for multiple clients to connect to the same TS stream (this was always possible with HLS).
- Implemented stats page and widgets for shared streams.
- Added error logging and improved stream cleanup.
- Implemented channel failover for buffered streaming! 🎉 channel failover happens mid-stream! Simply assign any channels as a failover to your primary channel and if there's on error on the primary channel, the failover(s) will automatically be tried. Transitions in client is seamless.
- Added test streams for debugging and test cases for shared streams.
- Added EPG file cache and cache health check job! 🎉 EPG now uses advanced caching for better performance. This also allows us to have an in-app EPG viewer 📺
- Added multi-stream support to EPG view (you can watch multiple streams simultaneously within the Playlist detail view)
- Added email notifications and conditionals for post processing! 🎉 you can now send emails for post processing. Additional variables are also included, as well as advanced conditional logic option to determine when a post process should run, or not run.
- Added Schedules Direct integration and days to import option! 🎉 Schedules Direct support for your EPG. We'll generate an XML and you can also feed it through the Xtream API to players like TiviMate
- Added stream file sync options to global settings! 🎉 set series stream file sync settings globally for all Series (can still be set/overridden on a per-series basis as needed)
- Added automatic login and branch-specific version info in update widget! 🎉 added ability to disable authentication (if you're running something like Authentik
- Added override option to allow forcing proxy for in-app video streaming! 🎉 in-app video player can now play TS and HLS streams directly! No need to proxy, however, you can still enable proxy for all in-app video playback if desired
- Added timeshift abilities for proxy and support for HLS and TS! 🎉 big thanks to @djrarky for the help on this one! 🙏
- Added ability to assign to group when adding to custom playlist.
- Added playlist sync invalidation logic to settings.
- Added channel matching logic for better Xtream API support.
- Added run button to EPG Mappings to allow running mappings on-demand, instead of waiting for EPG sync.
- Added stream info to player info overlay.
- Added URL, format, and proxy info to the in-app player.
Fixes
- Fixed incorrect job cleanup query and added vacuum to SQLite.
- Fixed buffer not properly cleaned up on stream stop.
- Fixed provider name and title values not updating on sync.
- Fixed EPG mapping and channel mapping issues.
- Fixed user agent not set on EPG auto-create.
- Fixed EPG grid layout, pagination, and loading indicator issues.
- Fixed stream player and video playback issues (TS, HLS, MKV, MP4).
- Fixed failover logic, routing, and client migration for shared/buffered streams.
- Fixed stats tracking, stream cleanup, and client count updates.
- Fixed Xtream API output and endpoint issues.
- Fixed test stream playback and looping.
- Fixed post process validation and sync count.
- Fixed route ordering and playlist creation issues.
- Fixed system health widgets and dashboard stats.
- Fixed buffer logic, race conditions, and resource usage in streaming.
- Fixed method visibility, undefined methods, and array key errors.
- Fixed various bugs in EPG cache, sync, and view.
Technical Improvements
- Refactored navigation, labels, and stream monitor.
- Adjusted EPG cache logic, retry timing, and health checks.
- Improved queue memory/time limits and EPG sync logic.
- Cleaned up sync jobs, decoupled EPG cache, and improved error notifications.
- Increased backup timeout and added failure logging.
- Updated log output order and reduced debug output.
- Enhanced stream cleanup, error handling, and buffer management.
- Optimized SQLite usage and moved sessions to Redis.
- Updated Docker build and container version tracking.
- Improved EPG cache generation, job frequencies, and performance.
- Cleaned up EPG detail, playlist, and settings pages.
- Updated Filament and Livewire dependencies.
- Improved test coverage and added/updated test cases for new features.
- Consolidated tools menu and improved shared stream startup logic.
- Enhanced stream buffer functionality and optimized shared streaming.
Contributions
- Refined Failover Logic by @drondeseries in #245
- Dev by @drondeseries in #250
- Dev by @drondeseries in #252
- Add configurable ffprobe_path to allow jellyfin's ffprobe by @Redth in #256
- Dev by @drondeseries in #260
- Feature/merge unmerge channels by @drondeseries in #265
- Fix(Jobs): Avoid using empty stream_id when doing Merge Stream ID by @drondeseries in #268
- chore(deps): Bump livewire/livewire from 3.6.3 to 3.6.4 by @dependabot[bot] in #272
- chore(deps-dev): Bump form-data from 4.0.3 to 4.0.4 in the npm_and_yarn group across 1 directory by @dependabot[bot] in #276
- Implement timeshift function by @djrarky in #292
Full Changelog: 0.6.18...0.7.0