404 - Not found
+Whoops! Looks like the documentation is missing. Please report a bug on GitHub.
+ +diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 000000000..e69de29bb diff --git a/404.html b/404.html new file mode 100644 index 000000000..01f367b71 --- /dev/null +++ b/404.html @@ -0,0 +1,378 @@ + + + +
+ + + + + + + + + + + + + + + + + +Whoops! Looks like the documentation is missing. Please report a bug on GitHub.
+ +Serializer that is capable of writing and reading of feature flags. It can be used, for example, as a delegate of encryption serializer.
Creates a FeatureStorage that is backed by DataStore.
Serializer that is capable of writing and reading of feature flags. It can be used, for example, as a delegate of encryption serializer.
Creates a FeatureStorage that is backed by DataStore.
Returns a representation of an immutable list of all enum entries, in the order they're declared.
This method may be used to iterate over the enum entries.
Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)
Returns an array containing the constants of this enum type, in the order they're declared.
Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)
if this enum type has no constant with the specified name
Returns an array containing the constants of this enum type, in the order they're declared.
This method may be used to iterate over the constants.
Generates a new supervised binary feature flag that is disabled by default.
Generates a new supervised binary feature flag that is enabled by default.
Generates a new supervised multi-option feature flag.
An entry point for configuration of supervised feature flags code generation.
Generates a new supervised binary feature flag that is disabled by default.
Generates a new supervised binary feature flag that is enabled by default.
Generates a new supervised multi-option feature flag.
Contribute to LaboratoryExtension.featureFactory.
Contribute to LaboratoryExtension.featureSourceFactory.
Contribute to LaboratoryExtension.optionFactory.
Contribute to LaboratoryExtension.sourcedStorage.
Returns a representation of an immutable list of all enum entries, in the order they're declared.
This method may be used to iterate over the enum entries.
Possible contributions of a dependency to feature flag generation. See LaboratoryExtension.dependency for more info.
Contribute to LaboratoryExtension.featureFactory.
Contribute to LaboratoryExtension.featureSourceFactory.
Contribute to LaboratoryExtension.optionFactory.
Contribute to LaboratoryExtension.sourcedStorage.
Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)
Returns an array containing the constants of this enum type, in the order they're declared.
Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)
if this enum type has no constant with the specified name
Returns an array containing the constants of this enum type, in the order they're declared.
This method may be used to iterate over the constants.
Returns a representation of an immutable list of all enum entries, in the order they're declared.
This method may be used to iterate over the enum entries.
Possible levels of a deprecation. The level specifies how the deprecated element usages are reported in code.
Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)
Returns an array containing the constants of this enum type, in the order they're declared.
Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)
if this enum type has no constant with the specified name
Returns an array containing the constants of this enum type, in the order they're declared.
This method may be used to iterate over the constants.
Sets package name of the generated feature factory. Overwrites any previously set values.
Sets description of the generated feature flag.
Representation of a feature flag with only two options - "Enabled" and "Disabled".
Annotates a feature flag as deprecated.
Adds a feature flag source that will be used a default source. Any sources that are named "Local", or any variation of this word, will be filtered out. At most one value can be set with this method.
Configures "Disabled" option.
Configures "Enabled" option.
Adds a feature flag source. Any sources that are named "Local", or any variation of this word, will be filtered out.
Configures "Disabled" option.
Configures "Enabled" option.
Sets description of the generated feature flag.
Representation of a feature flag with multiple options. It must have at least one option and exactly one default option.
Annotates a feature flag as deprecated.
Adds a feature value that will be used as a default value. Exactly one value must be set with this method.
Adds a feature value that will be used as a default value and configures features flags supervised by it. Exactly one value must be set with this method.
Adds a feature flag source that will be used a default source. Any sources that are named "Local", or any variation of this word, will be filtered out. At most one value can be set with this method.
Adds a feature option.
Adds a feature option and configures features flags supervised by it.
Adds a feature flag source. Any sources that are named "Local", or any variation of this word, will be filtered out.
Adds a feature value that will be used as a default value. Exactly one value must be set with this method.
Adds a feature value that will be used as a default value and configures features flags supervised by it. Exactly one value must be set with this method.
Adds a feature option.
Adds a feature option and configures features flags supervised by it.
Annotates a feature flag as deprecated.
Sets description of the generated feature flag.
Representation of a feature flag with multiple options. Can be either MultiOption or BinaryOption.
Representation of a feature flag with only two options - "Enabled" and "Disabled".
Representation of a feature flag with multiple options. It must have at least one option and exactly one default option.
Annotates a feature flag as deprecated.
Adds a feature flag source that will be used a default source. Any sources that are named "Local", or any variation of this word, will be filtered out. At most one value can be set with this method.
Adds a feature flag source. Any sources that are named "Local", or any variation of this word, will be filtered out.
Sets package name of the generated feature flag. Overwrites any previously set values.
Adds a feature flag source that will be used a default source. Any sources that are named "Local", or any variation of this word, will be filtered out. At most one value can be set with this method.
Adds a feature flag source. Any sources that are named "Local", or any variation of this word, will be filtered out.
Includes a project during feature flags contribution to featureFactory, featureSourcesFactory, sourcedStorage or optionFactory. Contribution can be selective applied by supplying contributeTo collection.
Included project must have Laboratory plugin applied.
Generates a new supervised binary feature flag that is disabled by default.
Generates a new supervised binary feature flag that is enabled by default.
Generates a new feature factory in this module. This should generally be used only by a top level module that needs to have information about all feature flags for QA purposes.
Generates and customizes a new feature factory in this module. This should generally be used only by a top level module that needs to have information about all feature flags for QA purposes.
Generates a new feature sources factory in this module. This should generally be used only by a top level module that needs to have information about all feature flags for QA purposes.
Generates a new multi-option feature flag.
An entry point for configuration of feature flags code generation.
Includes a project during feature flags contribution to featureFactory, featureSourcesFactory, sourcedStorage or optionFactory. Contribution can be selective applied by supplying contributeTo collection.
Generates a new supervised binary feature flag that is disabled by default.
Generates a new supervised binary feature flag that is enabled by default.
Generates a new multi-option feature flag.
Generates a new feature factory in this module. This should generally be used only by a top level module that needs to have information about all feature flags for QA purposes.
Generates and customizes a new feature factory in this module. This should generally be used only by a top level module that needs to have information about all feature flags for QA purposes.
Generates a new feature sources factory in this module. This should generally be used only by a top level module that needs to have information about all feature flags for QA purposes.
Generates a new option factory in this module. All features that can be created by this factory must be visible to it during compilation.
Generates a new feature storage in this module. This should generally be used only by a top level module that needs to to have information about all sources. Feature storage generated by this method should be then used in the application.
Generates and customizes a new feature storage in this module. This should generally be used only by a top level module that needs to to have information about all sources. Feature storage generated by this method should be then used in the application.
Generates a new option factory in this module. All features that can be created by this factory must be visible to it during compilation.
Sets package name for any factories or feature flags defined in this extension. Package names can be individually overwritten in each generating block
Generates a new feature storage in this module. This should generally be used only by a top level module that needs to to have information about all sources. Feature storage generated by this method should be then used in the application.
Generates and customizes a new feature storage in this module. This should generally be used only by a top level module that needs to to have information about all sources. Feature storage generated by this method should be then used in the application.
Sets package name of the generated option factory. Overwrites any previously set values.
Representation of a generated feature storage that is aware of feature flags sources.
Sets package name of the generated feature storage. Overwrites any previously set values.
An entry point for configuration of supervised feature flags code generation.
Possible contributions of a dependency to feature flag generation. See LaboratoryExtension.dependency for more info.
Possible levels of a deprecation. The level specifies how the deprecated element usages are reported in code.
Representation of a generated feature factory class.
Representation of a feature flag with multiple options. Can be either MultiOption or BinaryOption.
An entry point for configuration of feature flags code generation.
Representation of a generated option factory that is aware of feature flags.
Representation of a generated feature storage that is aware of feature flags sources.
Determines alignment of features flags in a list based on their DeprecationLevel.
Selects DeprecationAlignment based on a feature flag deprecation level.
Selects DeprecationAlignment based on a feature flag deprecation level.
Returns a representation of an immutable list of all enum entries, in the order they're declared.
This method may be used to iterate over the enum entries.
Alignment of deprecated feature flags in a list.
Determines alignment of features flags in a list based on their DeprecationLevel.
Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)
Returns an array containing the constants of this enum type, in the order they're declared.
Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)
if this enum type has no constant with the specified name
Returns an array containing the constants of this enum type, in the order they're declared.
This method may be used to iterate over the constants.
Determines UI representation of feature flags based on their DeprecationLevel.
Selects DeprecationPhenotype based on a feature flag deprecation level.
Selects DeprecationPhenotype based on a feature flag deprecation level.
Returns a representation of an immutable list of all enum entries, in the order they're declared.
This method may be used to iterate over the enum entries.
UI representation of deprecated feature flags.
Determines UI representation of feature flags based on their DeprecationLevel.
Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)
Returns an array containing the constants of this enum type, in the order they're declared.
Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)
if this enum type has no constant with the specified name
Returns an array containing the constants of this enum type, in the order they're declared.
This method may be used to iterate over the constants.
Configures LaboratoryActivity with a default "Features" tab, where feature flags are taken from the mainFactory. Any additional tabs can be added in externalFactories.
Configures LaboratoryActivity with an input configuration.
Configures LaboratoryActivity with an input configuration.
Configures LaboratoryActivity with a default "Features" tab, where feature flags are taken from the mainFactory. Any additional tabs can be added in externalFactories.
Opens QA module. Configure needs to be called before you interact with LaboratoryActivity.
Opens QA module. Configure needs to be called before you interact with LaboratoryActivity.
Creates a new Configuration with provided parameters.
Sets how deprecated feature flags will be sorted in a displayed group.
Sets how deprecated feature flags will be displayed to the user.
The final step of a fluent builder that can set optional parameters.
Creates a new Configuration with provided parameters.
Sets how deprecated feature flags will be sorted in a displayed group.
Sets how deprecated feature flags will be displayed to the user.
Sets how many offscreen feature sections will be kept in memory.
Sets how many offscreen feature sections will be kept in memory.
Creates a builder that allows to customize Configuration.
Creates Configuration with provided laboratory and featureFactories.
Creates a builder that allows to customize Configuration.
Creates Configuration with provided laboratory and featureFactories.
Sets feature factories. Each entry in this map will result in a separate tab in the QA module. Key is used as a tab name, and each tab displays all feature flags provided by FeatureFactory from value.
A step of a fluent builder that requires feature factories to proceed.
Sets feature factories. Each entry in this map will result in a separate tab in the QA module. Key is used as a tab name, and each tab displays all feature flags provided by FeatureFactory from value.
A step of a fluent builder that requires Laboratory to proceed.
Sets laboratory. Its instance should share FeatureStorage instance with your application.
Sets laboratory. Its instance should share FeatureStorage instance with your application.
Number of sections is limited.
All sections are always kept in memory. This makes navigation smoother but might result in slower load time of the inspector.
Behavior of feature sections that are not currently displayed.
Configuration data for QA module.
The final step of a fluent builder that can set optional parameters.
A step of a fluent builder that requires feature factories to proceed.
A step of a fluent builder that requires Laboratory to proceed.
Behavior of feature sections that are not currently displayed.
Entry point for QA module that allows to interact with feature flags.
Configuration data for QA module.
Alignment of deprecated feature flags in a list.
UI representation of deprecated feature flags.
Entry point for QA module that allows to interact with feature flags.
Opt-in annotation denoting that the used function can potentially block a calling thread with I/O operations.
Removes all stored feature flag options. Warning – this call can block the calling thread.
true
if the option was set successfully, false
otherwise.
Returns the current option of the input Feature. Warning – this call can block the calling thread.
A blocking equivalent of Laboratory.
Factory that allows to override default feature flag option used by Laboratory.
Creates a new DefaultOptionFactory that will first look for a default value in this factory and then in the other factory.
Creates a new DefaultOptionFactory that will first look for a default value in this factory and then in the other factory.
Factory that should provide all available feature flags. There shouldn't be any need to use it in a regular application code. Its main purpose is for QA inspection module.
Creates a new FeatureFactory that will return a combined set of this factory and the other factory.
Creates a new FeatureFactory that will return a combined set of this factory and the other factory.
Creates FeatureStorage that saves feature flags in app's memory.
Creates FeatureStorage that saves feature flags in app's memory.
Creates FeatureStorage that is aware of different sources for feature flag values. For example, the following code will be able to produce values for local, Firebase and Aws sources, and will automatically switch reads based on currently selected sources for feature flags.
Creates FeatureStorage that is aware of different sources for feature flag values. For example, the following code will be able to produce values for local, Firebase and Aws sources, and will automatically switch reads based on currently selected sources for feature flags.
FeatureStorage.sourced(
localSource = FeatureStorage.inMemory(),
remoteSources = mapOf(
"Firebase" to FeatureStorage.inMemory(),
"Aws" to FeatureStorage.inMemory(),
),
)
In order to connect remote sources with sources of feature flag sources they need to match their names. If you use Gradle plugin, you should not use this method as a more specialised factory method will be generated for you, that will make sure that all remote sources are configured.
Returns the current value of a selected feature flag name. If feature flag is not available, it should return null
.
Persistence mechanism for feature flags.
Returns the current value of a selected feature flag name. If feature flag is not available, it should return null
.
Observes changes to currently selected feature flag name. If feature flag is not available, it should emit null
.
Allows implementation to handle default option overrides provided via factory if necessary.
Observes changes to currently selected feature flag name. If feature flag is not available, it should emit null
.
Allows implementation to handle default option overrides provided via factory if necessary.
Determines which option is a default for this feature flag.
Description of the feature flag that can be used for more contextual information. Markdown formatted links will be picked up by the QA module and represented as hyperlinks.
A feature flag that has one active option. Options are selected by interaction of this interface with Laboratory. Feature flag is a enum that implements this interface.
Warning: Enum values cannot individually override any functions. Otherwise serialization, and consequentially discovery of a selection option, will not work as it is based on a class name.
Determines which option is a default for this feature flag.
Description of the feature flag that can be used for more contextual information. Markdown formatted links will be picked up by the QA module and represented as hyperlinks.
Source of feature flag values. When null
it is assumed that the feature flag has only local source of values. Source is also a feature flag, which means it can be controlled by Laboratory as well. By convention, if this property is not null
, one of the source values should be Local
. For example, the following code will result in a flag that can be controlled by local, Firebase or Aws source.
Option of another feature flag that controls value of this child flag. When supervisor feature flag has an option different from this value then the child does not produce values other than the default one. Option can still be set via Laboratory
but it will not be exposed as long as a feature flag is not supervised.
Source of feature flag values. When null
it is assumed that the feature flag has only local source of values. Source is also a feature flag, which means it can be controlled by Laboratory as well. By convention, if this property is not null
, one of the source values should be Local
. For example, the following code will result in a flag that can be controlled by local, Firebase or Aws source.
enum class SomeFeature : Feature<SomeFeature> {
FirstValue,
SecondValue,
;
override val defaultOption get() = FirstValue
override val source = Source::class.java
enum class Source : Feature<Source> {
Local,
Firebase,
Aws,
;
override val defaultOption get() = Local
}
}
Option of another feature flag that controls value of this child flag. When supervisor feature flag has an option different from this value then the child does not produce values other than the default one. Option can still be set via Laboratory
but it will not be exposed as long as a feature flag is not supervised.
Creates a new Laboratory with provided parameters.
Sets a factory that can provide default options override.
The final step of a fluent builder that can set optional parameters.
Creates a new Laboratory with provided parameters.
Sets a factory that can provide default options override.
Creates a builder that allows to customize Laboratory.
Creates Laboratory with a provided storage.
FeatureStorage delegate that will persist all feature flags.
Creates Laboratory with an in-memory persistence mechanism.
Creates a builder that allows to customize Laboratory.
Creates Laboratory with a provided storage.
Creates Laboratory with an in-memory persistence mechanism.
Sets a feature storage that will be used by Laboratory.
A step of a fluent builder that requires FeatureStorage to proceed.
Sets a feature storage that will be used by Laboratory.
High-level API for interaction with feature flags. It allows to read and write their options.
The final step of a fluent builder that can set optional parameters.
A step of a fluent builder that requires FeatureStorage to proceed.
Factory that returns a matching option.
Creates a new OptionFactory that will first look for an option in this factory and then in the other factory.
Creates a new OptionFactory that will first look for an option in this factory and then in the other factory.
Default option of a feature flag.
Description of a feature flag.
Opt-in annotation denoting that the used function can potentially block a calling thread with I/O operations.
A blocking equivalent of Laboratory.
Factory that allows to override default feature flag option used by Laboratory.
A feature flag that has one active option. Options are selected by interaction of this interface with Laboratory. Feature flag is a enum that implements this interface.
Factory that should provide all available feature flags. There shouldn't be any need to use it in a regular application code. Its main purpose is for QA inspection module.
Persistence mechanism for feature flags.
High-level API for interaction with feature flags. It allows to read and write their options.
Factory that returns a matching option.
Supervisor of a feature flag.
Creates a FeatureStorage that is backed by SharedPreferences.
Creates a FeatureStorage that is backed by SharedPreferences.
All notable changes to this project will be documented in this document.
+The format is based on Keep a Changelog, +and this project adheres to Semantic Versioning.
+laboratory {
+ // Generates 'Feature' with two options - 'Enabled and 'Disabled'. 'Enabled' is the default one.
+ enabledFeature("Feature")
+ // Generates 'Feature' with two options - 'Enabled and 'Disabled'. 'Disabled' is the default one.
+ disabledFeature("Feature")
+}
+
laboratory {
+ featureFactory()
+ featureSourceFactory()
+ sourcedStorage()
+ optionFactory()
+
+ dependency(project(":feature"), [
+ DependencyContribution.FeatureFactory,
+ DependencyContribution.FeatureSourceFactory,
+ DependencyContribution.OptionFactory,
+ DependencyContribution.SourcedStorage,
+ ])
+}
+
1.9.24
.1.8.1
.8.7
.8.4.1
.4.9.9
.1.16.0
.1.1.1
.1.3.2
.2.8.0
.1.7.1
.1.3.2
.1.12.0
.0.9.38
.internal
.1.8.21
.1.6.4
.8.1.1
.4.7.0
.1.14.2
.0.9.37
.1.6.1
.2.6.1
.1.5.7
.1.3.0
.1.9.0
.1.7.20
.IllegalArgumentException: Did not find Kotlin source set
after upgrading to Kotlin 1.7.20
.setOptions(options)
overload which accepts collection instead of varargs.SharedPreferencesFeatureStorage
no marked as experimental due to coroutines.1.6.10
.1.6.0
.4.0.1
.OptionFactory
.GenerationFailure
interface.dependency
function in Gradle.
+ laboratory {
+ featureFactory()
+
+ // Before, these were included implicitly.
+ dependency(project(":module-a"))
+ dependency(project(":module-b"))
+}
+
2.4.0
.1.10.2
.4.0.0
.1.6.0
.2.1.2
.1.4.0
.1.4.0
.projectFilter
properties from Gradle plugin. Use explicit dependencies instead.DefaultOptionFactory
are now respected by Laboratory
- #220.OptionFactory
interface. It creates feature options based on a feature key and an option name.Feature
and other related classes covariant.FeatureStorage
functions are no longer parameterized over Feature
. They accept raw class type instead.ClassName
in constructor.SharedPreferencesFeatureStorage
with ExperimentalCoroutinesApi
annotation.1.5.31
.1.4.0
.1.6.0
.1.0.0
.4.2.2
.0.9.34
.1.3.6
.1.3.1
.2.1.1
.1.0.0
.1.5.2
.1.10.1
.FeatureStorage.Companion.sharedPreferences(Context)
function. Use overload that accepts SharedPreferences
instead.FeatureStorage.Companion.dataStore(() -> File)
function. Use overload that accepts DataStore
instead.FeatureStorage.Companion.dataStore(Context, String)
function. Use overload that accepts DataStore
instead.generate()
methods on generation models. Use prepare()
and operate on FileSpec
directly instead.1.5.20
.1.2.1
.1.3.5
.1.0.0-beta02
.1.9.0
.1.5.0
.1.3.0
.@JvmDefault
and switch to JVM default modes.1.5.0
.1.5.0
.4.2.1
.1.8.0
.1.2.0
.0.9.32
.1.3.3
.1.0.0-beta01
.LaboratoryActivity.Configuration.OffscreenSectionsBehavior
. Default is unlimited.1.4.32
.2.3.1
.1.3.2
.3.7.0
.sourcedBuilder()
extension function for SourcedFeatureStorage
that returns custom builder with steps for each source. This makes changes to sources compile time safe.1.4.3
.4.1.3
.sourcedGenerated()
extension function generated by Gradle plugin.proto3
for FeatureFlags
definition.1.0.0-alpha08
.1.4.31
.3.6.1
.1.3.1
.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.1.0.0-alpha06
.4.1.2
.1.4.30
.3.6.0
.1.3.0
.1.3.0
.2.3.0
.0.9.31
.DataStore
custom builder and builder factory methods. Factory method that accepts DataStore
directly should be used instead.DeprecationLevel.Hidden
is no longer deprecated. It was a mistake to deprecate it at all since it could work from the start.FeatureFactory
can be now appended to another with plus operator.DefaultOptionFactory
can be now appended to another with plus operator.1.4.21
.DeprecationLevel.Hidden
is temporarily treated as an error until the compiler issue is fixed.Laboratory
atomic.LaboratoryActivity.Configuration
construction.LaboratoryActivity.Configuration
builder with deprecationPhenotypeSelector()
and deprecationAlignmentSelector()
functions.laboratory-inspector
to keep @Deprecated
annotation.1.0.0-alpha05
.LaboratoryActivity.Configuration()
constructor. Use LaboratoryActivity.Configuration.create()
or LaboratoryActivity.Configuration.builder()
instead.0.2.1
to laboratory-inspector
.1.0.0
to laboratory-inspector
.1.4.2
.2.0.4
to laboratory-inspector
.1.4.20
.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.configure()
function.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.deprecated(message, level)
method. level
argument is optional and a warning level is used by default.1.0.0-alpha04
.Laboratory
class. BlockingLaboratory
available via blocking()
function should be used instead.Laboratory
construction.DefaultOptionFactory
that can substitute default options for feature flags read by Laboratory
.clear()
function to FeatureStorage
and Laboratory
.1.0.0-alpha03
.Laboratory(storage)
constructor. Use Laboratory.create(storage)
or Laboratory.builder()
instead.feature("SomeFeatureFlag")
function.
+ laboratory {
+ SomeFeatureFlag {
+ withDefaultOption("Enabled")
+ withOption("Disabled")
+ }
+}
+
options
extension to Class<Feature<T>>
that returns all available feature flag options.defaultOption
extension to Class<Feature<T>>
that returns a default option of a feature flag.source
extension to Class<Feature<*>>
that returns a feature flag source if available.description
extension to Class<Feature<*>>
that returns a feature flag description if available.withOption()
and withDefaultOption()
to Gradle plugin for adding options to feature flags.defaultOption
property to Feature
interface.setOption()
and setOptions()
functions to Laboratory
and FeatureStorage
.excludeProjects
plugin functions are now called projectFilter
and the condition is reversed. Previously they removed projects that matched a condition. Now they allow projects that match it.sourcedWith
property on Feature
is now named source
.1.4.1
.withValue()
and withDefaultValue()
functions in Gradle plugin. withOption()
and withDefaultOption()
should be used instead.setFeature()
and setFeatures()
functions. setOption()
and setOptions()
should be used instead.ProjectFilter
from laboratory-gradle-plugin
in favour of java.util.function.Predicate
.configure()
overload which accepts sources factory as a separate argument.isDefaultValue
from Feature
interface. defaultOption
should be used instead.generateSourcedFeatureStorage
task to a correct tasks group.feature
/features
argument in setFeature()
and setFeatures()
methods to value
/values
respectively.IoMehowLaboratory.Theme
and a regular resource is used instead. This makes sure that when an Activity theme is overridden externally it won’t crash for an unknown attribute.1.4.0
.3.5.0
.generateFactory
property from sourcedFeatureStorage()
method in Gradle plugin. It was added to the public API by a mistake and wasn’t responsible for anything.library-shared-preferences
artifact. It was added by a mistake.BuildConfig
classes from Android library modules.META-INF
of the laboratory
artifact.SharedPreferencesFeatureStorage
is now internal
.laboratory-generator
generates source code compatible with the explicit API mode.30
.1.7.2
.0.9.30
.1.0.0-alpha02
.FeatureStorage
extensions for creation of SharedPreferences
based FeatureStorage
.FeatureStorage
extensions for creation of DataStore
based FeatureStorage
.io_mehow_laboratory_plugin_id
resource.SharedPreferenceFeatureStorage
soon will become internal
.DataStoreFeatureStorage
is now internal
. It is not considered a breaking change as DataStore
is in the alpha stage.Feature
can have now description. It can be used to add more contextual data to feature flags.LaboratoryActivity
observes changes to feature flags instead of loading them every time the screen is opened.LaboratoryActivity
displays feature flag sources next to them and allows users to select a source from a drop down menu.LaboratoryActivity
if a source is not local.LaboratoryActivity
.LaboratoryActivity
displays feature flag descriptions if they are present.LaboratoryActivity
can reset feature flag values to their default state from an item in the action bar.Laboratory.experimentIs()
and Laboratory.experimentIsBlocking()
functions that allow to check if a feature flag has particular value.1.0.0
dependency to laboratory-inspector
.1.1.0
dependency to laboratory-inspector
.LaboratoryActivity
requires now a Laboratory
instance for initialization. This Laboratory
should share FeatureStorage
with instances of Laboratory
used in the application.fallback
nomenclature to default
. This affects Gradle plugin withFallbackValue()
and withFallbackSources()
functions as well as isFallbackValue
property on the Feature
interface.FeatureStorage
extension function is now sourcedGenerated()
in order to align it with the generated feature factory extension function name.FeatureStorage
that connects feature flags with their sources. It is available via FeatureStorage.sourced()
extension function. Feature flag sources are uniquely identified only by their value names.withSource("Name")
and withFallbackSource("Name")
functions in feature()
blocks. Any source that has the name “Local” (or a variant of it) is filtered out.sourcedStorage()
function. It is responsible for generating a customized FeatureStorage
that is aware of all available feature flag sources.featureSourceFactory()
function. It works similarly to featureFactory()
function with a difference that it collects only feature flag sources.LaboratoryActivity
is now configurable with the configure() function
.LaboratoryActivity
can display different sets of feature flags on separate tabs.1.2.5
dependency to laboratory-inspector
.2.2.0
dependency to laboratory-inspector
.LaboratoryActivity.initialize()
function is renamed to configure()
.factory()
function is renamed to featureFactory()
.Laboratory
exposes a blocking way of reading and writing feature flags. It requires an opt-in BlockingIoCall
annotation.laboratory-android
artifact is now laboratory-shared-preferences
artifact.laboratory-shared-preferences
artifact (old laboratory-android
) is no longer automatically applied by Gradle plugin in Android modules.1.4.10
.1.3.2
.3.4.0
.1.6.0
.Laboratory.observe()
function to observe feature flag changes via Flow
.DataStore
with the laboratory-data-store
artifact.Laboratory
and FeatureStorage
return a boolean information whether writes are successful.Feature
interface that is used to define feature flags.3.2.2
dependency to laboratory-data-store
.Laboratory
and FeatureStorage
expose their API via suspend
functions.withFallbackValue("Name")
function.1.4.0
.1.2.1
.0.9.29
.@Feature
annotation. Feature flags should implement the Feature
interface.