What's Changed
- Support runtime provider replacement (hot-swap) by @EtaCassiopeia in #102
- Add centralized domain-scoped provider registry by @EtaCassiopeia in #104
- Add asyncReadyLayer and layer selection guide by @EtaCassiopeia in #105
- Add behavior controls to TestFeatureProvider by @EtaCassiopeia in #106
- Fix circuit breaker probe lockup, cache key collision, evaluators leak, and HOCON list corruption by @EtaCassiopeia in #107
- Centralize type dispatch in ClientEvaluator, fix addApiHook singleton bypass, simplify TestFeatureProvider Hub by @EtaCassiopeia in #109
- Make AsyncReadyLayerSpec deterministic via TestClock by @EtaCassiopeia in #117
- Add MultiProviderStrategy aliases by @EtaCassiopeia in #118
- Add zio-openfeature-ofrep module with WireMock-backed tests by @EtaCassiopeia in #119
- Add 30s init timeout and verify sync provider state by @EtaCassiopeia in #138
- Classify auth/network errors and validate OFREP construction by @EtaCassiopeia in #139
- Add property-based round-trip spec and concurrency spec by @EtaCassiopeia in #143
- Add optimizely module with validated Scala factory by @EtaCassiopeia in #140
- Add OFREP failure-mode spec and ProviderInitFailureSpec by @EtaCassiopeia in #142
- Add release hygiene: CHANGELOG, mima, CI matrix, NOTICE, examples by @EtaCassiopeia in #144
- Add WireMock-backed Optimizely failure-mode integration suite by @EtaCassiopeia in #141
- Add Optimizely docs: docs/optimizely.md and README + providers updates by @EtaCassiopeia in #145
- Document sync vs async + fallback strategy trade-offs by @EtaCassiopeia in #146
- Add lifecycle and concurrency tests for OptimizelyFeatureProvider by @EtaCassiopeia in #158
- Fix flaky FeatureFlagRegistrySpec / ProviderHotSwapSpec: guard async PROVIDER_READY race after failed setProvider by @EtaCassiopeia in #162
- Fix: share NotificationCenter so PROVIDER_CONFIGURATION_CHANGED events propagate by @EtaCassiopeia in #161
- Release 0.9.0 by @EtaCassiopeia in #163
Full Changelog: v0.8.0...v0.9.0