Files
PodTui/tasks/podcast-tui-app/10-state-management.md
Michael Freno f08afb2ed1 init
2026-02-03 23:29:36 -05:00

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