github kristofferR/IPTVChecker v1.2.0
v1.2.0 — Massive reliability improvements + Log window

latest releases: v1.9.0, v1.8.1, v1.8.0...
4 months ago

Log Window

  • New Log window accessible from View → Log or Alt+Cmd+L (Ctrl+Alt+L on Windows/Linux)
  • Shows live application logs from both the Rust backend and frontend in real-time
  • Level filter pills (Debug, Info, Warn, Error) to focus on what matters
  • Text search, auto-scroll with scroll-to-bottom FAB, and clear button
  • Virtualized rendering for performance with 10k+ entries
  • Frontend logger calls (logger.info, .warn, .error) are now bridged to the Rust log system, so all app activity is visible in one place

In-App Player Reliability

  • Xtream HLS conversion: MPEG-TS URLs from Xtream servers are automatically converted to their HLS variant (/live/user/pass/id.m3u8) for reliable playback via hls.js
  • Localhost streaming proxy: For MPEG-TS streams that can't use the URI scheme proxy (infinite body), a lightweight TCP server on localhost streams bytes through without buffering — works as a fallback when HLS conversion fails
  • Stream proxy improvements: URI scheme proxy now drops idle connections immediately (pool_max_idle_per_host=0) to avoid blocking single-connection IPTV servers
  • Better error reporting: All playback methods (native HLS, hls.js, mpegts.js, Xtream conversion, streaming proxy) are logged with which method was tried and why it failed
  • Stop button fix: Player UI no longer shows as "playing" after a timeout or all-methods-failed error

Scan Diagnostics

  • Single-connection diagnostics: For single-provider playlists (Xtream, Stalker), all diagnostics (metadata, screenshot, bitrate profiling) are consolidated into a single ffmpeg process — eliminates 5XX rejections from connection-limited IPTV servers
  • Mixed-provider optimization: Multi-host playlists keep the faster parallel flow (ffprobe + screenshot concurrent, then bitrate profiling) since they have no connection limits
  • Automatic detection: The approach is selected automatically via single_provider detection (≥90% of channels share the same host)
  • Connection pool management: Scan client disables connection pooling for single-provider playlists so HTTP connections don't linger and block ffmpeg

Bitrate Improvements

  • Video stream bitrate from ffprobe: Now extracted from the video stream's bit_rate field, not just the format-level bitrate
  • Always-on format bitrate fallback: Format-level bitrate from ffprobe is used as a fallback regardless of the profile_bitrate setting
  • ffmpeg stderr parser: New regex-based parser extracts codec, resolution, fps, audio info, and bitrate from ffmpeg verbose output — used by the combined diagnostics path

Scan Logging

  • Per-channel scan log: Each scanned channel now logs [Scan] #N channel_name → status (bitrate, latency) for easy monitoring in the Log window
  • Player error logging: External player launch success/failure and in-app playback timeouts are logged
  • Playlist loading log: Frontend logs immediately when a playlist starts loading

Code Quality

  • Dead code removal: Removed unused get_stream_info, get_audio_info, get_stream_track_presence ffprobe functions replaced by collect_probe_snapshot
  • Cached compiled regexes: All regex patterns in the ffmpeg stderr parser use LazyLock for one-time compilation
  • SSRF protection: Both the URI scheme proxy and localhost streaming proxy validate upstream URLs against private IP ranges
  • URL redaction: Xtream credentials and sensitive URL parameters are redacted from logs
  • Error formatting: formatArgs in the logger handles Error objects (stack traces) and circular references gracefully

Other Fixes

  • Single-provider playlist detection: Skip scan concurrency warning for mixed-provider playlists
  • HLS bitrate profiling: Sum all Statistics lines for HLS streams (playlist + segments)
  • Arrow key navigation: Skip auto-play on arrow key navigation during active scan
  • Diagnostics semaphore: Clamped to 1 for single-provider playlists to prevent parallel ffmpeg sessions
  • HLS manifest detection: Proxy now sniffs #EXTM3U in response body, not just URL/content-type

Don't miss a new IPTVChecker release

NewReleases is sending notifications on new releases.