diff --git a/docs/superpowers/specs/2026-06-08-rustore-release-design.md b/docs/superpowers/specs/2026-06-08-rustore-release-design.md index 6566b7b..7e97dbe 100644 --- a/docs/superpowers/specs/2026-06-08-rustore-release-design.md +++ b/docs/superpowers/specs/2026-06-08-rustore-release-design.md @@ -29,10 +29,12 @@ productFlavors { create("store") { dimension = "distribution" buildConfigField("boolean", "ENABLE_SELF_UPDATE", "false") + buildConfigField("boolean", "SHOW_DEV_TOOLS", "false") } create("sideload") { dimension = "distribution" buildConfigField("boolean", "ENABLE_SELF_UPDATE", "true") + buildConfigField("boolean", "SHOW_DEV_TOOLS", "true") } } ``` @@ -154,6 +156,25 @@ api.radiola.nexaweb.su { - Ссылка на политику конфиденциальности. - Заметка модератору: пояснения по exact-alarm и battery-optimization. +## G. Чистка экрана настроек (`ui/settings/SettingsScreen.kt`) + +### G1. Убрать тумблер «Запись эфира» (обе сборки) +Осиротевшая настройка: флаг `RECORDING_ENABLED` сохраняется, но НИГДЕ не читается +(запись эфира работает через кнопку в плеере и вкладку «Запись» независимо). +Удалить: +- секцию «Запись эфира» в `SettingsScreen.kt` (item с `isRecordingEnabled`/`setRecordingEnabled`); +- `isRecordingEnabled`/`setRecordingEnabled` в `SettingsViewModel`; +- `isRecordingEnabled()`/`setRecordingEnabled()` в `SettingsRepository` (интерфейс) и + `SettingsRepositoryImpl` + ключ `RECORDING_ENABLED` в DataStore. +- Сама фича записи (кнопка плеера, `RecordingRepository`, вкладка) НЕ трогается. + +### G2. Скрыть «Тестирование станций» в store-сборке +Диагностический dev-инструмент (прогон всех станций: OK/без метаданных/оффлайн/ +ошибки + отчёт с HTTP/ICY). В store не нужен. Обернуть секцию «ТЕСТИРОВАНИЕ +СТАНЦИЙ» (и связанный диалог отчёта) в `if (BuildConfig.SHOW_DEV_TOOLS) { ... }`. +В sideload остаётся как сейчас. Код тестирования (`SettingsViewModel.startTesting`, +`StationTestStatus`) остаётся в `main`, просто не показывается в store. + ## Вне области (YAGNI / не сейчас) - AAB-сборка (подаём APK). - proguard/minify (оставляем выключенным). @@ -174,6 +195,8 @@ api.radiola.nexaweb.su { 4. Приложение store-сборки работает против https-API (станции, now-playing, авторизация, Shazam). 5. `https://api.radiola.nexaweb.su/privacy` открывается. 6. Секреты (keystore, пароли) не в git. +7. В store-сборке нет секции «Тестирование станций»; в sideload — есть. +8. Тумблера «Запись эфира» нет ни в одной сборке; запись эфира работает. ## Порядок реализации (для плана) 1. Инфра HTTPS: DNS A-запись → Caddy vhost → проверка TLS (api + downloads + covers). @@ -181,6 +204,8 @@ api.radiola.nexaweb.su { 3. Gradle: flavors `store`/`sideload` + `signingConfig release` + `.gitignore`. 4. Манифест: `REQUEST_INSTALL_PACKAGES` → sideload sourceSet. 5. Код: gate `checkUpdate()` за `BuildConfig.ENABLE_SELF_UPDATE`; baseUrl/BASE_URL → https. + Чистка настроек: убрать тумблер «Запись эфира» (G1); тестер станций под + `BuildConfig.SHOW_DEV_TOOLS` (G2). 6. Keystore: пользователь генерирует, кладёт `keystore.properties`. 7. Сборка `storeRelease`, проверка критериев готовности. 8. Текст политики конфиденциальности.