Skip to content

Releases: bernouilli90/Stream-plus

v0.3.3

Choose a tag to compare

@bernouilli90 bernouilli90 released this 26 Oct 13:39

[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_profiles to assigned_profiles with backward compatibility
    • UI Update: Changed "Protected Profiles" to "Assigned Profiles" in modal interface
    • API Update: All endpoints now use assigned_profiles field instead of disable_profiles

bernouilli/stream-plus:0.3.3

v0.3.2

Choose a tag to compare

@bernouilli90 bernouilli90 released this 26 Oct 10:28

[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_background function
  • Error during Docker container init

bernouilli/stream-plus:0.3.2

v0.3.1

Choose a tag to compare

@bernouilli90 bernouilli90 released this 25 Oct 13:49

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_profiles is 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

Choose a tag to compare

@bernouilli90 bernouilli90 released this 25 Oct 12:13

[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

Choose a tag to compare

@bernouilli90 bernouilli90 released this 18 Oct 10:31

[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
  • M3U Refresh Timestamp Persistence: CLI rule execution now saves M3U refresh timestamps
    • Timestamp stored in m3u_refresh_state.json after 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

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

Choose a tag to compare

@bernouilli90 bernouilli90 released this 16 Oct 22:17

[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.3

Docker image

bernouilli/stream-plus:0.2.6

v0.2.5

Choose a tag to compare

@bernouilli90 bernouilli90 released this 15 Oct 21:41

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_source conditions 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

Choose a tag to compare

@bernouilli90 bernouilli90 released this 15 Oct 15:55

[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_ids now apply only to channels within specified groups

v0.2.3

Choose a tag to compare

@bernouilli90 bernouilli90 released this 14 Oct 21:22

[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

Choose a tag to compare

@bernouilli90 bernouilli90 released this 13 Oct 18:10

Enhanced

  • Stream testing error logging: Significantly improved error logging when stream tests fail with detailed diagnostic information

Technical Details

  • Enhanced test_stream() method in dispatcharr_client.py with 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