@@ -7,38 +7,81 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77
88## [ Unreleased]
99
10+ ## [ 1.0.0-Beta1] - 2026-05-17
11+
1012### Added
1113
12- - Configuration Cache support (Gradle 9+, AGP 9+) for ` featured-gradle-plugin `
13- - ` NSUserDefaultsConfigValueProvider ` for iOS/macOS local storage (#104 )
14+ #### Core library
15+
16+ - Core KMP library: ` ConfigParam ` , ` ConfigValue ` , ` ConfigValues ` with reactive ` Flow ` API
17+ - Explicit initialization mechanism for ` ConfigValues ` (#98 )
1418- ` clear() ` method on ` LocalConfigValueProvider ` interface (#101 )
1519- Graceful error handling when a provider fails (#100 )
1620- Multivariate flag support — ` enum ` and sealed class ` ConfigParam ` types (#99 )
17- - Explicit initialization mechanism for ` ConfigValues ` (#98 )
21+ - SKIE 0.10.5 bridge for Swift interop (coroutines, sealed classes, default arguments)
22+ - Combine ` Publisher ` support in ` FeatureFlags.swift ` (#88 )
23+ - XCFramework published as Swift Package Manager artifact (#91 )
24+
25+ #### Providers
26+
27+ - ` InMemoryConfigValueProvider ` — built-in in-memory local provider
28+ - ` SharedPreferencesConfigValueProvider ` — local storage via SharedPreferences
29+ - ` DataStoreConfigValueProvider ` — local storage via Jetpack DataStore
30+ - ` JavaPreferencesConfigValueProvider ` — default JVM local provider (#167 , #178 )
31+ - ` NSUserDefaultsConfigValueProvider ` for iOS/macOS local storage (#104 )
32+ - ` FirebaseConfigValueProvider ` — remote config via Firebase Remote Config
33+
34+ #### Gradle plugin and code generation
35+
36+ - ` featured-gradle-plugin ` module — code generation for Kotlin, iOS, and ProGuard (#72 , #76 , #80 , #83 , #86 )
37+ - Declare flags via Gradle DSL; auto-generate typed extensions and per-function R8 rules
38+ - Enum-typed flags in Gradle DSL (#162 )
39+ - Auto-generated ` FlagRegistry ` initializers per module (#110 )
40+ - Auto-wired ProGuard rules into Android builds via AGP Variant API
41+ - Configuration Cache support (Gradle 9+, AGP 9+) (#164 )
42+ - E2E integration test for ` featured-gradle-plugin `
43+ - ` featured-shrinker-tests ` — R8 dead-code-elimination verification module (#165 )
44+
45+ #### Static analysis
46+
47+ - ` featured-lint-rules ` Android Lint module with ` HardcodedFlagValue ` , ` UncheckedFlagAccess ` , ` ExpiredFeatureFlag ` , and ` InvalidFlagReference ` detectors (#141 , #176 , #181 )
48+ - Detekt rules: ` @BehindFlag ` / ` @AssumesFlag ` annotations and ` InvalidFlagReference ` / ` UncheckedFlagAccess ` rules (#142 )
49+
50+ #### Compose and tooling
51+
52+ - ` featured-compose ` module — ` LocalConfigValues ` CompositionLocal and ` collectAsState ` (#73 , #78 )
53+ - ` featured-debug-ui ` module — Compose Multiplatform flag override UI (#79 )
54+ - ` featured-registry ` module — declarative flag scanning across modules (#74 )
1855- ` featured-testing ` module with ` FakeConfigValues ` and test DSL (#97 )
19- - MkDocs Material documentation website (#96 )
56+
57+ #### Packaging and docs
58+
2059- Bill of Materials (` featured-bom ` ) module (#82 )
2160- Maven Central publishing for all modules (#81 )
22- - ` featured-debug-ui ` module — Compose Multiplatform flag override UI (#79 , #648f38e)
23- - ` featured-gradle-plugin ` module — code generation for Kotlin, iOS, and ProGuard (#72 , #76 , #80 , #83 , #86 )
24- - ` featured-registry ` module — declarative flag scanning across modules (#74 )
25- - ` featured-compose ` module — ` LocalConfigValues ` CompositionLocal and ` collectAsState ` (#73 , #78 )
26- - XCFramework published as Swift Package Manager artifact (#91 )
27- - Combine ` Publisher ` support in ` FeatureFlags.swift ` (#88 )
2861- Dokka API reference generation (#92 )
29- - ` FirebaseConfigValueProvider ` — remote config via Firebase Remote Config
30- - ` DataStoreConfigValueProvider ` — local storage via Jetpack DataStore
31- - ` SharedPreferencesConfigValueProvider ` — local storage via SharedPreferences
32- - ` InMemoryConfigValueProvider ` — built-in in-memory local provider
33- - Core KMP library: ` ConfigParam ` , ` ConfigValue ` , ` ConfigValues ` with reactive ` Flow ` API
34- - SKIE 0.10.5 bridge for Swift interop (coroutines, sealed classes, default arguments)
35- - Binary Compatibility Validator (BCV) API dump for all modules (#95 )
62+ - MkDocs Material documentation website (#96 )
3663- DI pattern documentation for multi-module ` ConfigValues ` usage (#93 )
64+ - ` SECURITY.md ` with vulnerability disclosure policy (#173 )
65+ - GitHub issue templates and pull-request template (#175 )
66+
67+ ### Changed
68+
69+ - Migrated to AGP 9.1.0 + Gradle 9.3.1 with full KMP plugin support (#135 )
70+ - Moved all provider modules under ` providers/ ` directory (#128 )
71+
72+ ### Removed
73+
74+ - ` binary-compatibility-validator ` (BCV) plugin from all modules (#150 )
75+ - ` @LocalFlag ` / ` @RemoteFlag ` annotations from public API
3776
3877### Fixed
3978
40- - ` ConfigValues.observe() ` not reacting to remote provider changes (#c0e0557)
41- - Xcode build: JAVA_HOME, FRAMEWORK_SEARCH_PATHS, and Swift module import (#1c488ca)
79+ - ` ConfigValues.observe() ` not reacting to remote provider changes
80+ - Xcode build: ` JAVA_HOME ` , ` FRAMEWORK_SEARCH_PATHS ` , and Swift module import
4281- ` @MainActor ` and ` Sendable ` conformance in ` FeatureFlags.swift ` (#85 )
82+ - ` FirebaseConfigValueProvider.fetch() ` now wraps ` RuntimeException ` in ` FetchException ` (#151 )
83+ - License mismatch: use MIT in all POM declarations (#174 )
84+ - Stale artifact IDs in quick-start docs (#179 )
4385
44- [ Unreleased ] : https://github.com/androidbroadcast/Featured/compare/HEAD...HEAD
86+ [ Unreleased ] : https://github.com/androidbroadcast/Featured/compare/v1.0.0-Beta1...HEAD
87+ [ 1.0.0-Beta1 ] : https://github.com/androidbroadcast/Featured/releases/tag/v1.0.0-Beta1
0 commit comments