2.0 KiB
2.0 KiB
10. Build Settings Screen and Preferences
meta: id: podcast-tui-app-10 feature: podcast-tui-app priority: P1 depends_on: [09] tags: [settings, preferences, solidjs, opentui]
objective:
- Create settings screen component
- Add source management UI
- Build user preferences panel
- Implement data persistence
deliverables:
src/components/SettingsScreen.tsxwith settings UIsrc/components/SourceManager.tsxwith source managementsrc/components/PreferencesPanel.tsxwith user preferencessrc/utils/persistence.tswith localStorage utilities
steps:
- Create
src/components/SettingsScreen.tsx:- Settings menu with sections
- Navigation between settings sections
- Save/Cancel buttons
- Create
src/components/SourceManager.tsx:- List of enabled sources
- Add source button
- Remove source button
- Enable/disable toggle
- Create
src/components/PreferencesPanel.tsx:- Theme selection (light/dark)
- Font size control
- Playback speed control
- Auto-download settings
- Create
src/utils/persistence.ts:savePreference(key, value)loadPreference(key)saveFeeds(feeds)loadFeeds()saveSettings(settings)loadSettings()
- Add settings screen to "Settings" navigation tab
tests:
- Unit: Test persistence functions
- Unit: Test source management
- Integration: Test settings screen navigation
- Integration: Test preferences save/load
acceptance_criteria:
- Settings screen displays all sections
- Source management adds/removes sources
- Preferences save correctly
- Data persists across sessions
- Settings screen is accessible
validation:
- Run application and navigate to "Settings"
- Test source management
- Change preferences and verify save
- Restart app and verify preferences persist
notes:
- Use localStorage for simple persistence
- Settings are application-level, not user-specific
- Source management requires API keys if needed
- Preferences are per-user
- Add error handling for persistence failures