From 4d61b210fa42579e1201e96da67e7540f182b670 Mon Sep 17 00:00:00 2001 From: mxtordev <64542491+mxtordev@users.noreply.github.com> Date: Sun, 5 Jul 2026 22:36:35 +0200 Subject: [PATCH 1/5] Prepare 0.2.0 release --- CHANGELOG.md | 23 +++++++++++++++++++++++ src/MergePatchDto/MergePatchDto.csproj | 2 +- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 00282ea..81a599a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,28 @@ # Changelog +## 0.2.0 - Unreleased + +Breaking changes: + +- Removed `[MergePatchTarget]`. Pass the target type directly to `[MergePatch(typeof(Target))]` instead. +- Tightened generated `ApplyTo` validation so unsafe nullable-to-non-nullable assignments fail at build time. + +Added: + +- Support for inherited patch DTO properties. +- Build-time diagnostics for more unsupported patch shapes and mappings, including generic, nested, abstract, record, required-member, constructor, duplicate-name, inaccessible-target, and open-generic-target cases. +- Duplicate JSON property name diagnostics for explicit and naming-policy-derived names. + +Fixed: + +- Strict unknown-property handling now rejects unknown JSON members while reading the generated converter. +- Property-level JSON converter detection now supports attributes derived from `JsonConverterAttribute`. +- Release packaging now includes the analyzer and symbols in the expected NuGet package locations. + +Changed: + +- README and sample API docs now use the current `[MergePatch(typeof(Target))]` shape and `NoContent` PATCH responses. + ## 0.1.0 - Initial release MergePatchDto provides source-generated DTO presence tracking for merge-patch-style ASP.NET Core endpoints. diff --git a/src/MergePatchDto/MergePatchDto.csproj b/src/MergePatchDto/MergePatchDto.csproj index 7b61e91..f9070bd 100644 --- a/src/MergePatchDto/MergePatchDto.csproj +++ b/src/MergePatchDto/MergePatchDto.csproj @@ -5,7 +5,7 @@ disable true MergePatchDto - 0.1.0 + 0.2.0 Source-generated DTO presence tracking for merge-patch-style ASP.NET Core endpoints. mxtordev Copyright (c) 2026 mxtordev From 50f296c4a9624fc9a937e75a6fd2b6cacdabdf2d Mon Sep 17 00:00:00 2001 From: mxtordev <64542491+mxtordev@users.noreply.github.com> Date: Sun, 5 Jul 2026 22:38:46 +0200 Subject: [PATCH 2/5] Date 0.2.0 changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 81a599a..b1b334a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## 0.2.0 - Unreleased +## 0.2.0 - 2026-07-05 Breaking changes: From 40f1d3f28ea45e4100c314ef66b0c765bf899c76 Mon Sep 17 00:00:00 2001 From: mxtordev <64542491+mxtordev@users.noreply.github.com> Date: Sun, 5 Jul 2026 22:40:07 +0200 Subject: [PATCH 3/5] Use version-only changelog heading --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b1b334a..fadae48 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## 0.2.0 - 2026-07-05 +## 0.2.0 Breaking changes: From a68f6e151b2057b3f7f754fec157c544428925dd Mon Sep 17 00:00:00 2001 From: mxtordev <64542491+mxtordev@users.noreply.github.com> Date: Sun, 5 Jul 2026 22:49:24 +0200 Subject: [PATCH 4/5] Align 0.2.0 changelog with diff --- CHANGELOG.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fadae48..56cd5c1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,20 +4,21 @@ Breaking changes: -- Removed `[MergePatchTarget]`. Pass the target type directly to `[MergePatch(typeof(Target))]` instead. -- Tightened generated `ApplyTo` validation so unsafe nullable-to-non-nullable assignments fail at build time. +- Removed `[MergePatchTarget]`. Use `[MergePatch(typeof(Target))]` for the generated `ApplyTo` target; additional generated target overloads are no longer supported. +- Generated converters now reject explicit JSON `null` for non-nullable reference patch properties. +- Generated `ApplyTo` and `[PatchUsing]` validation now fail at build time when nullable patch values could flow into non-nullable target members or parameters. Added: -- Support for inherited patch DTO properties. -- Build-time diagnostics for more unsupported patch shapes and mappings, including generic, nested, abstract, record, required-member, constructor, duplicate-name, inaccessible-target, and open-generic-target cases. -- Duplicate JSON property name diagnostics for explicit and naming-policy-derived names. +- Support for inherited patch DTO properties, including inherited JSON and mapping attributes. +- Build-time diagnostics for record patch DTOs, open generic target types, less-accessible target types, duplicate inherited CLR property names, and duplicate explicit JSON property names. +- Runtime JSON-name collision validation for naming-policy-derived and case-insensitive duplicate names. Fixed: -- Strict unknown-property handling now rejects unknown JSON members while reading the generated converter. -- Property-level JSON converter detection now supports attributes derived from `JsonConverterAttribute`. -- Release packaging now includes the analyzer and symbols in the expected NuGet package locations. +- Strict unknown-property handling no longer needs to read an unknown property's value before rejecting it. +- Property-level JSON converter handling now supports custom `JsonConverterAttribute` subclasses and factory-style converter attributes. +- Release packaging no longer treats the generator project as a separate package and enables CI deterministic/source-link builds. Changed: From 0f077a44fae11f8b0e0434213517a96372129d91 Mon Sep 17 00:00:00 2001 From: mxtordev <64542491+mxtordev@users.noreply.github.com> Date: Sun, 5 Jul 2026 22:52:03 +0200 Subject: [PATCH 5/5] Shorten 0.2.0 changelog --- CHANGELOG.md | 24 +++++++----------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 56cd5c1..b0d7884 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,25 +4,15 @@ Breaking changes: -- Removed `[MergePatchTarget]`. Use `[MergePatch(typeof(Target))]` for the generated `ApplyTo` target; additional generated target overloads are no longer supported. -- Generated converters now reject explicit JSON `null` for non-nullable reference patch properties. -- Generated `ApplyTo` and `[PatchUsing]` validation now fail at build time when nullable patch values could flow into non-nullable target members or parameters. +- Removed `[MergePatchTarget]`; use `[MergePatch(typeof(Target))]` for generated `ApplyTo`. Additional generated target overloads are no longer supported. +- Non-nullable reference patch properties now reject explicit JSON `null`. +- Nullable patch values now fail build-time validation when they would flow into non-nullable `ApplyTo` targets or `[PatchUsing]` parameters. -Added: +Changes: -- Support for inherited patch DTO properties, including inherited JSON and mapping attributes. -- Build-time diagnostics for record patch DTOs, open generic target types, less-accessible target types, duplicate inherited CLR property names, and duplicate explicit JSON property names. -- Runtime JSON-name collision validation for naming-policy-derived and case-insensitive duplicate names. - -Fixed: - -- Strict unknown-property handling no longer needs to read an unknown property's value before rejecting it. -- Property-level JSON converter handling now supports custom `JsonConverterAttribute` subclasses and factory-style converter attributes. -- Release packaging no longer treats the generator project as a separate package and enables CI deterministic/source-link builds. - -Changed: - -- README and sample API docs now use the current `[MergePatch(typeof(Target))]` shape and `NoContent` PATCH responses. +- Inherited patch DTO properties now participate in presence tracking, JSON metadata, and generated `ApplyTo`. +- Added clearer diagnostics for unsupported patch shapes, inaccessible targets, duplicate names, and ambiguous mappings. +- Fixed strict unknown-property rejection, property-level `JsonConverterAttribute` handling, and release packaging metadata. ## 0.1.0 - Initial release