Skip to content

v6.0.0

Latest

Choose a tag to compare

@NinjaRocks NinjaRocks released this 11 Nov 01:37
· 1 commit to master since this release

Release Notes - FeatureOne v6.0.0

Release Date: August 16, 2026
Version: 6.0.0
Type: Major Release
Packages: FeatureOne · FeatureOne.SQL · FeatureOne.File

Summary

FeatureOne v6.0.0 is a major milestone release that adds full CNCF OpenFeature Specification (v1.x) compliance. The provider ships inside the core FeatureOne package under the FeatureOne.OpenFeature namespace — there is no separate package. FeatureOne now offers two equally supported APIs over the same evaluation engine: the native IFeatures API and the OpenFeature provider.

Key Features

  • FeatureOneProvider: OpenFeature FeatureProvider implementation supporting Boolean, String, Integer, Double, and Structure flag evaluations. Non-boolean resolvers are projections of the boolean result, not multivariate values.
  • Context Mapping: Maps OpenFeature EvaluationContext (TargetingKey and attributes — strings, booleans, numbers, dates, lists, structures) to FeatureOne user claims.
  • Dependency Injection: ASP.NET Core DI extensions (AddFeatureOneOpenFeature), with global provider registration performed by an IHostedService at startup and an options overload for hook configuration.
  • Provider Lifecycle: InitializeAsync validates store availability and reports ProviderStatus.Error; a missing store surfaces as ProviderNotReady rather than FlagNotFound.
  • Custom Condition Registration: ConditionDeserializer.Register<T>("Name") for user-defined ICondition types, preserving the deny-by-default type allow list.
  • Core Interoperability: FeatureStore property exposed on Features facade.

Target Frameworks

  • .NETStandard 2.1
  • .NET 9.0
  • .NET 10.0

Test Verification

  • 260 out of 260 tests passed across FeatureOne.Tests (183), FeatureOne.OpenFeature.Tests (49), FeatureOne.File.Tests (12), and FeatureOne.SQL.Tests (16).

Backward Compatibility

The native API surface is fully backward compatible. Two behavioural changes:

  • Condition deserialization failures now throw FeatureOneConfigurationException (derived from Exception) instead of a bare Exception.
  • RelationalCondition now compares numeric claim values arithmetically rather than lexicographically, and implements the previously dead LessThan operator. Toggles relying on the old behaviour will evaluate differently.

See ReleaseNotes.v6.0.0.md for the full list, including bugs fixed in this release.