v1.5.0 adds Chromecast support so you can cast channels from the app to a receiver on your LAN.
Chromecast Support
Cast any HLS, MPEG-TS, MP4, or DASH stream directly to a Chromecast device. The app discovers receivers via mDNS, runs a token-gated localhost media proxy that injects the auth headers and cookies the receiver itself can't forward, and pushes the stream through.
What it handles:
- Single-credential IPTV providers. The local Mac player and the receiver would otherwise race for the one upstream slot. The proxy fans out a single upstream session to both, with a reconnecting fetcher that smooths over the periodic disconnects single-credential portals issue every few seconds — without the PTS/DTS resets that would kill the receiver.
- HEVC. Chromecast Ultra refuses HEVC over HLS+TS but accepts it via DASH+fMP4, so HEVC streams are remuxed accordingly. Audio is transcoded to AAC when the source codec (AC-3, E-AC-3, MP2) isn't accepted.
- Self-signed TLS. Many IPTV portals use self-signed certs that rustls's webpki parser rejects outright. The cast path uses `cast-sender` over async-native-tls (system TLS) so handshakes complete.
- Channel-switch UX. Switching channels mid-cast hot-swaps the media on the existing receiver session instead of bouncing the TV back to its launcher. Arrow-key navigation during a live cast stays in cast-redirect mode instead of starting a second local play.
- Hardening. HLS manifest responses are capped at 2 MiB to prevent OOM on misclassified upstreams, cast tokens and segment URLs are redacted from logs, and served remux files are guarded against path traversal.
Also included
- VOD / series scan filter (#193). The "Hide VOD / series entries" toggle now filters the scan pipeline itself instead of just the displayed preview. Movies and series no longer get probed during scans or leaked into exports — only live channels run.