(chore): release 1.2.0

This commit is contained in:
Maksym Sadovnychyy 2026-07-02 18:15:43 +02:00
parent 94aca92d5d
commit 755f7b2341
6 changed files with 37 additions and 16 deletions

View File

@ -5,6 +5,27 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [1.2.0] - 2026-07-02
### Added
- **Native AOT and trimming compatibility** via `System.Text.Json` source generation (`PodmanJsonContext` with `[JsonSerializable]` for all library DTOs and request models).
- `<IsAotCompatible>true</IsAotCompatible>` on the package project to surface trim/AOT Roslyn analyzers at build time.
### Changed
- Internal JSON serialization/deserialization now uses explicit `JsonTypeInfo<T>` (`JsonSerializer.Serialize` / `Deserialize`) instead of reflection-based `MaksIT.Core.Extensions` `ToJson()` / `ToObject<T>()`.
- HTTP helpers (`GetJsonAsync`, `PostJsonAsync`, `PostJsonWithoutBodyAsync`, `PostLibpodAsync`, `DeleteJsonAsync`) and `PodmanProgressSession<T>` updated to thread source-generated type metadata through all call sites.
- `PodmanJsonContext` uses `PropertyNameCaseInsensitive = true` so Podman lowercase JSON keys map to PascalCase DTO properties.
### Removed
- **MaksIT.Core** package reference (JSON helpers were its only use in this library); consumers no longer pull **MaksIT.Core** transitively from **PodmanClient.DotNet**.
### Thanks
- [@bbartels](https://github.com/bbartels) (Benjamin Bartels) for the Native AOT / trim compatibility contribution ([#1](https://github.com/MAKS-IT-COM/podman-client-dotnet/pull/1)).
## [1.1.1] - 2026-06-28 ## [1.1.1] - 2026-06-28
### Changed ### Changed

View File

@ -46,7 +46,7 @@ Types: `(feature):`, `(bugfix):`, `(refactor):`, `(perf):`, `(test):`, `(docs):`
- **.NET 10**, nullable reference types, implicit usings. - **.NET 10**, nullable reference types, implicit usings.
- **Root namespace**: `MaksIT.$(MSBuildProjectName)` in `PodmanClientDotNet.csproj`; omit `namespace` when it matches the root (client partials, abstractions). - **Root namespace**: `MaksIT.$(MSBuildProjectName)` in `PodmanClientDotNet.csproj`; omit `namespace` when it matches the root (client partials, abstractions).
- **MaksIT.Results** for API outcomes; **MaksIT.Core.Extensions** for JSON (`ToJson` / `ToObject<T>`). - **MaksIT.Results** for API outcomes; **System.Text.Json** source generation via `PodmanJsonContext` for JSON serialization (AOT/trim-safe).
- File-scoped namespaces and same-line braces; **Models/** use nullable reference types (`string?`, `List<T>?`, …) for optional JSON fields. - File-scoped namespaces and same-line braces; **Models/** use nullable reference types (`string?`, `List<T>?`, …) for optional JSON fields.
- XML documentation on public types (DTOs, interfaces, entry types). Method-level docs on large interfaces are optional (`CS1591` suppressed). - XML documentation on public types (DTOs, interfaces, entry types). Method-level docs on large interfaces are optional (`CS1591` suppressed).
- Model layout helpers: `utils/tools/Polish-PodmanClientSources.ps1`, `utils/tools/Enable-ModelsNullable.ps1`. - Model layout helpers: `utils/tools/Polish-PodmanClientSources.ps1`, `utils/tools/Enable-ModelsNullable.ps1`.

View File

@ -1,5 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="150" height="20" role="img" aria-label="Branch Coverage: 20.9%"> <svg xmlns="http://www.w3.org/2000/svg" width="150" height="20" role="img" aria-label="Branch Coverage: 14.2%">
<title>Branch Coverage: 20.9%</title> <title>Branch Coverage: 14.2%</title>
<linearGradient id="s" x2="0" y2="100%"> <linearGradient id="s" x2="0" y2="100%">
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/> <stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
<stop offset="1" stop-opacity=".1"/> <stop offset="1" stop-opacity=".1"/>
@ -9,13 +9,13 @@
</clipPath> </clipPath>
<g clip-path="url(#r)"> <g clip-path="url(#r)">
<rect width="107.5" height="20" fill="#555"/> <rect width="107.5" height="20" fill="#555"/>
<rect x="107.5" width="42.5" height="20" fill="#dfb317"/> <rect x="107.5" width="42.5" height="20" fill="#fe7d37"/>
<rect width="150" height="20" fill="url(#s)"/> <rect width="150" height="20" fill="url(#s)"/>
</g> </g>
<g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="11"> <g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="11">
<text aria-hidden="true" x="53.75" y="15" fill="#010101" fill-opacity=".3">Branch Coverage</text> <text aria-hidden="true" x="53.75" y="15" fill="#010101" fill-opacity=".3">Branch Coverage</text>
<text x="53.75" y="14" fill="#fff">Branch Coverage</text> <text x="53.75" y="14" fill="#fff">Branch Coverage</text>
<text aria-hidden="true" x="128.75" y="15" fill="#010101" fill-opacity=".3">20.9%</text> <text aria-hidden="true" x="128.75" y="15" fill="#010101" fill-opacity=".3">14.2%</text>
<text x="128.75" y="14" fill="#fff">20.9%</text> <text x="128.75" y="14" fill="#fff">14.2%</text>
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -1,5 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="134.5" height="20" role="img" aria-label="Line Coverage: 10%"> <svg xmlns="http://www.w3.org/2000/svg" width="134.5" height="20" role="img" aria-label="Line Coverage: 5%">
<title>Line Coverage: 10%</title> <title>Line Coverage: 5%</title>
<linearGradient id="s" x2="0" y2="100%"> <linearGradient id="s" x2="0" y2="100%">
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/> <stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
<stop offset="1" stop-opacity=".1"/> <stop offset="1" stop-opacity=".1"/>
@ -9,13 +9,13 @@
</clipPath> </clipPath>
<g clip-path="url(#r)"> <g clip-path="url(#r)">
<rect width="94.5" height="20" fill="#555"/> <rect width="94.5" height="20" fill="#555"/>
<rect x="94.5" width="40" height="20" fill="#fe7d37"/> <rect x="94.5" width="40" height="20" fill="#e05d44"/>
<rect width="134.5" height="20" fill="url(#s)"/> <rect width="134.5" height="20" fill="url(#s)"/>
</g> </g>
<g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="11"> <g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="11">
<text aria-hidden="true" x="47.25" y="15" fill="#010101" fill-opacity=".3">Line Coverage</text> <text aria-hidden="true" x="47.25" y="15" fill="#010101" fill-opacity=".3">Line Coverage</text>
<text x="47.25" y="14" fill="#fff">Line Coverage</text> <text x="47.25" y="14" fill="#fff">Line Coverage</text>
<text aria-hidden="true" x="114.5" y="15" fill="#010101" fill-opacity=".3">10%</text> <text aria-hidden="true" x="114.5" y="15" fill="#010101" fill-opacity=".3">5%</text>
<text x="114.5" y="14" fill="#fff">10%</text> <text x="114.5" y="14" fill="#fff">5%</text>
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -1,5 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="147.5" height="20" role="img" aria-label="Method Coverage: 3.9%"> <svg xmlns="http://www.w3.org/2000/svg" width="147.5" height="20" role="img" aria-label="Method Coverage: 3.4%">
<title>Method Coverage: 3.9%</title> <title>Method Coverage: 3.4%</title>
<linearGradient id="s" x2="0" y2="100%"> <linearGradient id="s" x2="0" y2="100%">
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/> <stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
<stop offset="1" stop-opacity=".1"/> <stop offset="1" stop-opacity=".1"/>
@ -15,7 +15,7 @@
<g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="11"> <g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="11">
<text aria-hidden="true" x="53.75" y="15" fill="#010101" fill-opacity=".3">Method Coverage</text> <text aria-hidden="true" x="53.75" y="15" fill="#010101" fill-opacity=".3">Method Coverage</text>
<text x="53.75" y="14" fill="#fff">Method Coverage</text> <text x="53.75" y="14" fill="#fff">Method Coverage</text>
<text aria-hidden="true" x="127.5" y="15" fill="#010101" fill-opacity=".3">3.9%</text> <text aria-hidden="true" x="127.5" y="15" fill="#010101" fill-opacity=".3">3.4%</text>
<text x="127.5" y="14" fill="#fff">3.9%</text> <text x="127.5" y="14" fill="#fff">3.4%</text>
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -12,7 +12,7 @@
<!-- NuGet package metadata --> <!-- NuGet package metadata -->
<PackageId>PodmanClient.DotNet</PackageId> <PackageId>PodmanClient.DotNet</PackageId>
<Version>1.1.1</Version> <Version>1.2.0</Version>
<Authors>Maksym Sadovnychyy</Authors> <Authors>Maksym Sadovnychyy</Authors>
<Company>MAKS-IT</Company> <Company>MAKS-IT</Company>
<Product>PodmanClient.DotNet</Product> <Product>PodmanClient.DotNet</Product>