Files
PodTui/tasks/podcast-tui-app/49-data-persistence.md
Michael Freno f08afb2ed1 init
2026-02-03 23:29:36 -05:00

1.8 KiB

48. Build User Preferences

meta: id: podcast-tui-app-48 feature: podcast-tui-app priority: P1 depends_on: [47] tags: [preferences, settings, solidjs]

objective:

  • Create user preferences panel
  • Implement theme selection
  • Implement font size control
  • Implement playback speed control
  • Implement auto-download settings

deliverables:

  • src/components/PreferencesPanel.tsx with preferences
  • src/components/ThemeSelector.tsx with theme options
  • src/components/FontSelector.tsx with font size options
  • src/components/AutoDownload.tsx with auto-download settings

steps:

  • Create src/components/PreferencesPanel.tsx:
    • Preferences sections
    • Navigation between preferences
    • Save/Cancel buttons
  • Create src/components/ThemeSelector.tsx:
    • Theme options (light, dark, terminal)
    • Preview theme
    • Select theme
  • Create src/components/FontSelector.tsx:
    • Font size options (small, medium, large)
    • Preview font size
    • Select font size
  • Create src/components/AutoDownload.tsx:
    • Auto-download episodes
    • Download after playback
    • Download schedule
    • Storage limit warning

tests:

  • Unit: Test theme selector
  • Unit: Test font selector
  • Unit: Test auto-download settings
  • Integration: Test preferences save/load

acceptance_criteria:

  • Preferences display correctly
  • Theme selection works
  • Font size selection works
  • Auto-download settings work
  • Preferences persist

validation:

  • Run application and navigate to preferences
  • Change theme and verify
  • Change font size and verify
  • Test auto-download settings
  • Restart app and verify preferences

notes:

  • Use localStorage for preferences
  • Theme: Terminal colors (green/amber on black)
  • Font size: Small (12px), Medium (14px), Large (16px)
  • Auto-download: Download completed episodes
  • Add preferences to settings screen
  • Save preferences on change
  • Reset to defaults button