Skip to content

feat(home): Customizable home screen sections with recommendation disable toggle (bandwidth & battery savings) #1078

Description

@ashwkun

Overview & Motivation

Listeners have diverse usage patterns: some appreciate algorithmic discovery and curated shelves, while others prefer a minimalist, distraction-free interface focused purely on their subscribed library. Furthermore, disabling external recommendations allows users on metered or low-bandwidth connections to significantly reduce network calls to the Cloudflare proxy, saving bandwidth and device battery.

Proposed Scope

  1. Home Screen Section Management (Settings UI):
    • Add a "Customize Home Screen" preference menu (under Settings → Appearance or Library).
    • Provide granular toggle switches for dynamic discovery sections:
      • Recommendations / "For You"
      • Trending & Category Shelves
      • Editorial / Deep-Dive Carousels
      • Continue Listening (optional toggle)
  2. Fixed Non-Removable Anchors:
    • Hero Banner: Kept intact for current playback / prompt context.
    • Your Shows: Core subscribed podcast carousel remains permanent.
    • Explore Jump: Direct path to search and explore remains available.
  3. Network & Backend Optimization:
    • When recommendations and trending shelves are toggled OFF, HomeScreenViewModel must completely bypass the associated Retrofit calls in PodcastRepository.
    • Results in instant home-screen load times and zero unnecessary proxy egress.
  4. State Persistence:
    • Persist layout preferences in DataStore (user_preferences).

Acceptance Criteria

  • Users can toggle individual dynamic sections on and off from Settings.
  • Core anchors (Hero, Your Shows, Explore) remain permanently visible.
  • Disabling recommendations prevents outgoing backend network calls for those sections.
  • Changes apply immediately to HomeScreen without requiring an app restart.
  • Unit tests verify preference persistence in DataStore and conditional ViewModel fetching logic.

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