Decent-sized one this time — a new source, a way to vet new channels before they hit your lineup, and a bunch of guide niceties. If you've been wanting more control over what lands in your feeds, this is the release for you.
🆕 New source: FreeCast
- Another pile of free, ad-supported live channels.
- Streams resolve fresh at play time so they don't go stale, and their ad-stitched (DAI) channels work properly.
- Auto-detects language from descriptions, so non-English channels get tagged right.
- Comes with EPG (ranked "partial," so better guide data from other sources wins when channels overlap).
✨ What's new
Review new channels before they go live
- New channels from a scrape can now sit in a holding pen instead of dumping straight into your feeds.
- Flip it on globally, or set it per-source (auto-add / hold for review / inherit).
- New "Needs review" filter + a NEW badge so you can spot them.
- Clear them however you like: enable, disable, or the new "Keep Disabled" (reviewed, but not in feeds). One at a time or in bulk.
Guide stuff
- A–Z scrubber rail to jump around fast.
- Search now matches channel names, not just show titles.
- It remembers your recent searches too.
Channels page
- Rotating/featured slots are now flagged, with a "Content Swapped" card on the Changes report when a slot swaps out what it's airing.
- Resolution badges (HD/FHD/4K/HEVC) finally show up for opaque sources like STIRR.
- New English / Non-English language grouping.
- A little nudge pill on the cleanup button when there are dead channels to clear.
More channels
- Added Kaloopy and a batch of free 24/7 news & live channels to the catalog.
- STIRR now grabs better EPG from their export feed.
Behind the scenes
- Everything's on one shared player now, so playback's more consistent across the guide, watch page, and previews.
🐛 Fixes
A bunch this round — the ones worth knowing about:
- Fixed stale Gracenote IDs sticking to rotating slots (was throwing wrong guide/DVR data on featured channels).
- Samsung + YouTube playback/preview fixes (plus a Samsung logo cert error).
- STIRR playback/audit fixes on older CDNs, and recovered descriptions that were getting cut off.
- Bally Sports no longer drops channels on certain CDN subdomains.
- Smoothed out database locking on big scrapes (batched EPG pruning, edit retries).
- Amazon login stopped throwing false "not signed in" errors.
Plus the usual smaller cleanup — custom-channel previews, text sanitizing, EPG timestamps.
⬆️ Updating
Pull the new image and bounce the container:
docker compose -f docker-compose.ghcr.yml pull && docker compose -f docker-compose.ghcr.yml up -dYour data and settings carry over.