Skip to content

FastChannels 4.7.0

Latest

Choose a tag to compare

@kineticman kineticman released this 06 Jul 20:41

A reliability-focused release — mostly bug fixes across VIDAA, STIRR, Fubo, and the admin UI, plus automatic cleanup for scraper sources that have been removed from the registry.

🧹 Automatic orphaned-source cleanup

Sources whose scraper class has been missing from the registry for 7+ days (e.g. after a scraper is retired) are now automatically purged — channels, programs, and cache — instead of lingering forever. Runs at container boot and on the daily integrity job, with a grace period so a transient bad deploy doesn't get mistaken for a removed scraper.

🔧 Fixes

  • VIDAA (Hisense) — added a circuit breaker so a confirmed EPG grid outage stops retrying every station individually instead of hammering the endpoint; the breaker now preserves the real error and is scoped per-region, so an outage in one geo no longer silently wipes out EPG for a healthy geo in the same scrape. New installs default the Vidaa source to disabled.
  • STIRR — fixed an epoch-timestamp unit-detection bug that was landing program times thousands of years in the future/past on real feeds (OTTera/imagicomm, freelivesports), plus a plausibility guard so a malformed timestamp can't silently produce a wrong-but-valid-looking date.
  • Fubo — forces a fresh login on a stale-entitlement 403 instead of misclassifying it, and credential-change detection is more reliable (a password/email rotation is now always picked up).
  • Admin UI — fixed the Ch# column showing blank for channels excluded by the default feed's own filters, the category dropdown closing while scrolling its own option list, and the "next scrape" estimate drifting out of sync with the actual scheduler. Added a next-scheduled-scrape column and dropped stale beta labeling on the channel-changes report.
  • Plex / PrismCast — added per-request outcome/latency diagnostics to Plex's guide fetch, fixed a p95 latency calculation bug, and sharpened PrismCast's test-setup diagnostic, modal readability, and modal-close behavior.
  • Maintenance jobs — the worker now rejects bogus EPG timestamps on ingest and runs a weekly prune + VACUUM; the bogus-program prune now also checks start_time (not just end_time) and its cleanup query batches properly instead of risking a SQLite crash on a large source.
  • Startup/schema — the app settings row is now created before schema migrations run, and the inline Gracenote name-match migration is gated behind a done-flag so it can't silently re-run.