Skip to content

V11.0.0/double digits - #179

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

gimlichael wants to merge 91 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 5 commits October 15, 2026 19:09
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 changes reviewed since the last review appear safe to merge, with no new blocking issue found.

Summary

This PR adds .NET 11 targets and completes the split between Cuemon.Core and Cuemon.Kernel.

  • Cuemon projects now target .NET 11 alongside the retained frameworks.
  • Foundational types now live directly in the Kernel assembly.
  • Verification workflows now install preview SDKs and run the .NET 11 checks.
  • Release notes and docs now explain version 11 and the framework changes.
  • Small compatibility and configuration edits leave other behavior unchanged.

Diagram

%%{init: {'theme': 'neutral'}}%%
flowchart LR
  Consumer[Consumer code] --> Kernel[Cuemon.Kernel]
  Consumer --> Core[Cuemon.Core]
  Core --> Kernel
  Kernel --- Types[Date, range, text, and shared types]
Loading

Reviews (6) · Last reviewed commit: "🎨 remove duplicate and unused using dir..." · 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 (0b286a6) to head (9d5e719).

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #179      +/-   ##
==========================================
+ Coverage   93.77%   93.99%   +0.22%     
==========================================
  Files         608      608              
  Lines       19273    19265       -8     
  Branches     1865     1866       +1     
==========================================
+ Hits        18073    18108      +35     
+ 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.

aicia-bot and others added 8 commits October 20, 2026 22:13
Aligns the Codebelt.Coverlet.MTP code coverage package with the latest 10.1.x patch release used by the test projects.
IDE0306 conflicts with the existing analyzer choices for collection initialization, so it is excluded consistently with the other disabled IDE rules.
Aligns the central package versions with the current net11 release candidate and the latest net10 servicing release.
These suppressions target code smells and analyzer rules that no longer apply to the current implementations, so they are removed to keep suppressions accurate.
The null check is replaced with a null-coalescing assignment, which expresses the same default-initializer behavior with less nesting.
The hash state buffers are never reassigned after construction, so they are marked readonly to make that intent explicit. The file also drops a leading byte order mark.
SHA512256 keeps its standard name to match the SHA naming convention used by System.Security.Cryptography, so the PascalCase naming rule is suppressed for that type only.
gimlichael and others added 5 commits October 26, 2026 16:26
Adds SonarAnalyzer.CSharp to source projects with the rule settings and global suppressions that match existing code conventions, and moves the test warning level setting into the shared test property group.
Appending to the inherited NoWarn property instead of replacing it keeps repository-wide suppressions active for the app packages.
The file was saved with a UTF-8 byte order mark, which is inconsistent with the rest of the source tree.
…test

The file imported Microsoft.Data.SqlClient twice and System.Data without using it.
@sonarqubecloud

Copy link
Copy Markdown

This branch was successfully deployed

1 active (outdated) deployment
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