Overview
Description¶
Enable researchers to customize the application appearance, behavior, and backup settings.
Acceptance Criteria¶
- [x] #1 Researcher can change UI theme (dark, light, colors)
- [x] #2 Researcher can configure font size and family
- [x] #3 Researcher can select application language
- [x] #4 Researcher can configure automatic backups
- [x] #5 Researcher can set timestamp format for AV coding
- [x] #6 Researcher can configure speaker name format
- [ ] #7 Agent can read current settings for context
Implementation Notes¶
Settings feature fully implemented with DDD architecture:
Domain Layer (src/domain/settings/):
- Entities: ThemePreference, FontPreference, LanguagePreference, BackupConfig, AVCodingConfig, UserSettings
- Events: ThemeChanged, FontChanged, LanguageChanged, BackupConfigChanged, AVCodingConfigChanged
- Derivers: Pure validation functions for each setting type
- Invariants: Valid values and validators
Infrastructure Layer (src/infrastructure/settings/):
- UserSettingsRepository: JSON file persistence with platform-specific paths
Application Layer (src/application/settings/):
- SettingsControllerImpl: 5-step controller pattern
- Commands: ChangeTheme, ChangeFont, ChangeLanguage, ChangeBackupConfig, ChangeAVCodingConfig
Presentation Layer: - SettingsDialog: Tabbed UI (Appearance, Language, Backup, AV Coding) - SettingsViewModel: Transforms domain to DTOs - AppShell integration: Settings button with gear icon in menu bar
Tests: - 66 unit tests (derivers, repository, controller) - 17 E2E tests (dialog, persistence, round-trip) - 6 integration tests (AppShell settings button)