Skip to content

V11.0.0/double digits - #179

Open
gimlichael wants to merge 79 commits into
mainfrom
v11.0.0/double-digits
Open

gimlichael wants to merge 79 commits into
mainfrom
v11.0.0/double-digits

Conversation

@gimlichael

Copy link
Copy Markdown
Member

This pull request introduces .NET 11 support and completes the assembly boundary between Cuemon.Core and Cuemon.Kernel. It removes the Core compatibility forwarding layer, relocates remaining date, range, and delimited text primitives into Kernel, and adapts dependencies, CI, tests, and release guidance to the new target matrix.

Framework support:

  • Replace .NET 9 with .NET 11 across source, test, and benchmark targets, retaining .NET 10, existing .NET Standard targets, and Windows .NET Framework test coverage where applicable.
  • Align conditional compilation with the .NET 10 baseline and adopt .NET 11 RC2 dependencies for .NET 11 and .NET Standard builds, while retaining the .NET 10 dependency line and SQLite compatibility pin for .NET Framework.

Kernel assembly boundary:

  • Remove Core's foundational type forwarding, making the Kernel assembly boundary a breaking compatibility change for consumers of the forwarded APIs.
  • Move date, range, and delimited text primitives into Kernel without changing their namespaces; expose an optional custom duration resolver on TimeRange and remove DateSpan's dependency on Core's hash implementation.
  • Group Core and Kernel together in the solution to reflect their shared foundational role.

CI compatibility:

  • Enable preview SDK installation throughout verification and use absolute test project paths as a temporary workaround for .NET 11 SDK path handling.
  • Retain test failure diagnostics and coverage artifacts in the local test workflow, and explicitly exclude CodeQL from verification and service assurance until .NET 11 is supported.

Regression coverage:

  • Expand Kernel coverage for DateSpan calendars, boundary normalization, parsing, and equality, plus range duration, formatting, and comparison behavior; relocate date and delimited text tests and remove duplicate Core threading tests.
  • Update framework and assembly expectations, account for Linux reflection differences on .NET 11, isolate SQLite test databases, and adjust decimal comparisons and retry timing.
  • Builds and tests were not run during PR preparation.

Documentation and release tooling:

  • Add version 11 package notes and migration guidance, update documented framework availability and contributor target matrices, and trim selected legacy package histories.
  • Provide a release note conflict resolver that preserves both sides of conflicted notes and stages the resolved files, alongside a minor documentation container encoding cleanup.

gimlichael and others added 30 commits March 14, 2026 04:03
Explain that the Docker test environment now covers net8 through net11 in a single runner image. This makes the shared multi-image strategy explicit in the environment definition instead of implying separate per-framework images.
Account for the reduced public method surface on net11, where GetHelpContext is no longer present. This keeps the test aligned with the platform-specific reflection result instead of treating the framework change as a regression in the library.
The NET11_0_OR_GREATER guard previously adjusted the expected method count
for all platforms, but GetHelpContext was only removed on Linux. Wrapping
the adjustment in an OperatingSystem.IsLinux() check ensures the correct
expected count is applied on Linux while leaving other platforms unaffected.
Updated all 43 package release notes files to include version 11.0.0 entries
with dependency upgrade notes. Updated DocFX availability includes to add
.NET 11 support. Minor formatting improvements to nuget.prompt.md.
Added Configurable and IConfigurable to the breaking changes section for Cuemon.Core and to the moved types section for Cuemon.Kernel to reflect the architectural update in this release.
Expanded the v11.0.0 entry to document the relocation of Configurable and IConfigurable types to Cuemon.Kernel, simplified XmlConverterDecoratorExtensions, and comprehensive unit test coverage added for XML serialization converters. Updated compare-link footer.
Added Resolve-PackageReleaseNotesConflicts.ps1 to automate resolution of merge conflicts in all PackageReleaseNotes.txt files by keeping both sides (current branch first, then incoming) and staging the resolved files. Simplifies future merge workflows.
gimlichael and others added 18 commits August 12, 2026 20:40
Update Microsoft.Extensions.* and System.Text.Json to .NET 11 preview.7 for compatibility with the newer preview release. Pin Microsoft.Data.Sqlite to 10.0.11 for .NET 4.8 support, as preview.7 dropped net48 compatibility.
Remove Docker-Ubuntu (net9) test environment as .NET 9 is no longer a supported target. Update Docker image versions to align with available releases: net10 to 10.0.400 and net11 to 11.0.100-preview.7.
Relocate AsyncOptionsTest and AwaiterTest from Cuemon.Core.Tests to Cuemon.Kernel.Tests. Adjust retry timing thresholds to align with kernel-level testing expectations.
Round scalar decimal results to 2 decimal places to account for database precision variance. SQL Server may return decimal values with additional precision beyond 2 places depending on query optimization.
Remove HasChanged equality assertion from PortablePhysicalFileProviderTest helper. HasChanged is a live observation that may differ between independently created polling tokens, making the assertion flaky across test runs.
Update the CHANGELOG.md to reflect the release candidate 1 version label for the 11.0.0 release.
Update NuGet dependencies to rc.1 versions and patch .NET 10 packages to latest minor versions. This includes Microsoft.Extensions.* packages and System.Text.Json.
Temporary workaround for dotnet/sdk#56196. Copy the codebeltnet/jobs-dotnet-test default.yml workflow locally and update CI pipeline to use absolute project paths via GITHUB_WORKSPACE variable.
Align the .NET 10 and 11 package baselines with the rc.2 release and pick up the patched System.Security.Cryptography.Pkcs and SqlClient versions.
Record the 11.0.0-rc.2 release date and version in the changelog header.
Long-lived .NET branches need signed NuGet prereleases without a main-only release tag. The new prerelease flow verifies the tagged branch commit and publishes the same validated Release artifact, while release.yml ignores prerelease tags.
Maintainers need to know when to use the prerelease flow and which Production deployment rules it depends on, so the release section now separates prerelease and main release steps.
@gimlichael gimlichael self-assigned this Oct 19, 2026
@greptile-apps

greptile-apps Bot commented Oct 19, 2026 •

Copy link
Copy Markdown

RetriggerView in GreptileConfidence Score: 5/5

[High impact] The PR appears safe to merge; no actionable new issue was found.

Summary

Adds .NET 11 support and completes the split between Cuemon.Core and Cuemon.Kernel.

  • Foundational APIs now belong to Cuemon.Kernel.
  • Cuemon builds and verifies against .NET 11.
  • Version 11 release notes and tooling support the new Cuemon release.

Diagram

%%{init: {'theme': 'neutral'}}%%
flowchart LR
  Kernel["Cuemon.Kernel<br/>Foundational, date, range, and text types"]
  Core["Cuemon.Core<br/>Higher-level utilities"]
  Extensions["Cuemon.Extensions.*"]
  Core -->|references| Kernel
  Extensions -->|references| Core
Loading

Reviews (3) · Last reviewed commit: "⬆️ upgrade coverlet mtp to 10.1.1" · Reviewed by Greptile

Comment thread Directory.Packages.props Outdated
Comment thread tooling/Resolve-PackageReleaseNotesConflicts.ps1
Comment thread tooling/Resolve-PackageReleaseNotesConflicts.ps1
Comment thread CHANGELOG.md Outdated
Comment thread .nuget/Cuemon.IO/PackageReleaseNotes.txt Outdated
The namespace template rendered each public type as an h4 heading followed by a section, which made long namespace pages hard to scan. Wrapping each type in a definition list with its summary gives a compact jumplist layout.
Moves the Codebelt test and benchmark helper packages to their latest releases so the test and benchmark projects build against current tooling.
Limit the System.Security.Cryptography.Pkcs pin to net11 so net10 keeps the .NET 10 package line where it applies, while still pinning the fixed version for the vulnerability.
The resolver assumed plain two-way conflict markers, so diff3 and zdiff3 conflicts left the base section in the release notes. It now discards the base section and throws when staging a resolved file fails instead of continuing silently.
The Kernel split now moves DelimitedString, DelimitedStringOptions, and FormattingOptions into the Cuemon.Kernel assembly and removes Cuemon.Core type forwarding. The changelog needs to tell consumers they must reference Cuemon.Kernel directly.
Cuemon.IO now lists .NET 11 in its availability line, matching the net11.0 target added to the package. The release notes are package metadata, so they are kept separate from the changelog.
@codecov

codecov Bot commented Oct 19, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 93.99%. Comparing base (6160022) to head (07b7659).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #179      +/-   ##
==========================================
+ Coverage   93.77%   93.99%   +0.22%     
==========================================
  Files         608      608              
  Lines       19273    19268       -5     
  Branches     1865     1866       +1     
==========================================
+ Hits        18073    18111      +38     
+ Misses       1172     1129      -43     
  Partials       28       28              

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Aligns the Codebelt.Coverlet.MTP code coverage package with the latest 10.1.x patch release used by the test projects.
@sonarqubecloud

Copy link
Copy Markdown

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants