A stability and hardening release: faster playback startup, correct MPEG-TS worker playback, a large performance pass on scanning and memory use, and Arch Linux packaging via the AUR.
Playback
- Try the original MPEG-TS stream before speculative Xtream HLS or ffmpeg remux routes, so startup no longer burns its budget on a route that was never going to work (#212, ref #211)
- Each playback route gets an independent startup timeout instead of sharing one budget
- Slow initial proxy/ffmpeg media bytes are allowed while the shorter steady-state stall timeout is retained — slow-starting streams are no longer rejected
- Timestamp-normalizing remux stays preferred during automatic recovery
- Blob-backed MPEG-TS workers are allowed through the app CSP, with a one-time worker probe and inline-transmux fallback if worker startup is blocked (#213)
Scanning
- The first filtered scan after selecting a group or source no longer reparses very large playlists from disk — filtered previews derive from the in-memory full preview cache (#213)
- Stopped channels report
Cancelledinstead of being mislabeledDead - Fixed scan events being processed twice under StrictMode remounts (orphaned Tauri listener races)
- The Xtream account-info fallback no longer aborts on the first endpoint transport error
- Arrow-key navigation in the channel table no longer double-starts playback
Performance and memory
- Playlist downloads stream to disk instead of buffering whole playlists in RAM
- Playlist parsing and heavy file IO moved off the async runtime
- Buffered upstream bodies, JSON API reads, and retained per-channel diagnostics output are all capped
- Playlist previews handed out as
Arcs; EXTINF attributes parsed once per channel - Channel-table overscan reduced from 250 to 20 rows; sidebar screenshot cache capped with LRU eviction
- Cast-pump reconnect backoff escalates instead of retrying every 200 ms
Security
- Every redirect hop is validated against the stream-proxy SSRF guard, not just the first
- Credentialed Xtream URLs are redacted in logs and diagnostics
- Added a request-head read deadline; raw proxy requests are read until the header terminator
kill_on_dropset on ffmpeg/ffprobe children
Packaging
- Arch Linux: new
iptv-checker-guiAUR package, published automatically on every release (#209) - Fixed the
Parser Fuzz SmokeCI job by pinningtauri-plugin-mcpand committing the fuzz lockfile (#210)
Internal
- Full-codebase quality pass (#208): the four oversized files were decomposed (
playlist.rsinto engine clients plusserver_test,App.tsxinto focused hooks and components,useStreamPlayerinto pure policy and runtime monitor), the macOS and Windows/Linux menu builders unified, four URL-canonicalization copies collapsed intocrate::urlnorm, and one HLS manifest rewriter shared between both proxies - Accessibility labels on banner dismiss buttons
Full changelog: v1.6.0...v1.7.0