Releases: bernouilli90/Stream-plus
Releases · bernouilli90/Stream-plus
Release list
v0.3.3
[0.3.3] - 2025-10-27
Changed
- Major Profile Logic Inversion: Completely inverted the channel profile management logic from "protected profiles" to "assigned profiles"
- Before: Selected profiles were "protected" (NOT disabled when no streams matched)
- After: Selected profiles are "assigned" (enabled when streams ARE found, disabled everywhere when no streams)
- New Logic:
- When streams are found: Enable channel in selected profiles (or all profiles if none selected)
- When no streams match: Disable channel in ALL profiles
- Migration: Existing rules automatically convert
disable_profilestoassigned_profileswith backward compatibility - UI Update: Changed "Protected Profiles" to "Assigned Profiles" in modal interface
- API Update: All endpoints now use
assigned_profilesfield instead ofdisable_profiles
bernouilli/stream-plus:0.3.3
v0.3.2
[0.3.2] - 2025-10-26
Fixed
- Profile Disabling API Parameter Order: Fixed critical bug where channels were not being disabled in profiles when no streams matched auto-assignment rules
- Fix: Corrected parameter order in all 4 affected API calls in
execute_auto_assignment_in_backgroundfunction
- Fix: Corrected parameter order in all 4 affected API calls in
- Error during Docker container init
bernouilli/stream-plus:0.3.2
v0.3.1
Changed
- Auto-Assignment Profile Disabling Logic: When no profiles are selected in a rule, channels are now automatically disabled in ALL profiles when no streams match the rule conditions
- Previously: Only disabled in specific selected profiles
- Now: If
disable_profilesis empty/None, disables channel in all available profiles - Maintains backward compatibility for rules with specific profile selections
bernouilli/stream-plus:0.3.1
v0.3.0
[0.3.0] - 2025-10-25
Added
- Pixel Format Support: Complete pixel format extraction and condition support
- Stream Statistics: ffprobe now extracts pixel format (yuv420p, yuv420p10le, etc.) from video streams
- Auto-Assignment Rules: New pixel format conditions with exact string matching operators
- Stream Sorting Rules: Pixel format conditions for stream scoring and sorting
- Frontend Integration: Pixel format inputs and display in rule previews and modals
- Manual Stream Overrides: Force-include or force-exclude specific streams in auto-assignment rules
- Force Include: Streams assigned to channels regardless of rule conditions
- Force Exclude: Streams excluded from channels even if they match all conditions
- UI components with search and visual stream badges
- Logic applied during both testing and evaluation phases
- Stream Testing User-Agent: Configurable user-agent to prevent provider detection
- Default: Chrome 132.0.0.0 Windows user-agent
- Environment variable:
STREAM_TEST_USER_AGENT - Prevents blocking by user-agent sensitive stream providers
- Dispatcharr Statistics Dashboard: Comprehensive overview on home page
- Groups with channels, total channels, streams, and assignment statistics
- Real-time data loading with automatic refresh
- Score Breakdown Tooltips: Detailed scoring information in stream sorter previews
- Hover tooltips showing individual condition contributions
- Bootstrap tooltips with formatted HTML display
- Real-time tooltip initialization after data loads
Changed
- Complete Stream Testing Failure Behavior: All stream statistics are now cleared whenever ANY part of stream testing fails
- ffprobe failures: When ffprobe command fails or returns invalid data, all stats are cleared
- ffmpeg failures: When ffmpeg fails to calculate bitrate, all stats are cleared (previous change)
- Timeouts: When stream testing times out, all stats are cleared
- General errors: When any exception occurs during testing, all stats are cleared
- Consistent behavior: Stream testing now requires complete success of both ffprobe and ffmpeg for stats to be saved
Fixed
- Critical Stream Testing Bugs: Multiple fixes for testing reliability
- UnboundLocalError: Fixed variable scope issues in logging code
- Stats Clearing: Proper removal of stale statistics on test failures
- Stream Re-testing: Fixed logic for testing streams with existing stats
- API Compatibility: Changed from PATCH to PUT for stats clearing operations
- Rule Evaluation Issues: Consistent filtering and evaluation logic
- M3U Source Conditions: Fixed sorting rules with M3U account filtering
- Stream Enrichment: Added M3U data enrichment before sorting evaluation
- Group Resolution: Proper channel-to-group expansion in CLI execution
- UI Template Issues: Fixed JavaScript and template syntax problems
- Search Functionality: Resolved critical errors in rule filtering
- Bulk Operations: Fixed success message display and page reload
- Dropdown Overflow: Improved positioning and boundary management
- Version Display: Better contrast and visibility in footer
Technical Details
- API Enhancements: Pixel format data available in all stream statistics
- Repository Cleanup: Removed all unnecessary test files and development artifacts
bernouilli/stream-plus:0.3.0
v0.2.7
[0.2.7] - 2025-10-18
Added
- CLI M3U Refresh Integration: M3U sources are now automatically refreshed before executing rules via CLI
- Auto-assignment rules (
execute_rules.py --assignment) now refresh M3U sources first - Sorting rules (
execute_rules.py --sorting) now refresh M3U sources first - Ensures rules execute against the most current stream data
- Graceful error handling: rules execute even if M3U refresh fails
- Auto-assignment rules (
- M3U Refresh Timestamp Persistence: CLI rule execution now saves M3U refresh timestamps
- Timestamp stored in
m3u_refresh_state.jsonafter successful refresh - UTC timezone format for consistent storage
- Web UI displays accurate "Last M3U Refresh" times from CLI operations
- Same timestamp logic used across web interface and CLI execution
- Timestamp stored in
Enhanced
- Rule Execution Workflow: Improved CLI rule execution with integrated M3U refresh
- Clear console output showing refresh status before rule processing
- Timestamp updates only on successful M3U refresh operations
- Maintains backward compatibility with existing rule execution behavior
- FFprobe Stream Testing: Improved stream compatibility with ffprobe command
- Enhanced error handling with dual command approach
- Better success rate for streams with user-agent restrictions
Docker image
bernouilli/stream-plus:0.2.7
v0.2.6
[0.2.6] - 2025-10-16
Added
- Stream Testing User-Agent: Added configurable user-agent for ffmpeg/ffprobe stream testing
- Default user-agent: Chrome 132.0.0.0 Windows
- Environment variable:
STREAM_TEST_USER_AGENT - Prevents stream provider detection by mimicking browser requests
- Enhanced Stream Testing Logging: Added detailed command logging for ffmpeg and ffprobe operations
- FFmpeg command logged before bitrate calculation
- FFprobe command logged before metadata analysis
- Full command strings with all parameters including user-agent
- Improved readability with proper argument quoting
- Dynamic Channel Groups Loading: Channel groups are now reloaded on each page access
- Groups refresh when accessing index, auto-assign, and stream-sorter pages
- Ensures UI reflects real-time changes to channel groups
- Prevents stale group data during application runtime
- Dispatcharr Statistics Dashboard: Added comprehensive overview statistics to the home page
- Number of groups with channels assigned
- Total number of channels in Dispatcharr
- Total number of streams available
- Number of streams assigned to channels
- Real-time data loaded on each page access
- Fixed calculation logic to correctly count streams referenced in channel objects
- Fixed Jinja2 template filter error preventing dashboard display
- UI Cleanup: Removed useless text inputs from stream selector modals
- Eliminated redundant search inputs in force include/exclude sections
- Streamlined modal interface with descriptive action buttons
- Improved user experience by removing confusing UI elements
Configuration
Add to your .env file:
STREAM_TEST_USER_AGENT=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.3Docker image
bernouilli/stream-plus:0.2.6
v0.2.5
Added
- Manual Stream Inclusion/Exclusion: New feature allowing users to force-include or force-exclude specific streams in auto-assignment rules
- Force Include: Streams added to channel regardless of rule conditions
- Force Exclude: Streams excluded from channel even if they match all conditions
- UI components: Search and select streams with visual badges in rule cards and modals
- Logic improvements: Forced includes/excludes applied during both testing and evaluation phases
Fixed
- Sorting rules M3U source evaluation: Fixed sorting rules with
m3u_sourceconditions not being evaluated because streams lacked M3U account information - Consistent filtering logic: Ensured all execution paths (CLI, web interface, background) use the same stream filtering logic
Configuration
Manual stream overrides can be configured through the web interface or API:
{
"force_include_stream_ids": [1620],
"force_exclude_stream_ids": [2314, 2313]
}Docker image
bernouilli/stream-plus:0.2.5
v0.2.4
[0.2.4] - 2025-10-15
Fixed
- Sorting rules CLI channel selection: Fixed channel selection logic in CLI sorting rules execution to properly handle
channel_group_ids - Channel groups resolution: CLI now correctly resolves channel groups to their member channels instead of applying rules to all channels
- Group-based rule execution: Sorting rules with
channel_group_idsnow apply only to channels within specified groups
v0.2.3
[0.2.3] - 2025-10-14
Fixed
- Docker user permissions: Fixed UID/GID change functionality to work properly with runtime environment variables
- File ownership: Fixed ownership of automatically created rule files to match configured user instead of root
Add yours USER_UID & USER_GID to environment variables in docker-compose.yml:
- USER_UID=1000
- USER_GID=1000
v0.2.2
Enhanced
- Stream testing error logging: Significantly improved error logging when stream tests fail with detailed diagnostic information
Technical Details
- Enhanced
test_stream()method indispatcharr_client.pywith comprehensive error context - Added structured error details including stream metadata, executable paths, timeout information, and failure reasons
- Improved error messages for missing URLs, executable not found, timeouts, and save failures
- Added error type classification and contextual information for better debugging
Available via Docker: bernouilli/stream-plus:0.2.2