v0.14.0
Dummy EPG Engine
- Full dummy EPG system: create profiles with custom programs, assign to channels by group
- Group-based channel assignment with visual channel picker
- YAML export/import for dummy EPG profiles with overwrite support
- Auto-refresh after channel creation so EPG assignment succeeds in one pipeline run
Black Screen Detection
- Detect black screens during stream probing via FFmpeg frame analysis
- Black screen results visible in probe history, channel cards, and notifications
- Notification center shows black screen count indicator
- Propagate detection setting to running prober in real-time
Scheduled Tasks
- Failed stream re-probe task: automatically retry failed streams on a schedule
- Struck stream cleanup task: remove streams stuck in bad states
- Group picker for Run Now dialog
Auto-Creation Improvements
- Per-rule
skip_struck_streamsoption - Provider order and channel number sort options
assign_profileaction now available in the UIprobe_on_sortandorphan_actionincluded in YAML import/export- Template variable expansion for
assign_tvg_idandassign_logoactions - Batched verify-and-retry for EPG assignments after pass 2
UI/UX
- Consolidated channel and toolbar actions into three-dot menus
- Pattern builder for normalization rules with annotation canvas
- Substitution pairs editor component
Bug Fixes
- Fix normalization
regex_replace$1backreference substitution - Fix regex sort putting non-matching streams at bottom instead of top
- Fix EPG not assigned on initial channel creation
- Fix M3U profile toggle sending partial data causing 400 error
- Fix
show_notifications=Falseblocking external alerts (Telegram/Discord/Email) - Fix probe success alerts blocked by
min_failuresfilter - Fix M3U account deletion not cleaning up shared groups or linked account references
- Fix bulk create modal double-counting duplicate streams
- Dummy EPG profile delete cascade and import fixes
Infrastructure
- Configurable HTTP/HTTPS ports via environment variables
- Removed
pydantic-settingsdependency - Removed
batch_sizefrom stream prober (uses onlymax_concurrent_probes) - Architecture documentation with Mermaid diagrams