# Backlog ## Feed health: recency/frequency tracking + dead-feed detection **Motivation:** migrating 108 feeds from Inoreader surfaced ~19 feeds the user had manually flagged "dead?" over there — there's currently no way for this app to tell that on its own. Want automatic detection instead of relying on manual tagging carried over from another tool. **What's needed:** - Track each feed's normal posting cadence (e.g. median interval between the last N articles' `publishedAt` — already stored on `ArticleEntity`, no new fetch required, just a read-side computation). - Surface a "stale" indicator on the feed list when a feed has gone quiet for meaningfully longer than *its own* historical cadence — not a fixed global threshold. A feed that normally posts yearly shouldn't be flagged after 3 quiet months; a feed that normally posts daily should be flagged after a couple of quiet weeks. - Treat "feed URL itself is broken" as a distinct, stronger signal from "author's just gone quiet": `FeedEntity.lastError` already records fetch failures (404s, parked domains, etc.) — a feed with several consecutive failures is a different case than a live, fetchable feed that simply has no new posts. **Rough shape (not yet built):** - Compute per-feed on read (no new table needed at first): take the last N `publishedAt` values for a feed, find the median gap, compare against time since the most recent post. Flag if the current gap is some multiple (e.g. 3x) of the historical median. - `FeedListScreen`: a small badge next to the feed row when flagged, distinguishing "quiet" (posting-cadence signal) from "broken" (`lastError` signal) since they call for different user action (wait it out vs. go look for a replacement feed). - Out of scope for now: any automated "find where the author moved" logic — that's a manual research task when a feed's actually declared dead, not something to build detection for. ## YouTube embeds (done) **Motivation:** the reader's WebView runs with JavaScript off (feed/extracted content never needs it, and it keeps articles from running arbitrary scripts) — so a YouTube iframe embedded in an article used to just show as a broken/blank box instead of a playable video or thumbnail. **Built, and further than originally scoped:** `ReaderExtractor` detects a YouTube iframe/embed during extraction and swaps it for a tap-to-play thumbnail (an `hq720` still + a "▶ Watch on YouTube" caption). Tapping it doesn't just hand off to the YouTube app/browser as originally planned — `ReaderWebView.YouTubePlayerDialog` plays it in-app via a sandboxed `youtube-nocookie.com` WebView (JS/DOM storage enabled only inside that one dialog, main-frame navigation locked to YouTube's own domains), so watching a video doesn't leave the reader. **Fixed 2026-10-21, reported as "YouTube play is misconfigured":** the dialog loaded the embed as its own top-level document, and YouTube answers that with "Video player configuration error -- Error 153". An embed has to be embedded; it now sits in an `