--- name: project-feedreader-feature-candidates description: "Candidate FeeDreader features sourced from NetNewsWire's open feature requests + Brent Simmons' 'After Fixin' the Bugs' post (2026-08-26) — for future discussion, not yet committed to BACKLOG.md" metadata: node_type: memory type: project originSessionId: dc4bccb0-7454-412c-9fcd-f9e336f62a74 modified: 2026-08-29T21:13:03.407Z --- Peter asked me to research NetNewsWire's (https://github.com/Ranchero-Software/NetNewsWire) open feature-request issues plus Brent Simmons' blog post "After Fixin' the Bugs" (https://inessential.com/2026/08/26/after-fixin-the-bugs.html, NNW down to 10 open bugs, now facing 556 feature requests) for ideas relevant to [[project-feedreader]]. He ruled out sync, social features, and unread-count changes as not interesting. Confirmed two things against the actual FeeDreader code (as of 2026-08-27): - **Thumbnails/enclosures: already fully built**, matching Brent's own dependency chain ("thumbnails depend on enclosure/Media RSS support"). `FeedParser.kt` parses `media:thumbnail`, `media:content`, RSS ``, Atom `rel="enclosure"`, plus a first-`` fallback → `ArticleEntity.imageUrl`, rendered as both the list thumbnail and reader hero image. Worth testing against a Mastodon feed specifically — Brent flags that as the case where the image lives only in the enclosure, not the body. - **Pause/disable a feed: not built at all.** No `isPaused`/`isEnabled` field anywhere in `Entities.kt`/`Daos.kt`. NNW itself has two separate open, undesigned requests for this: #3401 "Disable feed" (hide but keep, 2022) and #4708 "Pause feed setting" (stop fetching temporarily, Aug 2025) — neither has maintainer commentary yet. Cheapest shape for us: a per-feed `isPaused` bool, skipped during refresh, row shown grayed out rather than hidden (fits the existing "Last fetch failed" virtual-section pattern). **Candidate feature list (not yet in BACKLOG.md):** 1. Regex filters — extend existing keyword mute/highlight to pattern matching. NNW's oldest open feature request (#1864, since 2020). 2. Pause a feed — see above. 3. Limit posts/day from a noisy feed (NNW #4889) — inverse of the dead-feed-detection backlog item: some feeds post too much instead of going quiet. Could reuse the same per-feed cadence data. 4. "Last updated" timestamp on the article list (NNW #4964) — feed-freshness signal, complements the stale-feed badge already planned in BACKLOG.md. 5. Timeline text-size setting (NNW #4925) — readability/accessibility. 6. Copy link / share with the highlighted quote (NNW #4793) — extends the existing share-sheet target. 7. Per-feed JavaScript toggle (NNW #4788) — a scoped, explicit per-feed opt-in rather than a global relaxation, so it doesn't undermine the app's JS-off-by-default security posture ([[project_feedreader]] / CLAUDE.md quality gate item 5). 8. Don't autoplay animations/video (NNW #4738) — general version of the tap-to-play pattern already built for YouTube embeds (see BACKLOG.md "YouTube embeds (done)"); worth checking whether inline GIFs/`