71 lines
2.0 KiB
Markdown
71 lines
2.0 KiB
Markdown
# 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.tsx` with settings UI
|
|
- `src/components/SourceManager.tsx` with source management
|
|
- `src/components/PreferencesPanel.tsx` with user preferences
|
|
- `src/utils/persistence.ts` with 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
|