Skip to content

feat(catalog/sync): Promote pure RSS feeds to catalog parity (background refresh, notifications, auto & smart downloads) #1079

Description

@ashwkun

Overview & Background

Subscribed podcasts imported directly via custom RSS URLs (or OPML) are currently treated as second-class citizens compared to catalog shows, refreshing mostly on-demand. Since the app fetches subscribed feeds directly from their source RSS endpoints, pure RSS feeds should have full parity with catalog podcasts.

Proposed Scope

  1. Periodic Background Synchronization:
    • Incorporate subscribed pure RSS feeds into the background WorkManager refresh cadence alongside catalog shows.
    • Respect conditional HTTP headers (ETag, If-Modified-Since) to minimize unnecessary data usage and battery drain.
  2. New Episode Notifications:
    • Detect newly published episodes during background sync for pure RSS feeds.
    • Dispatch notifications based on the user's notification preferences for that show.
  3. Automatic & Smart Downloads:
    • Enable per-show "Auto Download" toggles for pure RSS feeds (e.g., download newest 1/3/5 episodes).
    • Integrate pure RSS episodes into SmartDownloadManager queue refill logic.
  4. Identity & Storage Contracts:
    • Maintain strict backward compatibility for rss: URI prefixes and negative ID mappings in Room.
    • Ensure episodic supplements and episode GUIDs remain stable across feed refreshes.

Acceptance Criteria

  • Subscribed pure RSS feeds are refreshed periodically in background workers without requiring manual on-demand pull-to-refresh.
  • Users can enable new episode notifications for pure RSS shows.
  • Auto-download and Smart Downloads support pure RSS episodes according to user storage rules.
  • Preserves all existing identity contracts (rss: IDs, negative ID conventions).
  • JVM unit tests verify sync scheduling and episode insertion logic for pure RSS URLs.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

user-impact-mediumNoticeable but not headline — include in README when space allows

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions