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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
# 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
**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 currently just shows
as a broken/blank box instead of a playable video or thumbnail.
**Rough shape (not yet built):** detect a YouTube iframe/embed URL in the
extracted or feed-provided HTML and swap it for a tap-to-play thumbnail
(image + play button) that opens the video in the YouTube app/browser on
tap, rather than trying to make the embed actually play inline (which would
mean turning JS back on for untrusted third-party content).
## Bottom action strip (partially done)
**Done:** swipe-to-next-article dropped entirely (two different attempts at
keeping it from interfering with WebView scrolling both failed to actually
fix the reported jerkiness, and the second broke swipe outright). Replaced
with explicit Previous/Next buttons in a new bottom bar -- no gesture to
disambiguate with scrolling at all now.
**Still open:** the top bar is still crowded (reader-toggle, open-in-browser,
bookmark, Stash, overflow) and top-heavy for one-handed use. Move those
action icons + the overflow menu down into the bottom bar alongside
Previous/Next, and auto-hide both the top and bottom bars together on
scroll (hide on scroll-down, reveal on scroll-up or tap), matching the
common "immersive reading" pattern other reader apps use.
## Scroll jerkiness (still open, root cause unknown)
Reported as "jerky, loses track of my motion." Two theories tried and
ruled out live, not just in code review:
- An orientation-aware Compose gesture detector wrapping the WebView (for
swipe-to-next-article) -- kept working correctly for paging, but didn't
fix the reported jerkiness either, so it likely wasn't (only) about
gesture-arbitration overhead from that detector.
- A passive native OnTouchListener replacing the above -- broke swipe
outright, reverted, and jerkiness was never re-tested in isolation since
swipe was still present in that build.
Swipe is now gone entirely (see "Bottom action strip" above), which removes
one whole category of possible interference. Worth a fresh look at whether
scrolling still feels jerky now that nothing above the WebView is doing any
gesture detection at all -- if it still does, the cause is something else
(WebView rendering/compositing itself, the emulator's software rendering
not reflecting real-device feel, etc.), not gesture interception.
|