MiSikora Laboratory Versions Save

Feature flags for multi-module Kotlin Android projects

0.12.1

3 years ago

Added

  • Indication that an option is a supervisor. If an option supervises features it has an eye icon next to it. List of supervised features is available after long pressing a chip.
  • Navigation from supervised feature to supervisor.
  • Navigation from supervisor to supervised feature.
  • Amount of offscreen feature sections in inspector can be controlled with LaboratoryActivity.Configuration.OffscreenSectionsBehavior. Default is unlimited.

Changed

  • Upgrade to Kotlin 1.4.32.
  • Upgrade to LifecycleViewmodelKtx 2.3.1.
  • Upgrade to FragmentKtx 1.3.2.
  • Upgrade to Wire 3.7.0.

0.12.0

3 years ago

Added

  • Gradle plugin generates sourcedBuilder() extension function for SourcedFeatureStorage that returns custom builder with steps for each source. This makes changes to sources compile time safe.
  • Show feature's supervisor option in inspector – #95.

Changed

  • Upgrade to Coroutines 1.4.3.
  • Upgrade to AGP 4.1.3.

Deprecated

  • sourcedGenerated() extension function generated by Gradle plugin.

0.11.0

3 years ago

Changed

  • Use proto3 for FeatureFlags definition.
  • Upgrade to DataStore 1.0.0-alpha08.
  • Upgrade to Kotlin 1.4.31.
  • Upgrade to Wire 3.6.1.
  • Upgrade to FragmentKtx 1.3.1.

0.10.0

3 years ago

Added

  • Parent–child relationship to Feature. This relationship is controlled with a Feature.supervisorOption property. Whenever supervisor has its option different from this value then the supervised feature flag cannot return any other option than a default one. Option can still be set via Laboratory but it will not be exposed as long as a feature flag is not supervised. This relationship is recursive meaning that grandparents control grandchildren indirectly.
  • Code generation of supervisor options via Gradle plugin.

Changed

  • Gradle plugin no longer changes implicit package name multiple times. Only last value that was set is applied in configuration.
  • Upgrade to DataStore 1.0.0-alpha06.
  • Upgrade to AGP 4.1.2.
  • Upgrade to Kotlin 1.4.30.
  • Upgrade to Wire 3.6.0.
  • Upgrade to Material 1.3.0.
  • Upgrade to FragmentKtx 1.3.0.
  • Upgrade to LifecycleViewmodelKtx 2.3.0.
  • Upgrade to Hyperion 0.9.31.

Fixed

  • Search icon not animating on Android below SDK 24.

Deprecated

  • DataStore custom builder and builder factory methods. Factory method that accepts DataStore directly should be used instead.

0.9.7

3 years ago

Changed

  • DeprecationLevel.Hidden is no longer deprecated. It was a mistake to deprecate it at all since it could work from the start.

0.9.6

3 years ago

Added

  • FeatureFactory can be now appended to another with plus operator.
  • DefaultOptionFactory can be now appended to another with plus operator.

Changed

  • Use description as feature flag's KDoc content.
  • Upgrade Kotlin to 1.4.21.

Deprecated

  • Using DeprecationLevel.Hidden is temporarily treated as an error until the compiler issue is fixed.

Fixed

  • Make updates to the in-memory Laboratory atomic.

0.9.5

3 years ago

Added

  • Builder pattern for LaboratoryActivity.Configuration construction.
  • Visual representation of deprecated feature flags in the QA module.
  • Visual representation of deprecated feature flags can be configured via LaboratoryActivity.Configuration builder with deprecationPhenotypeSelector() and deprecationAlignmentSelector() functions.
  • Consumer ProGuard rules to laboratory-inspector to keep @Deprecated annotation.
  • QA module displays clickable hyperlinks from a feature flag description if it contains Markdown formatted links.

Changed

  • Upgrade to DataStore 1.0.0-alpha05.

Deprecated

  • LaboratoryActivity.Configuration() constructor. Use LaboratoryActivity.Configuration.create() or LaboratoryActivity.Configuration.builder() instead.

Fixed

  • Warning and error level deprecation on generated feature flags is now correctly suppressed.

0.9.4

3 years ago

Added

  • Kyrie 0.2.1 to laboratory-inspector.
  • DynamicAnimation 1.0.0 to laboratory-inspector.

Changed

  • Animation of search feature in inspector. It no longer makes ugly visibility transitions.
  • Upgrade to Coroutines 1.4.2.

0.9.3

3 years ago

Added

  • Feature flags filtering to the QA module. Features are filtered by their name, options or source options.
  • ConstraintLayout 2.0.4 to laboratory-inspector.

Changed

  • Inspector tabs are now scrollable instead of fixed.
  • Upgrade to Kotlin 1.4.20.

Fixed

  • Shared preferences based FeatureStorage dispatches now changes to feature flag observers when clear() method is used. This fixes an issue with the QA module where it did not update the UI after resetting feature flags if shared preferences where used for feature flags persistence.
  • Preserve feature flags preview adapter scroll position on configuration changes.
  • External feature factories are no longer filtered out when added with the configure() function.

0.9.2

3 years ago

Added

  • BlockingLaboratory class that can read and write feature flags via blocking API.
  • blocking() function to Laboratory class that is an entry point to the blocking API.
  • Deprecation of feature flags from the Gradle plugin with deprecated(message, level) method. level argument is optional and a warning level is used by default.

Changed

  • Upgrade to DataStore 1.0.0-alpha04.

Deprecated

  • All blocking functions on the Laboratory class. BlockingLaboratory available via blocking() function should be used instead.