- Introduced stale_stream_days field to M3UAccount to specify the retention period for streams.
- Updated cleanup_streams task to remove streams not seen within the specified stale_stream_days.
- Enhanced M3U form to include stale_stream_days input for user configuration.
## Performance Improvements
- Optimized uWSGI configuration settings for better server performance
- Improved asynchronous processing by converting additional timers to gevent
## Network Improvements
- Enhanced EPG (Electronic Program Guide) downloading with proper user agent headers
## UI Improvements
- Fixed issue with "add streams to channel" functionality to correctly follow disabled state logic
## What's New in This Release
This update brings significant improvements to performance, user experience, and stability across the application. We've revamped tables for better responsiveness, enhanced streaming capabilities, and fixed numerous bugs.
### 🔧 Major Improvements
- **Table System Rewrite**: Completely refactored channel and stream tables for dramatically improved performance with large datasets
- **Manual Stream Switching**: Added ability to manually switch between streams for a channel
- **EPG Auto-Match Notifications**: Users now receive feedback about how many matches were found during auto-matching
- **Improved Concurrency**: Replaced time.sleep with gevent.sleep for better performance when handling multiple streams
### 🖥️ UI/UX Enhancements
- Added URL copy buttons for stream and channel URLs
- Fixed spacing and padding in EPG and M3U tables for better readability on smaller displays
- Added informative tooltips throughout the interface, including stream profiles and user-agent details
- Improved table interactions:
- Restored alternating row colors and hover effects
- Added shift-click support for multiple row selection
- Preserved drag-and-drop functionality
- Adjusted logo display to prevent layout shifts with different sized logos
- Improved sticky headers in tables
### 📺 Streaming & Channel Management
- Fixed stream ordering in channel selection
- Added M3U profile name to stream names for better identification
- Fixed channel form not updating some properties after saving
- Improved stream URL handling for search/replace patterns
- Enhanced stream lock management for better reliability
- Added stream name to channel status for better visibility
- Properly track current stream ID during stream switches
- Fixed issue with setting logos to default
### 📊 Stats & Monitoring
- Added display of connected time for each client
- Fixed issues with channel statistics randomly not working
- Added current M3U profile information to stats
- Added better logging for which channel clients are getting chunks from
### 🔄 EPG & M3U Processing
- Improved EPG cache handling and cleanup of old cache files
- Corrected content type for M3U file (using m3u instead of m3u8)
- Fixed logo URL handling in M3U generation
- Enhanced tuner count calculation to include only active M3U accounts
### 🐛 Bug Fixes
- Fixed channel creation from streams
- Fixed channel group saving
- Improved error handling throughout the application
- Fixed bugs in deleting stream profiles
- Resolved mimetype detection issues
- Fixed form display issues
- Added proper requerying after form submissions and item deletions
- Fixed bug overwriting tvg-id when loading TV Guide
- Fixed bug that prevented large m3u's and epg's from uploading
- Fixed typo in Stream Profile header column for Description (Thank you LoudSoftware for the PR!)
- Fixed typo in m3u input processing (tv-chno instead of tvg-chno) (Thank you @www2a for the PR!)
## Technical Improvements
- Increased thread stack size in uwsgi configuration
- Changed proxy to use uwsgi socket
- Added build timestamp to version information
- Reduced excessive logging during M3U/EPG file importing
- Improved store variable handling to increase application efficiency
---
**The Dispatcharr Team** – Happy Streaming! 🚀
Add batch EPG association endpoint and improve EPG matching logic
- Implemented a new API endpoint to associate multiple channels with EPG data in a single request.
- Enhanced the EPG matching process to normalize TVG IDs and log relevant information.
- Updated frontend to handle batch EPG associations efficiently, falling back to legacy methods when necessary.