summaryrefslogtreecommitdiff
path: root/project_feedreader.md
blob: d884ee4c3526fbaeab75603b7a39019d1fac6c2a (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
---
name: project-feedreader
description: "FeeDreader (formerly \"Feeds\") Android RSS reader app (org.terst.feedreader) built for Peter — standalone greenfield project, separate from doot"
metadata: 
  node_type: memory
  type: project
  originSessionId: 375c858e-e817-41e8-a076-7920d22eab2b
---

Building "FeeDreader" (renamed 2026-07-23 from "Feeds" — pun on "fee dreader", avoiding
paywalls), a standalone Android RSS/Atom reader app for Peter, package `org.terst.feedreader`,
repo at `/workspace/feedreader` (separate git repo from doot, same local git identity).
Greenfield build authorized with "just go for it - greenfield, simple design, just build."

Core feature set: RSS/Atom subscriptions (now with OPML-category folder grouping +
case-insensitive sort, and a virtual "Last fetch failed" section), full article +
WebView/Readability.js reader-mode view, OPML import/export, keyword mute/highlight filters,
save-to-Stash integration (explicit action, not automatic), Android share-sheet target.
Explicitly excluded: local full-text search, home-screen widget, notifications, social
features. Has an owl-themed adaptive launcher icon (hand-authored vector, no external design
tool available) and a short paywall-avoidance philosophy note in Settings.

**Why:** Inoreader (his prior RSS reader) removed OPML export, forcing a migration off it — his ~107 feeds were pulled via Inoreader's Reader API (ClientLogin) and re-packaged as OPML for import into this app.

**How to apply:** Peter's workflow for this app is hands-on testing rounds — he sideloads a build to his phone, uses it for a while, then sends a batch of bug reports/feature requests in one message. Expect iterative APK rebuild-and-resend cycles, not a single big spec upfront. Room DB schema is at v6 as of 2026-07-23 (added `FeedEntity.folder`); see `AppDatabase.kt`'s migration comments — several past migrations needed a full table rebuild (Room validates exact column match, not just superset) rather than a plain ADD COLUMN. See [[feedback_feedreader_apk_naming]] and [[project_feedreader_emulator]].