Commit Graph

1 Commits

Author SHA1 Message Date
Test User bdc961501d architecture: design the /rss subscription provider
Podcast feeds you subscribe to by URL, including premium per-subscriber
URLs, with listings that are never cached.

Two findings shape the design. First, a premium feed URL *is* the
credential, and library paths are displayed, logged, and persisted into
saved queues and bookmarks — so the URL can never appear in one. Paths
therefore carry a slug of the subscription name plus a short blake3 hash of
the episode guid, and subscriptions live in rss.toml rather than being
addressed by URL.

Second, "not cached" has a client-side half: both clients cache library
listings by path and only /crabidy, /fs and /orphans bypass it. Without
adding /rss to those lists, a re-visit answers from the client's cache and
the server's freshness is invisible. A listing always fetches; a
listing-written memo (read only when resolving a track) keeps queueing 40
episodes to one fetch instead of 40, with no TTL to guess at.

Also picks feed-rs over hand-rolled parsing (RSS 2.0/1.0/0.x, Atom and JSON
Feed in one maintained crate — real podcast feeds are not uniform), and
records the risks that cannot be engineered away: publishers who
regenerate guids break bookmarks, and episodes ageing out of a feed cannot
be resolved. Capture rather than bookmark what you want to keep.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-26 12:19:23 +02:00