v0.12.5 — FFMPEG Builder, Performance Fix, Channel Badges & More
🆕 FFMPEG Builder (New Tab)
A full visual FFMPEG command builder for IPTV stream transcoding:
- Input source configuration — URL, file, or device input with protocol options
- Video codec settings — H.264, H.265/HEVC, VP9, AV1 with full parameter control (bitrate, CRF, preset, profile, tune)
- Audio codec settings — AAC, AC3, MP3, Opus, FLAC with bitrate, sample rate, and channel layout
- Video filters — Scale, deinterlace, denoise, sharpen, framerate conversion, crop/pad
- Audio filters — Volume normalization, loudnorm, equalizer, compressor, channel mixing
- Stream mapping — Select specific video/audio/subtitle streams from multi-stream sources
- IPTV-optimized presets — Low-latency HLS, passthrough, AC3 audio, and more one-click presets
- Live command preview — Real-time ffmpeg command generation with annotated explanations for every flag
- Stream probing — Probe any media source via ffprobe to detect codecs, resolution, bitrate
- Command validation — Validates configuration for errors and warnings before generating
- ECM integration — Push generated profiles directly to Dispatcharr as stream profiles
- Saved profiles — Save/load FFMPEG configurations with persistence to database
- Bundled reference docs — Full ffmpeg, codec, and filter documentation available in-app
⚡ Performance: Fix 100% CPU Browser Freeze (#5)
- Fixed critical issue where the browser tab pegged at 100% CPU for users with large stream counts (27,000+)
- Root cause: the app was fetching ALL streams in a tight loop (54+ API requests) on every page load
- Streams now load per-group on demand when expanding a group in the streams pane
- Search fetches only the first page of server-filtered results instead of all pages
🆕 Channel Badges & Stream Status Filters
- New green "good channels" badge on group headers between total and failed counts
- Unified badge styling with consistent border-radius across all group headers
- New stream status filters — filter channel list by failed, working, or unprobed streams
🔒 Auto Token Refresh
- Access tokens now auto-refresh on 401 errors in the HTTP client
- No more random session timeouts forcing page reloads
🎨 UI Improvements
- Replaced inline error messages with toast notifications across panels (bandwidth, popularity, watch history, guide)
- CSS color token refinements across all tabs for better contrast and visual hierarchy
- Auto-creation ActionEditor: auto-sets
find_channel_bywhen switching to existing channel target
🆕 Portable Auto-Creation YAML Import/Export
- YAML exports now include human-readable group names and M3U account names alongside numeric IDs
- Importing on a different instance resolves names to local IDs automatically (case-insensitive)
- Warnings shown for unresolvable names instead of silent failures
🔧 CLI Password Reset
- New
reset_password.pyutility for resetting user passwords from the command line - Interactive mode (lists users, prompts for password) and non-interactive mode for scripting
- Usage:
docker exec -it ecm-ecm-1 python /app/reset_password.py
⚙️ Backend
- Task engine: separate
send_alertscontrol fromshow_notifications - Dispatcharr client:
create_stream_profilesupport for ECM integration - New
FFmpegProfiledatabase model for saved FFMPEG configurations
📝 Documentation
- Updated README with full API endpoint tables and Swagger/OpenAPI docs
- Updated User Guide with all features through v0.12.x
🧪 Testing
- 15 new backend unit test files for FFMPEG builder modules
- 1 FFMPEG API integration test
- 14 new FFMPEG builder E2E test specs
- 8 new stream loading unit tests
- 5 new stream loading E2E tests
- All 981 frontend unit tests pass, all 33 channel E2E tests pass
Closes #5