github kristofferR/IPTVChecker v2.2.0
v2.2.0 — Localization, stream quality flags, and Dispatcharr catch-up

4 hours ago

This release localizes the app into 14 languages, including right-to-left Arabic and Persian, flags alive streams with frozen or low-bitrate video, and adds catch-up detection to Dispatcharr sources.

Localization

  • Translates the UI, native menus, tray, dialogs and update notification into Simplified Chinese, Russian, Spanish, Ukrainian, Brazilian Portuguese, Turkish, French, German, Italian, Polish, Vietnamese, Indonesian, Arabic and Persian (#279, #280).
  • The UI stays English until a language is chosen. On first start, when the OS language is supported, a dialog offers to switch. The language can be changed in Settings and applies after a restart.
  • Arabic and Persian lay out right to left: panels, column and panel resizing, context menus, arrow keys and the guide timeline mirror. Media scrubbers and playback controls stay left to right, and digits stay Latin.
  • Channel, group and programme names render with automatic text direction. URLs, regex, codecs and paths stay left to right.
  • Dates and numbers follow the system region unless the chosen language differs. Failure reasons, CSV columns and scan logs stay English, since they are persisted, exported and compared.
  • The AUR package lists noto-fonts and noto-fonts-cjk as optional dependencies.

Stream quality

  • Bitrate profiling runs ffmpeg's freezedetect on the sample it already decodes, downscaled to 320 px wide. A result is flagged Frozen Video when the picture is frozen at the end of the sample and the freeze lasted at least 7 s of the 10 s sample. Audio-only streams are never flagged (#255).
  • Adds a Minimum video bitrate setting (kbps, off by default). Alive streams with a measured video bitrate below it are flagged Low Bitrate. Streams without a measured bitrate are never flagged (#254).
  • Both flags leave the status Alive. The bitrate cell shows them with a tooltip, the detail panel explains them, and the status filter gains Frozen Video and Low Bitrate while any channel has them.
  • Split Playlists writes flagged streams to a low_quality file and leaves them out of working. With no flagged channels, output is unchanged (#257).
  • Video bitrate is shown in each language's unit.

Dispatcharr

  • Detects catch-up from each stream's Xtream archive flag and depth, using the panel timezone from the M3U account's Xtream login. The archive card, Guide playback and Verify now work on Dispatcharr sources. Archive URLs are built per stream, so Verify judges each provider separately (#283, ref #281).
  • Catch-up filters and counts match a channel when any of its streams has catch-up. Channel rows and the Guide use the first catch-up stream in failover order.
  • Adds an Audio bitrate rank signal for Fix order, compared to the nearest 32 kbps. Saved rank orders get it appended last, so existing ordering is unchanged (#283, ref #282).
  • Adds a Treat low-quality streams as dead setting (off by default). Frozen and low-bitrate streams then follow the Unlink or Move to end policy, ahead of dead streams. A channel whose only working streams are low quality keeps them. The Fix all summary counts them separately (#287, ref #256).
  • Streams added by the Could Not Dispatch plugin are no longer scanned or counted as dead. Fix and reordering keep them last, and Find streams no longer offers them (#284).

Playback

  • Playing a channel whose URL returns an HTTP error reports the status, such as HTTP 404, instead of "Format not supported". Errors on the channel's own URL end playback immediately, while alternate URLs and catch-up variants still fall back (#270, ref #176).
  • Genuine HLS segment and variant server errors are reported, and the channel's own HTTP error is kept through later fallbacks.
  • Streams on LAN servers play in the app, and direct .ts and .mp4 URLs there get codec, resolution, bitrate and screenshots again. Proxy URLs built by the app carry a per-launch key that allows private targets; unkeyed requests are still checked as before, and a public URL still cannot redirect into a private one (#288).

EPG

  • Programme titles keep text after entity references, so "Tom & Jerry" no longer becomes "Tom". Non-UTF-8 guides are decoded using the encoding in the XML declaration. A bare & stays as text instead of failing the whole guide (#289).

Fixes

  • Light theme uses readable shades for the detail-panel notes and bitrate markers (#288).
  • Detail-panel action buttons wrap as whole buttons instead of breaking a label (#288).

Internal

  • Updates to Tauri 2.12 (wry 0.57, tao 0.37), React 19.3, Vite 8.3 and current Rust and frontend dependencies. The Rust crates move to edition 2024 (#289).
  • tauri-plugin-mcp 0.3.1 sits behind a dev-only mcp Cargo feature, so release builds and tests no longer compile it. On Linux, bun tauri dev enables it only when the PipeWire development files are installed.

Full changelog: v2.1.0...v2.2.0

Don't miss a new IPTVChecker release

NewReleases is sending notifications on new releases.