From 9e2d8216b948f7e372af3753bad6daf70bf80554 Mon Sep 17 00:00:00 2001 From: D C P Revere Date: Sun, 30 Nov 2025 13:57:51 +0000 Subject: [PATCH 1/5] Add release notes for 2.0 ... 3.0. --- RELEASE_NOTES.md | 66 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 65 insertions(+), 1 deletion(-) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 6219a1d9a..da53ed24f 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -163,4 +163,68 @@ * Migrate from netcoreapp2.0 to net5.0 for tests and samples * Target netstandard2.0 exclusively for Type Providers * Make FSharp.Data.GraphQL.Shared a Nuget package -* Fix parser bug. Thanks to @njlr \ No newline at end of file +* Fix parser bug. Thanks to @njlr + +### 2.0.0 - March 24 2024 +* **Breaking Change** Migrated to .NET 6/7 and F# 7 +* **Breaking Change** Implemented GraphQL error handling using `IGQLError` interface instead of exceptions +* **Breaking Change** Parsing variables as `JsonElement` +* **Breaking Change** Added `Type` suffix to all built-in GraphQL type definitions +* **New Package** `FSharp.Data.GraphQL.Server.AspNetCore` for ASP.NET Core integration +* Migrated from Paket and FAKE CLI to standard MSBuild tooling +* Added `Path` to `ResolveFieldContext` +* Added ability to deprecate fields defined with any combination of parameters +* Fixed nullable enum input handling +* Support using F# discriminated unions as enum variables +* Support `Option` variable values for nullable input +* Input lists from query/AST can now be mapped to internal array types +* Implemented input object validation with detailed error messages +* Added `Define.WrappedScalar` for value object scalar definitions +* Implemented coercion of nested input objects +* Added support for `ValueOption` in `AutoField` +* Improved WebSocket handling to eliminate large array allocations +* Fixed various introspection and default value encoding issues + +### 2.1.0 - April 13 2024 +* Improved server exception logging by including exception in log message +* Documentation and README improvements + +### 2.2.0 - May 8 2024 +* Improved `AddGraphQLOptions` +* Added Altair and GraphiQL to sample projects + +### 2.2.1 - June 16 2024 +* Fixed `JsonSerializerOptions` read-only instance error + +### 3.0.0 - November 2025 +* **Breaking Change** Migrated to .NET 8 and F# 9.0 with FSharp.Core 9.0.x +* **Breaking Change** Updated scalar `CoerceOutput` signature to `objnull -> 'Primitive option` +* **Breaking Change** Moved GraphQL error extensions to standard `extensions` field per specification +* **Breaking Change** Renamed `ObjectListFilter` type definition to `ObjectListFilterType` +* **Breaking Change** Removed `ObjectListFilter.NoFilter` case +* **Breaking Change** Removed Suave support +* **Breaking Change** Reworked Relay types to enable async fetching and switched to `ValueOption` +* Added Oxpecker web framework support +* Implemented per-field authorization using ASP.NET authorization policies +* Implemented file upload support via GraphQL Multipart Request Spec with `FileData` type +* Implemented `OfTypes` filter case for `ObjectListFilter` to filter union cases by type +* Implemented `ObjectListFilter` parsing from variables +* Added support for variables within inline object list filters +* Implemented additional list filter operators (`In`, `Contains`, `StartsWith`, `EndsWith`) +* Implemented `StructNullable` to support `ValueOption` fields in input objects +* Implemented case-insensitive input object fields and constructor parameters matching +* Added ability to recognize if an input field is null or not present at all +* Added ability to add errors to resolved fields +* Added `FieldDef<'Val, 'Res>` to support resolver-changing middlewares +* Added GraphQL extensions support via `GQLMessageException` +* Added more overloads to `AddGraphQLOptions` including additional converters +* Implemented support for optional properties usage in non-Enumerable LINQ queries +* Fixed `ID` type deserialization +* Fixed `Contains` and `In` operators implementation for collections +* Fixed generation of discriminator comparing expressions to be translatable to database queries +* Fixed `IInputExecutionContext` resolution +* Fixed `graphql-transport-ws` WebSocket implementation +* Fixed ability to override `GraphQLRequestHandler<'Root>` +* Fixed input object CLR property type validation against GraphQL scalar definitions +* Migrated all solutions to SLNX format +* Various performance optimizations and bug fixes \ No newline at end of file From 00bde0fa04360fcd52241770c708115216ea62eb Mon Sep 17 00:00:00 2001 From: Andrii Chebukin Date: Sun, 30 Nov 2025 23:24:31 +0400 Subject: [PATCH 2/5] Fixed change descriptions --- RELEASE_NOTES.md | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index da53ed24f..7d4f0aa42 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -168,16 +168,16 @@ ### 2.0.0 - March 24 2024 * **Breaking Change** Migrated to .NET 6/7 and F# 7 * **Breaking Change** Implemented GraphQL error handling using `IGQLError` interface instead of exceptions -* **Breaking Change** Parsing variables as `JsonElement` +* **Breaking Change** Implemented parsing variables as `JsonElement` * **Breaking Change** Added `Type` suffix to all built-in GraphQL type definitions * **New Package** `FSharp.Data.GraphQL.Server.AspNetCore` for ASP.NET Core integration -* Migrated from Paket and FAKE CLI to standard MSBuild tooling +* Migrated from Paket and FAKE CLI to FAKE build project * Added `Path` to `ResolveFieldContext` -* Added ability to deprecate fields defined with any combination of parameters +* Added ability to deprecate fields defined with any combination of parameters (more overloads to `Define` static class) * Fixed nullable enum input handling -* Support using F# discriminated unions as enum variables -* Support `Option` variable values for nullable input -* Input lists from query/AST can now be mapped to internal array types +* Fixed coercing enum type variables as F# # discriminated unions +* Assed support of `Option` variable values for nullable input types +* Iplemented mapping of input query/AST lists to .NET array type in addition to F# list * Implemented input object validation with detailed error messages * Added `Define.WrappedScalar` for value object scalar definitions * Implemented coercion of nested input objects @@ -196,31 +196,31 @@ ### 2.2.1 - June 16 2024 * Fixed `JsonSerializerOptions` read-only instance error -### 3.0.0 - November 2025 +### 3.0.0 - November 30 2025 * **Breaking Change** Migrated to .NET 8 and F# 9.0 with FSharp.Core 9.0.x * **Breaking Change** Updated scalar `CoerceOutput` signature to `objnull -> 'Primitive option` -* **Breaking Change** Moved GraphQL error extensions to standard `extensions` field per specification +* **Breaking Change** Moved GraphQL error extensions to standard `extensions` field according to specification * **Breaking Change** Renamed `ObjectListFilter` type definition to `ObjectListFilterType` * **Breaking Change** Removed `ObjectListFilter.NoFilter` case -* **Breaking Change** Removed Suave support * **Breaking Change** Reworked Relay types to enable async fetching and switched to `ValueOption` +* Removed unused Suave NuGet package * Added Oxpecker web framework support -* Implemented per-field authorization using ASP.NET authorization policies -* Implemented file upload support via GraphQL Multipart Request Spec with `FileData` type -* Implemented `OfTypes` filter case for `ObjectListFilter` to filter union cases by type -* Implemented `ObjectListFilter` parsing from variables -* Added support for variables within inline object list filters -* Implemented additional list filter operators (`In`, `Contains`, `StartsWith`, `EndsWith`) -* Implemented `StructNullable` to support `ValueOption` fields in input objects -* Implemented case-insensitive input object fields and constructor parameters matching +* Added per-field authorization sample using ASP.NET authorization policies +* Added file upload support via GraphQL Multipart Request Spec with `FileData` type +* Added `OfTypes` filter case for `ObjectListFilter` to filter union cases by type +* Added `ObjectListFilter` value parsing from variables in addition to supported inline value +* Added `ObjectListFilter` value parsing from inline object with variables +* Added `ObjectListFilter` additional operators (`In`, `Contains`, `StartsWith`, `EndsWith`) +* Added `StructNullable` to support `ValueOption` fields in input objects +* Added case-insensitive input object fields and constructor parameters matching * Added ability to recognize if an input field is null or not present at all * Added ability to add errors to resolved fields -* Added `FieldDef<'Val, 'Res>` to support resolver-changing middlewares +* Added `FieldDef<'Val, 'Res>` type to support resolver-changing middlewares * Added GraphQL extensions support via `GQLMessageException` * Added more overloads to `AddGraphQLOptions` including additional converters -* Implemented support for optional properties usage in non-Enumerable LINQ queries +* Added support for optional properties usage in non-Enumerable LINQ queries * Fixed `ID` type deserialization -* Fixed `Contains` and `In` operators implementation for collections +* Fixed `ObjectListFilter` `Contains` and `In` operators implementation for collections * Fixed generation of discriminator comparing expressions to be translatable to database queries * Fixed `IInputExecutionContext` resolution * Fixed `graphql-transport-ws` WebSocket implementation From db7cf7fe22552f094632b95f7b832175536ba592 Mon Sep 17 00:00:00 2001 From: Andrii Chebukin Date: Sun, 30 Nov 2025 23:26:36 +0400 Subject: [PATCH 3/5] Fixed release notes grammar mistakes --- RELEASE_NOTES.md | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 7d4f0aa42..eac19f231 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -16,12 +16,12 @@ ### 0.0.4-beta - May 31 2018 * Introduced support for middlewares in the execution pipeline. * Introduced new package, named FSharp.Data.GraphQL.Server.Middleware, with generic, built-in middlewares. -* Introduced QueryWeightMiddleware, a generic execution middleware to measure query complexity and optionally block qurey execution with a threshold. +* Introduced QueryWeightMiddleware, a generic execution middleware to measure query complexity and optionally block query execution with a threshold. * Introduced ObjectListFilterMiddleware, a generic schema compile middleware to add filter options to list fields of specific objects. * Changed GQLResponse object to be a Record, which supports a Metadata bag object, that can be used to hold custom information per query request. * Changed FieldDef interface to be able to support a Metadata bag object, that can be used to hold custom information per field. * ISchema TypeMap is now a mutable object, to ease schema customization through schema compile middlewares. -* Fixing many minor errors when deferring or streaming results with Union and Enum types (specially when queried using fragments). +* Fixing many minor errors when deferring or streaming results with Union and Enum types (especially when queried using fragments). * Deferred and streamed error results now are handled. * Added support for nested deferred and streamed results (currently does have a maximum degree of two nested operations). @@ -44,10 +44,10 @@ * Add Long Scalar definition ### 0.0.8-beta - October 27 2018 -* Add subscription field to intospection schema +* Add subscription field to introspection schema ### 0.0.8-beta01 - October 28 2018 -* Add subscription field to intospection schema +* Add subscription field to introspection schema ### 0.0.9 - November 2 2018 * Fixed a bug where output def of a subscription field was not reachable for introspection. @@ -74,25 +74,25 @@ * Fix dispose of deferred/stream responses. ### 1.0.0-beta - April 27 2019 -* **Breaking Change** New type provider api! see samples/client-provider for details. +* **Breaking Change** New type provider API! see samples/client-provider for details. * Fixes for #216 enum as a variable. * Upgraded paket and dependencies. ### 1.0.0-beta2 - April 27 2019 -* **Breaking Change** GraphQLProvider now makes Nullable graphql inputs optional method arguments instead of options +* **Breaking Change** GraphQLProvider now makes Nullable GraphQL inputs optional method arguments instead of options * **Breaking Change** GraphQLProvider uses the operation name as the generated operation type's names. if no operation name is specified it uses "Operation" + the query string's hash * Make the type provider cross-targeting * **Breaking Change** Add postcompile phase to middleware interface ### 1.0.0-beta3 - May 10 2019 -* **Breaking Change** GraphQLProvider record types constructors now receives option arguments as optional arguments +* **Breaking Change** GraphQLProvider record types constructors now receive option arguments as optional arguments * Revision on scalar types parsing - fixed some wrong behaviors such as parsing ints as floats ### 1.0.0-beta4 - May 13 2019 -* Fixing an bug when converting variable types to variables json in a query +* Fixing a bug when converting variable types to variables json in a query ### 1.0.0-beta5 - May 13 2019 -* Fixing an bug when parsing json objects with no fields in serialization +* Fixing a bug when parsing json objects with no fields in serialization ### 1.0.0-beta6 - May 17 2019 * Changing constructors of provided types to have overloads instead of optional parameters (needed because of a limitation of the Type Provider SDK) @@ -116,7 +116,7 @@ * Minor bug fixes ### 1.0.0 - July 4 2019 -* Changing the internal client of the Type provider (`System.Http.HttpClient`) +* Changing the internal client of the Type provider (`System.Net.Http.HttpClient`) * Fixing several minor bugs of the file upload system in the client provider * Limiting the upload type of the client provider to be a scalar type (provider fails if it is not) * If an upload type is specified and it is not used in a query, client provider defaults to standard HTTP protocol instead of the multipart request @@ -124,7 +124,7 @@ * Making validation mandatory on the server component * Implemented a cache system for query validation on both server and client components * Client component can optionally disable query validation -* Updating parser to support unamed operations alongside short handed queries +* Updating parser to support unnamed operations alongside shorthand queries * Adding null value support for the AST Input Values (it was previously parsed as an Enum Value) * **Breaking Change** Renaming `FSharp.Data.GraphQL.Server.Middlewares` package to `FSharp.Data.GraphQL.Server.Middleware` @@ -138,7 +138,7 @@ * Correct printing of queries without names * Correct printing of ListValue and ObjectValue * Traverse list values in argument lists -* Added test cases for object inputs for graphql functions +* Added test cases for object inputs for GraphQL functions ### 1.0.4 - March 22 2020 @@ -162,7 +162,7 @@ * Upgrade build scripts * Migrate from netcoreapp2.0 to net5.0 for tests and samples * Target netstandard2.0 exclusively for Type Providers -* Make FSharp.Data.GraphQL.Shared a Nuget package +* Make FSharp.Data.GraphQL.Shared a NuGet package * Fix parser bug. Thanks to @njlr ### 2.0.0 - March 24 2024 @@ -176,8 +176,8 @@ * Added ability to deprecate fields defined with any combination of parameters (more overloads to `Define` static class) * Fixed nullable enum input handling * Fixed coercing enum type variables as F# # discriminated unions -* Assed support of `Option` variable values for nullable input types -* Iplemented mapping of input query/AST lists to .NET array type in addition to F# list +* Added support of `Option` variable values for nullable input types +* Added mapping of input query/AST lists to .NET array type in addition to F# list * Implemented input object validation with detailed error messages * Added `Define.WrappedScalar` for value object scalar definitions * Implemented coercion of nested input objects From 5fcf9ff90cf66f1f0d997d5839d49a6eda4ed25c Mon Sep 17 00:00:00 2001 From: Andrii Chebukin Date: Sun, 30 Nov 2025 23:27:12 +0400 Subject: [PATCH 4/5] Migrated release notes dates to ISO format --- RELEASE_NOTES.md | 82 ++++++++++++++++++++++++------------------------ 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index eac19f231..1b83321da 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,19 +1,19 @@ -#### 0.0.1-beta - April 19 2016 +#### 0.0.1-beta - 2016-04-19 * Initial release -#### 0.0.2-beta - September 1 2016 +#### 0.0.2-beta - 2016-09-01 * Introduced intermediate representation of GraphQL operation execution. * Introduced ability to convert GraphQL query to LINQ. * Replaced current asynchronous API resolver internals. * Ability to use records as complex input variables. * Minor bugfixes and performance optimizations. -### 0.0.3-beta - March 22 2018 +### 0.0.3-beta - 2018-03-22 * Introduced a sample for GraphQL over WebSocket Protocol * Introduced support for Stream and Defer directives * Minor bugfixes. -### 0.0.4-beta - May 31 2018 +### 0.0.4-beta - 2018-05-31 * Introduced support for middlewares in the execution pipeline. * Introduced new package, named FSharp.Data.GraphQL.Server.Middleware, with generic, built-in middlewares. * Introduced QueryWeightMiddleware, a generic execution middleware to measure query complexity and optionally block query execution with a threshold. @@ -25,97 +25,97 @@ * Deferred and streamed error results now are handled. * Added support for nested deferred and streamed results (currently does have a maximum degree of two nested operations). -### 0.0.4-beta01 - May 31 2018 +### 0.0.4-beta01 - 2018-05-31 * Fix package dependency versions -### 0.0.5-beta - August 10 2018 +### 0.0.5-beta - 2018-08-10 * Upgraded dependencies on Newtonsoft.Json to the latest version. * Changing subscription field definitions to have a generic output type - the output is not required to be a GraphQL type anymore. * Implemented experimental support for @live directive, through a subscription system. * Fixed a bug that caused an exception when ToString function is called on an empty NameValueLookup. * Added support for asynchronous subscription field definitions. -### 0.0.6-beta - August 10 2018 +### 0.0.6-beta - 2018-08-10 * Fixes for introspection query * Use string identifier to publish to subscription -### 0.0.7-beta - September 17 2018 +### 0.0.7-beta - 2018-09-17 * **Breaking Change:** Async Pub/Sub methods for subscription and live directive handler interfaces * Add Long Scalar definition -### 0.0.8-beta - October 27 2018 +### 0.0.8-beta - 2018-10-27 * Add subscription field to introspection schema -### 0.0.8-beta01 - October 28 2018 +### 0.0.8-beta01 - 2018-10-28 * Add subscription field to introspection schema -### 0.0.9 - November 2 2018 +### 0.0.9 - 2018-11-02 * Fixed a bug where output def of a subscription field was not reachable for introspection. -### 0.0.10-beta - November 13 2018 +### 0.0.10-beta - 2018-11-13 * Deferred and Streamed results now return their fields in the direct result as well. The value of those fields will be an empty list or null. * Live results now send the immediate result in the direct result, instead of the deferred result. -### 0.0.11-beta - November 21 2018 +### 0.0.11-beta - 2018-11-21 * Deferred and Streamed results fixes for GQL interfaces. -### 0.0.12-beta - November 21 2018 +### 0.0.12-beta - 2018-11-21 * Deferred and Streamed results fixes for GQL interfaces when at the top-level of query. -### 0.0.16-beta - January 3 2019 +### 0.0.16-beta - 2019-01-03 * **Breaking Change** The `ISubscriptionProvider` interface now has additional methods to publish to subscriptions by tag. * **Breaking Change** Renamed interface methods in `ISubscriptionProvider` from XxAsync to AsyncXx to reserve the former for TPL extensions. * Fixes for stream and defer execution. -### 0.0.17-beta - January 11 2019 +### 0.0.17-beta - 2019-01-11 * Execute deferred results in parallel. -### 0.0.18-beta - January 16 2019 +### 0.0.18-beta - 2019-01-16 * Fix dispose of deferred/stream responses. -### 1.0.0-beta - April 27 2019 +### 1.0.0-beta - 2019-04-27 * **Breaking Change** New type provider API! see samples/client-provider for details. * Fixes for #216 enum as a variable. * Upgraded paket and dependencies. -### 1.0.0-beta2 - April 27 2019 +### 1.0.0-beta2 - 2019-04-27 * **Breaking Change** GraphQLProvider now makes Nullable GraphQL inputs optional method arguments instead of options * **Breaking Change** GraphQLProvider uses the operation name as the generated operation type's names. if no operation name is specified it uses "Operation" + the query string's hash * Make the type provider cross-targeting * **Breaking Change** Add postcompile phase to middleware interface -### 1.0.0-beta3 - May 10 2019 +### 1.0.0-beta3 - 2019-05-10 * **Breaking Change** GraphQLProvider record types constructors now receive option arguments as optional arguments * Revision on scalar types parsing - fixed some wrong behaviors such as parsing ints as floats -### 1.0.0-beta4 - May 13 2019 +### 1.0.0-beta4 - 2019-05-13 * Fixing a bug when converting variable types to variables json in a query -### 1.0.0-beta5 - May 13 2019 +### 1.0.0-beta5 - 2019-05-13 * Fixing a bug when parsing json objects with no fields in serialization -### 1.0.0-beta6 - May 17 2019 +### 1.0.0-beta6 - 2019-05-17 * Changing constructors of provided types to have overloads instead of optional parameters (needed because of a limitation of the Type Provider SDK) * Adding support for field aliases * Operation result errors and custom data now are provided as their respective types instead of options (`Operation Error []` and `Map`) -### 1.0.0-beta7 - May 17 2019 +### 1.0.0-beta7 - 2019-05-17 * Minor bug fixes * Fixing an error on overload constructor definition -### 1.0.0-beta8 - May 22 2019 +### 1.0.0-beta8 - 2019-05-22 * Performance improvements -### 1.0.0-beta9 - May 22 2019 +### 1.0.0-beta9 - 2019-05-22 * Fixing dependency issue on Server component -### 1.0.0-beta90 - May 29 2019 +### 1.0.0-beta90 - 2019-05-29 * Fixing a wrong cast for System.Uri type * Adding support for file uploads through [GraphQL Multipart Request Spec](https://github.com/jaydenseric/graphql-multipart-request-spec) * Changing variable parameters of Run/AsyncRun methods to work as overloaded methods instead of one having optional parameters * Minor bug fixes -### 1.0.0 - July 4 2019 +### 1.0.0 - 2019-07-04 * Changing the internal client of the Type provider (`System.Net.Http.HttpClient`) * Fixing several minor bugs of the file upload system in the client provider * Limiting the upload type of the client provider to be a scalar type (provider fails if it is not) @@ -128,35 +128,35 @@ * Adding null value support for the AST Input Values (it was previously parsed as an Enum Value) * **Breaking Change** Renaming `FSharp.Data.GraphQL.Server.Middlewares` package to `FSharp.Data.GraphQL.Server.Middleware` -### 1.0.1 - July 5 2019 +### 1.0.1 - 2019-07-05 * Adjusting package dependencies (`FParsec`, `System.Net.Http`, and `FSharp.Data.GraphQL.Server` are not locked anymore) -### 1.0.2 - August 19 2019 +### 1.0.2 - 2019-08-19 * fixed false positive validation errors related to variable usage. -### 1.0.3 - March 3 2020 +### 1.0.3 - 2020-03-03 * Correct printing of queries without names * Correct printing of ListValue and ObjectValue * Traverse list values in argument lists * Added test cases for object inputs for GraphQL functions -### 1.0.4 - March 22 2020 +### 1.0.4 - 2020-03-22 * TypeProvider now treats custom scalars as strings * The Guid scalar was mapped to a DateTime -### 1.0.5 - March 23 2020 +### 1.0.5 - 2020-03-23 * Support opening static classes * Add additional case in client to support failed requests that don't return a path. -### 1.0.6 - December 15 2020 +### 1.0.6 - 2020-12-15 * TypeProvider accepts IHttpClientFactory as input -### 1.0.7 - December 30 2020 +### 1.0.7 - 2020-12-30 * Add static TypeProvider parameter `explicitOptionalParameters`. -### 1.0.8 - April 18 2021 +### 1.0.8 - 2021-04-18 * Remove Desktop build * Update documentation and build tools * Upgrade build scripts @@ -165,7 +165,7 @@ * Make FSharp.Data.GraphQL.Shared a NuGet package * Fix parser bug. Thanks to @njlr -### 2.0.0 - March 24 2024 +### 2.0.0 - 2024-03-24 * **Breaking Change** Migrated to .NET 6/7 and F# 7 * **Breaking Change** Implemented GraphQL error handling using `IGQLError` interface instead of exceptions * **Breaking Change** Implemented parsing variables as `JsonElement` @@ -185,18 +185,18 @@ * Improved WebSocket handling to eliminate large array allocations * Fixed various introspection and default value encoding issues -### 2.1.0 - April 13 2024 +### 2.1.0 - 2024-04-13 * Improved server exception logging by including exception in log message * Documentation and README improvements -### 2.2.0 - May 8 2024 +### 2.2.0 - 2024-05-08 * Improved `AddGraphQLOptions` * Added Altair and GraphiQL to sample projects -### 2.2.1 - June 16 2024 +### 2.2.1 - 2024-06-16 * Fixed `JsonSerializerOptions` read-only instance error -### 3.0.0 - November 30 2025 +### 3.0.0 - 2025-11-30 * **Breaking Change** Migrated to .NET 8 and F# 9.0 with FSharp.Core 9.0.x * **Breaking Change** Updated scalar `CoerceOutput` signature to `objnull -> 'Primitive option` * **Breaking Change** Moved GraphQL error extensions to standard `extensions` field according to specification From f6d52e8c69816ed93dbc2c03680123a1b5f42402 Mon Sep 17 00:00:00 2001 From: Andrii Chebukin Date: Sun, 30 Nov 2025 23:53:31 +0400 Subject: [PATCH 5/5] fixup! Fixed change descriptions --- RELEASE_NOTES.md | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 1b83321da..db3c06f4a 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -173,16 +173,16 @@ * **New Package** `FSharp.Data.GraphQL.Server.AspNetCore` for ASP.NET Core integration * Migrated from Paket and FAKE CLI to FAKE build project * Added `Path` to `ResolveFieldContext` -* Added ability to deprecate fields defined with any combination of parameters (more overloads to `Define` static class) -* Fixed nullable enum input handling -* Fixed coercing enum type variables as F# # discriminated unions +* Added ability to deprecate fields defined with any combination of parameters (more overloads to the `Define` static class) * Added support of `Option` variable values for nullable input types * Added mapping of input query/AST lists to .NET array type in addition to F# list -* Implemented input object validation with detailed error messages +* Added input object validation with detailed error messages * Added `Define.WrappedScalar` for value object scalar definitions -* Implemented coercion of nested input objects +* Added coercion of nested input objects * Added support for `ValueOption` in `AutoField` * Improved WebSocket handling to eliminate large array allocations +* Fixed nullable enum input handling +* Fixed coercing enum type variables as F# discriminated unions * Fixed various introspection and default value encoding issues ### 2.1.0 - 2024-04-13 @@ -197,14 +197,17 @@ * Fixed `JsonSerializerOptions` read-only instance error ### 3.0.0 - 2025-11-30 -* **Breaking Change** Migrated to .NET 8 and F# 9.0 with FSharp.Core 9.0.x +* **Breaking Change** Migrated to .NET 8 and F# 9.0 with `FSharp.Core` 9.0.x * **Breaking Change** Updated scalar `CoerceOutput` signature to `objnull -> 'Primitive option` * **Breaking Change** Moved GraphQL error extensions to standard `extensions` field according to specification * **Breaking Change** Renamed `ObjectListFilter` type definition to `ObjectListFilterType` * **Breaking Change** Removed `ObjectListFilter.NoFilter` case * **Breaking Change** Reworked Relay types to enable async fetching and switched to `ValueOption` +* **Breaking Change** `Giraffe` web framework integration moved to separate package +* **New Package** `FSharp.Data.GraphQL.Server.Giraffe` for Giraffe web framework integration +* **New Package** `FSharp.Data.GraphQL.Server.Oxpecker` for Oxpecker web framework integration * Removed unused Suave NuGet package -* Added Oxpecker web framework support +* Added `Oxpecker` web framework support * Added per-field authorization sample using ASP.NET authorization policies * Added file upload support via GraphQL Multipart Request Spec with `FileData` type * Added `OfTypes` filter case for `ObjectListFilter` to filter union cases by type