diff --git a/CHANGELOG.md b/CHANGELOG.md index ac8ae676..11bd0291 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,28 @@ # Optimizely C# SDK Changelog +## 4.4.0 +July 10, 2026 + +### New Features + +**Local Holdouts**: Added support for Local Holdouts, enabling holdout experiments +to be scoped to specific feature flag rules rather than applied globally. +Local Holdouts let you measure the true incremental impact of individual features +by holding out a subset of users from specific rollouts while still serving them other experiences. +See [Holdouts docs](https://support.optimizely.com/hc/en-us/articles/38941939408269-Global-holdouts) for more information. + +- Add local holdouts support ([#408](https://github.com/optimizely/csharp-sdk/pull/408)) +- Add localHoldouts to datafile for backward compatibility ([#412](https://github.com/optimizely/csharp-sdk/pull/412)) + +### Changed + +- Don't send ODP identify event for single identifier ([#409](https://github.com/optimizely/csharp-sdk/pull/409)) + +### Bug Fixes + +- Use attribute id instead of key for CMAB prediction requests ([#416](https://github.com/optimizely/csharp-sdk/pull/416)) +- Normalize decision event campaign_id, variation_id, and entity_id ([#415](https://github.com/optimizely/csharp-sdk/pull/415)) + ## 4.3.0 May 4, 2026 diff --git a/OptimizelySDK.DemoApp/Properties/AssemblyInfo.cs b/OptimizelySDK.DemoApp/Properties/AssemblyInfo.cs index 480d3da9..702b8c5f 100644 --- a/OptimizelySDK.DemoApp/Properties/AssemblyInfo.cs +++ b/OptimizelySDK.DemoApp/Properties/AssemblyInfo.cs @@ -37,6 +37,6 @@ // // You can specify all the values or you can default the Revision and Build Numbers // by using the '*' as shown below: -[assembly: AssemblyVersion("4.3.0.0")] -[assembly: AssemblyFileVersion("4.3.0.0")] -[assembly: AssemblyInformationalVersion("4.3.0")] // Used by NuGet. +[assembly: AssemblyVersion("4.4.0.0")] +[assembly: AssemblyFileVersion("4.4.0.0")] +[assembly: AssemblyInformationalVersion("4.4.0")] // Used by NuGet. diff --git a/OptimizelySDK.Net35/Properties/AssemblyInfo.cs b/OptimizelySDK.Net35/Properties/AssemblyInfo.cs index 48144c22..99ae2a3b 100644 --- a/OptimizelySDK.Net35/Properties/AssemblyInfo.cs +++ b/OptimizelySDK.Net35/Properties/AssemblyInfo.cs @@ -37,6 +37,6 @@ // // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: -[assembly: AssemblyVersion("4.3.0.0")] -[assembly: AssemblyFileVersion("4.3.0.0")] -[assembly: AssemblyInformationalVersion("4.3.0")] // Used by NuGet. +[assembly: AssemblyVersion("4.4.0.0")] +[assembly: AssemblyFileVersion("4.4.0.0")] +[assembly: AssemblyInformationalVersion("4.4.0")] // Used by NuGet. diff --git a/OptimizelySDK.Net40/Properties/AssemblyInfo.cs b/OptimizelySDK.Net40/Properties/AssemblyInfo.cs index 8daa6c01..4d33edfb 100644 --- a/OptimizelySDK.Net40/Properties/AssemblyInfo.cs +++ b/OptimizelySDK.Net40/Properties/AssemblyInfo.cs @@ -37,6 +37,6 @@ // // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: -[assembly: AssemblyVersion("4.3.0.0")] -[assembly: AssemblyFileVersion("4.3.0.0")] -[assembly: AssemblyInformationalVersion("4.3.0")] // Used by NuGet. +[assembly: AssemblyVersion("4.4.0.0")] +[assembly: AssemblyFileVersion("4.4.0.0")] +[assembly: AssemblyInformationalVersion("4.4.0")] // Used by NuGet. diff --git a/OptimizelySDK.NetStandard16/Properties/AssemblyInfo.cs b/OptimizelySDK.NetStandard16/Properties/AssemblyInfo.cs index d75ac8d2..7405bd3c 100644 --- a/OptimizelySDK.NetStandard16/Properties/AssemblyInfo.cs +++ b/OptimizelySDK.NetStandard16/Properties/AssemblyInfo.cs @@ -37,6 +37,6 @@ // // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: -[assembly: AssemblyVersion("4.3.0")] -[assembly: AssemblyFileVersion("4.3.0.0")] -[assembly: AssemblyInformationalVersion("4.3.0")] // Used by NuGet. +[assembly: AssemblyVersion("4.4.0.0")] +[assembly: AssemblyFileVersion("4.4.0.0")] +[assembly: AssemblyInformationalVersion("4.4.0")] // Used by NuGet. diff --git a/OptimizelySDK.NetStandard20/Properties/AssemblyInfo.cs b/OptimizelySDK.NetStandard20/Properties/AssemblyInfo.cs index fc0fa989..c5a300c4 100644 --- a/OptimizelySDK.NetStandard20/Properties/AssemblyInfo.cs +++ b/OptimizelySDK.NetStandard20/Properties/AssemblyInfo.cs @@ -37,6 +37,6 @@ // // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: -[assembly: AssemblyVersion("4.3.0.0")] -[assembly: AssemblyFileVersion("4.3.0.0")] -[assembly: AssemblyInformationalVersion("4.3.0")] // Used by NuGet. +[assembly: AssemblyVersion("4.4.0.0")] +[assembly: AssemblyFileVersion("4.4.0.0")] +[assembly: AssemblyInformationalVersion("4.4.0")] // Used by NuGet. diff --git a/OptimizelySDK.Tests/Properties/AssemblyInfo.cs b/OptimizelySDK.Tests/Properties/AssemblyInfo.cs index 38f99b43..2e29383d 100644 --- a/OptimizelySDK.Tests/Properties/AssemblyInfo.cs +++ b/OptimizelySDK.Tests/Properties/AssemblyInfo.cs @@ -28,8 +28,8 @@ // Build Number // Revision // -// You can specify all the values or you can default the Revision and Build Numbers +// You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: -[assembly: AssemblyVersion("4.3.0.0")] -[assembly: AssemblyFileVersion("4.3.0.0")] -[assembly: AssemblyInformationalVersion("4.3.0")] // Used by NuGet. +[assembly: AssemblyVersion("4.4.0.0")] +[assembly: AssemblyFileVersion("4.4.0.0")] +[assembly: AssemblyInformationalVersion("4.4.0")] // Used by NuGet. diff --git a/OptimizelySDK/Properties/AssemblyInfo.cs b/OptimizelySDK/Properties/AssemblyInfo.cs index a5c0ee75..f8e3e6b8 100644 --- a/OptimizelySDK/Properties/AssemblyInfo.cs +++ b/OptimizelySDK/Properties/AssemblyInfo.cs @@ -41,6 +41,6 @@ // // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: -[assembly: AssemblyVersion("4.3.0.0")] -[assembly: AssemblyFileVersion("4.3.0.0")] -[assembly: AssemblyInformationalVersion("4.3.0")] // Used by NuGet. +[assembly: AssemblyVersion("4.4.0.0")] +[assembly: AssemblyFileVersion("4.4.0.0")] +[assembly: AssemblyInformationalVersion("4.4.0")] // Used by NuGet.