summaryrefslogtreecommitdiff
path: root/project_feedreader_feature_candidates.md
blob: 421e3853cebbb5d747682da26737a015d9ad1bc8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
---
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 `<enclosure type="image/*">`, Atom
  `rel="enclosure"`, plus a first-`<img>` 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/`<video autoplay>` in regular articles still
   autoplay through the WebView.

**Why:** Peter wants a running list to reference next time he's thinking about new
FeeDreader features, not an immediate build — this is explicitly deferred triage.

**How to apply:** Bring these up whenever Peter is discussing new FeeDreader features or
what to build next, rather than waiting for him to re-ask. Don't build any of these
unprompted.