diff --git a/CHANGELOG.md b/CHANGELOG.md index d270f783..4a77195e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,10 +1,15 @@ -## [Unreleased] - -### Changes - -- *No changes* - -## [1.2.0] (2026-06-05) +## [Unreleased] + +### Changes + +* **Breaking changes:** `plugin-konfeature` переведён на публичную библиотеку [`konfeature-ui`][konfeature-ui]. Собственная реализация экрана, `ViewModel`, диалога редактирования и `JsonConverter` удалены — UI, состояние и хранение переопределений теперь предоставляет `konfeature-ui`. См. [migration guide](docs/migration_guide.md). +* **Breaking changes:** Удалён `KonfeatureDebugPanelInterceptor`. Вместо него используется `KonfeatureDebugPanelConfig`, который объединяет хранилище переопределений (DataStore) и интерцептор. Создайте конфиг через `KonfeatureDebugPanelConfig.create(context)`, подключите его к `Konfeature` через `applyDebugPanelConfig(config)` и передайте тот же конфиг в `KonfeaturePlugin(konfeature, config)`. +* **Breaking changes:** Изменена сигнатура конструктора `KonfeaturePlugin`: параметр `debugPanelInterceptor` заменён на `config: KonfeatureDebugPanelConfig`. +* Изменено поведение переопределения значений: в панели инлайн-переключаются только `Boolean`-тогглы, значения остальных типов отображаются только для чтения. +* Обновлён каталог версий зависимостей (2026.02.23 → 2026.07.10). +* Gradle обновлён с 9.1.0 до 9.4.1. + +## [1.2.0] (2026-06-05) ### Changes @@ -139,3 +144,4 @@ * Исправлены мелкие баги. [migration-guide]: migration_guide.md +[konfeature-ui]: https://github.com/RedMadRobot/Konfeature diff --git a/README.md b/README.md index 7497194c..02209eda 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,9 @@ Библиотека предоставляет встроенную отладочную панель для Android-приложений, предназначенную для использования в debug и QA-сборках. -debug_preview + [![Maven Central Version](https://img.shields.io/maven-central/v/com.redmadrobot.debug/panel-core?style=flat-square)](https://central.sonatype.com/search?namespace=com.redmadrobot.debug) [![License](https://img.shields.io/github/license/RedMadRobot/debug-panel-android?style=flat-square)][license] @@ -46,7 +48,7 @@ dependencies { // Плагин для работы с remote config на основе Konfeature debugImplementation("com.redmadrobot.debug:plugin-konfeature:${debug_panel_version}") // Так же необходимо подключить саму библиотеку konfeature - debugImplementation("com.redmadrobot.konfeature:konfeature:${konfeature_version}") + implementation("com.redmadrobot.konfeature:konfeature:${konfeature_version}") // Плагин для отображения информации о приложении debugImplementation("com.redmadrobot.debug:plugin-about-app:${debug_panel_version}") @@ -97,6 +99,9 @@ fun openDebugPanel() { ## Работа с плагинами ### ServersPlugin + +servers-screen + Используется для работы с тестовыми серверами Доступна возможность задать список предустановленных серверов @@ -168,29 +173,35 @@ val selectedServer = getPlugin().getSelectedServer() ### Konfeature Plugin +konfeature-screen + В основе плагина лежит библиотека [Konfeature][konfeature], которая позволяет: - отображать конфигурации feature, используемые в Konfeature - просматривать источник каждого элемента конфигурации (Default, Firebase, AppGallery и др.) -- переопределять значения элементов конфигурации с типами Boolean, String, Long, Double +- переопределять значения тогглов типа `Boolean` прямо в панели (значения остальных типов отображаются только для чтения) + +Экран, список фич и хранение переопределений (DataStore) предоставляет библиотека [`konfeature-ui`][konfeature]. Плагин лишь встраивает её экран в дебаг-панель. Переопределённые значения сохраняются между перезапусками приложения. -Для подключения плагина необходимо передать объект класса `KonfeatureDebugPanelInterceptor` и экземпляр `Konfeature` +Для подключения нужно создать `KonfeatureDebugPanelConfig`, подключить его к экземпляру `Konfeature` через `applyDebugPanelConfig(...)` и передать тот же самый конфиг в `KonfeaturePlugin`: ```kotlin -val debugPanelInterceptor = KonfeatureDebugPanelInterceptor(context) +// создаётся один раз на старте приложения; create() — suspend-функция +val config = KonfeatureDebugPanelConfig.create(context) val konfeatureInstance = konfeature { - if (isDebug) { - addInterceptor(debugPanelInterceptor) - } + register(MyFeatureConfig()) + applyDebugPanelConfig(config) } KonfeaturePlugin( - debugPanelInterceptor = debugPanelInterceptor, konfeature = konfeatureInstance, + config = config, ) ``` +> Важно: в `KonfeaturePlugin` необходимо передать тот же самый `config`, который был подключён к `Konfeature` через `applyDebugPanelConfig(...)`. Если конфиг не был подключён, конструктор плагина упадёт с ошибкой, так как панель показывала бы значения, которые не может переопределить. + В builder Konfeature доступны следующие настройки: - добавление конфигурации конкретной фичи — `register(FeatureConfigN())` @@ -199,6 +210,8 @@ KonfeaturePlugin( ### AboutApp Plugin +about-app-screen + Предназначен для отображения информации о приложении: версии, номера сборки и других произвольных данных. Для подключения плагина необходимо передать список объектов `AboutAppInfo`, содержащий хотя бы один элемент: diff --git a/docs/migration_guide.md b/docs/migration_guide.md index e86c56a1..ded76ca0 100644 --- a/docs/migration_guide.md +++ b/docs/migration_guide.md @@ -1,5 +1,46 @@ # Миграция +## Миграция на версию 1.3.0 + +### Переход plugin-konfeature на библиотеку konfeature-ui + +`plugin-konfeature` переведён на публичную библиотеку [`konfeature-ui`][konfeature]: экран, список фич и хранение переопределений (DataStore) теперь предоставляет она. Собственный `KonfeatureDebugPanelInterceptor`, экран, `ViewModel` и диалог редактирования удалены. + +Вместо `KonfeatureDebugPanelInterceptor` используется `KonfeatureDebugPanelConfig` — он объединяет хранилище переопределений и интерцептор, гарантируя, что панель и `Konfeature` работают с одним и тем же store. + +> Миграция хранимых значений не предусмотрена: ранее переопределённые значения после обновления сбрасываются к значениям из источников. + +#### Инициализация + +`KonfeatureDebugPanelConfig.create(...)` — `suspend`-функция, вызовите её на старте приложения из подходящего scope. Тот же `config` необходимо подключить к `Konfeature` через `applyDebugPanelConfig(...)` и передать в `KonfeaturePlugin`. + +```diff +- val debugPanelInterceptor = KonfeatureDebugPanelInterceptor(context) +- val konfeatureInstance = konfeature { +- addInterceptor(debugPanelInterceptor) +- } +- KonfeaturePlugin( +- debugPanelInterceptor = debugPanelInterceptor, +- konfeature = konfeatureInstance, +- ) + ++ val config = KonfeatureDebugPanelConfig.create(context) ++ val konfeatureInstance = konfeature { ++ register(MyFeatureConfig()) ++ applyDebugPanelConfig(config) ++ } ++ KonfeaturePlugin( ++ konfeature = konfeatureInstance, ++ config = config, ++ ) +``` + +> Конструктор `KonfeaturePlugin` упадёт с ошибкой, если переданный `config` не был подключён к `Konfeature` через `applyDebugPanelConfig(...)`. + +#### Переопределение значений + +Инлайн-переопределение в панели теперь доступно только для тогглов типа `Boolean`. Значения остальных типов отображаются только для чтения. + ## Миграция на версию 1.0.0 ### Миграция с FlipperPlugin на KonfeaturePlugin @@ -255,4 +296,5 @@ VariablePlugin позволял изменять значения перемен Планируется развивать и улучшать KonfeaturePlugin, так что следите за обновлениями. -[readme]: /README.md \ No newline at end of file +[readme]: /README.md +[konfeature]: https://github.com/RedMadRobot/Konfeature \ No newline at end of file