2.4 KiB
2.4 KiB
Settings Panel Implementation
Task
Added four new feature sections to the Settings screen: SomaFM quality preference, now-playing history file logging, reset customizations, and restart app. Also fixed a crash-on-launch bug on physical devices caused by missing isHidden column in seed data INSERT.
Changes Made
Bug Fix
SomaFmSeedData.kt: AddedisHiddencolumn to the station INSERT for fresh installs (v4+ schema) to fixSQLiteConstraintExceptioncrash on real devices.
New Files
data/model/StationStream.kt— Room entity for multi-stream quality options per stationdata/db/StationStreamDao.kt— DAO for station stream queriesservice/StreamResolver.kt— Resolves ordered list of stream URLs based on quality preference (per-station override or global)data/logging/NowPlayingHistoryWriter.kt— Appends track changes to a file in CSV, JSON lines, or plain text format
Modified Files
data/model/Station.kt— AddedqualityOverride: String?columndata/db/RadioDatabase.kt— AddedStationStreamentity,StationStreamDao, bumped to v4, addedMIGRATION_3_4data/db/SomaFmSeedData.kt— Seedsstation_streamstable (2-4 rows per station: SSL/non-SSL x 128/256kbps), addedincludeStreamsparameter,seedStreamsForExistingStations()for migrationdata/prefs/RadioPreferences.kt— AddedqualityPreference,historyEnabled,historyFormat,historyDirUrikeys + settersRadioApplication.kt— ExposedstreamResolverandhistoryWriter, registeredMIGRATION_3_4service/RadioPlaybackService.kt— UsesStreamResolverfor URL resolution, callshistoryWriter.append()after metadata persistui/screens/settings/SettingsScreen.kt— Added SomaFM Quality (reorderable list), Now Playing History (toggle/format/dir picker), Reset (with optional station deletion), Restart App sectionsui/screens/settings/SettingsViewModel.kt— Added quality/history preference management,resetCustomizations()(DB transaction),restartApp()(graceful then forced)
Design Doc
docs/plans/2026-03-10-settings-panel-design.md
Follow-up Items
- Per-station quality override UI (accessible from station edit dialog or long-press menu)
- Stream fallback chain retry (currently uses first resolved URL; could try subsequent URLs on connection failure)
- History file rotation/cleanup for large files