Skip to content

Conversation

@gimlichael
Copy link
Member

@gimlichael gimlichael commented Jan 22, 2026

This pull request delivers a service update focused on refreshing dependencies, updating CI infrastructure, and making minor documentation and metadata improvements. The primary goal is to ensure compatibility with the latest frameworks and tools, as well as to improve maintainability and clarity across the project.

Dependency and Compatibility Updates

  • Upgraded all major package dependencies to their latest compatible versions for supported target frameworks in Directory.Packages.props and documented this in the release notes and changelog. [1] [2] [3]
  • Updated the Docker test runner image in testenvironments.json for improved .NET compatibility.
  • Bumped the NGINX base image version in .docfx/Dockerfile.docfx for security and stability.

CI/CD and Build Process Improvements

  • Renamed and updated the main workflow file to ci-pipeline.yml, expanded test matrix to include new OS versions/architectures, and re-enabled the CodeQL security analysis step. Deployment now depends on CodeQL as well. [1] [2] [3]
  • Added support for reading package release notes from a file via Directory.Build.props and Directory.Build.targets, improving maintainability of NuGet metadata. [1] [2]

Project Structure and Metadata

  • Switched solution format from .sln to .slnx for a more modern and simplified project structure. [1] [2]
  • Updated copyright years and footer texts to reflect 2026. [1] [2]

Documentation and Guidelines

  • Added a comprehensive performance benchmarking prompt for Copilot, detailing conventions for BenchmarkDotNet usage.
  • Updated or removed availability statements in documentation and release notes for accuracy. [1] [2]

These changes collectively ensure the project remains up-to-date, secure, and easier to maintain, while also improving developer guidance and CI reliability.

Summary by CodeRabbit

  • New Features

    • Released version 10.0.1 as a service update with upgraded package dependencies across all supported frameworks.
  • Chores

    • Updated build infrastructure and CI/CD pipeline configuration.
    • Updated Docker test environment images.
    • Updated copyright and license year to 2026.

✏️ Tip: You can customize this high-level summary in your review settings.

@gimlichael gimlichael self-assigned this Jan 22, 2026
Copilot AI review requested due to automatic review settings January 22, 2026 18:29
@coderabbitai
Copy link

coderabbitai bot commented Jan 22, 2026

📝 Walkthrough

Walkthrough

This pull request performs a comprehensive maintenance update including Docker image bumps, copyright year transitions to 2026, NuGet dependency upgrades, CI/CD pipeline restructuring with expanded OS matrix and CodeQL enablement, solution file modernization from .sln to .slnx, version 10.0.1 release documentation, and build property reorganization.

Changes

Cohort / File(s) Summary
Docker & Infrastructure
.docfx/Dockerfile.docfx, testenvironments.json
Updated nginx base image from 1.29.3-alpine to 1.29.4-alpine; updated Docker-Ubuntu test runner image to net8.0.417-9.0.309-10.0.102
Documentation & Copyright
.docfx/docfx.json, LICENSE, .docfx/includes/availability-default.md
Updated copyright year range from 2024-2025 to 2024-2026 in docfx footer and LICENSE; removed availability documentation line
Release & Package Management
.nuget/Codebelt.Unitify/PackageReleaseNotes.txt, CHANGELOG.md
Added version 10.0.1 release entry dated 2026-01-22 noting dependency upgrades as service update
Dependency Versions
Directory.Packages.props
Updated 5 NuGet packages: Codebelt.Extensions.Xunit.App (11.0.0→11.0.4), Cuemon.Core (10.0.0→10.1.2), MinVer (6.0.0→7.0.0), xunit.v3 (3.1.0→3.2.2), xunit.v3.runner.console (3.2.0→3.2.2)
Build Configuration
Directory.Build.props, Directory.Build.targets
Moved PackageReleaseNotesFile property from Directory.Build.targets to Directory.Build.props
Solution Files
Codebelt.Unitify.sln, Codebelt.Unitify.slnx
Removed legacy .sln file; added new .slnx solution file referencing src/ and test/ projects
CI/CD Pipeline
.github/workflows/ci-pipeline.yml
Renamed workflow to "Unitify CI Pipeline", removed paths-ignore rules, expanded OS matrix to include ubuntu-24.04, windows-2025, ubuntu-24.04-arm, windows-11-arm, enabled CodeQL job with proper dependencies
Development Guidance
.github/copilot-instructions.md, .github/prompts/benchmark.prompt.md
Added comprehensive documentation for new Hash/Hash\<TOptions\> cryptographic hashing framework; added BenchmarkDotNet benchmark fixture guide with conventions, attributes, and examples

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~22 minutes

Possibly related PRs

  • PR #14: Updates .docfx/Dockerfile.docfx to bump NGINX base image version with same direct code modification
  • PR #13: Modifies Directory.Packages.props, PackageReleaseNotes.txt, CHANGELOG.md, and testenvironments.json for similar service update and dependency management
  • PR #6: Updates .docfx/Dockerfile.docfx and .docfx/docfx.json with overlapping infrastructure and documentation changes

Poem

🐰 A hop through the deps, a spring through the years,
NGINX hops up, as copyright cheers,
New benchmarks dance, hashing takes flight,
Version 10.0.1 shines bright!
From .sln to .slnx we bound 🚀

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'V10.0.1/service update' directly corresponds to the PR's main objective of performing a service update for version 10.0.1 focused on dependency refresh and infrastructure updates.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request delivers a service update for version 10.0.1, focusing on dependency upgrades, CI/CD improvements, and project modernization. The changes ensure compatibility with the latest .NET frameworks and tooling while improving maintainability.

Changes:

  • Updated package dependencies to latest compatible versions (xunit.v3, MinVer, Cuemon.Core, Codebelt.Extensions.Xunit.App)
  • Migrated solution format from .sln to .slnx for modern Visual Studio support
  • Enhanced CI pipeline with CodeQL security analysis and expanded test matrix (with runner compatibility issues)
  • Added comprehensive developer guidance through new Copilot instructions and benchmark prompts

Reviewed changes

Copilot reviewed 15 out of 15 changed files in this pull request and generated no comments.

Show a summary per file
File Description
Directory.Packages.props Updated package versions for xunit.v3 (3.1.0→3.2.2), MinVer (6.0.0→7.0.0), Cuemon.Core (10.0.0→10.1.2), and Codebelt.Extensions.Xunit.App (11.0.0→11.0.4)
testenvironments.json Updated Docker test runner image to net8.0.417-9.0.309-10.0.102
Directory.Build.props Added PackageReleaseNotesFile property and updated copyright year to 2026
Directory.Build.targets Removed PackageReleaseNotesFile property definition (moved to props file)
Codebelt.Unitify.slnx Added new modern solution format file
Codebelt.Unitify.sln Removed legacy solution file
.github/workflows/ci-pipeline.yml Renamed workflow, expanded test matrix with new OS/architectures, re-enabled CodeQL, and added CodeQL dependency to deployment
.github/prompts/benchmark.prompt.md Added comprehensive benchmarking guidelines for BenchmarkDotNet usage
.github/copilot-instructions.md Added extensive developer guidance for unit tests, performance tests, and XML documentation
CHANGELOG.md Added version 10.0.1 entry dated 2026-01-22
.nuget/Codebelt.Unitify/PackageReleaseNotes.txt Added release notes for version 10.0.1 documenting dependency upgrades
.docfx/includes/availability-default.md Removed availability statement file
.docfx/docfx.json Updated footer copyright to 2024-2026
.docfx/Dockerfile.docfx Updated NGINX base image from 1.29.3-alpine to 1.29.4-alpine
Comments suppressed due to low confidence (1)

.github/workflows/ci-pipeline.yml:48

  • The test matrix includes runner labels that may not exist in GitHub Actions. As of early 2025, GitHub Actions hosted runners do not include 'windows-2025', 'ubuntu-24.04-arm', or 'windows-11-arm'. The available hosted runners include 'ubuntu-24.04', 'windows-2022', 'windows-2019', 'macos-latest', etc. These non-existent runner labels will cause the workflow to fail when it attempts to find matching runners.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@github-advanced-security
Copy link

This pull request sets up GitHub code scanning for this repository. Once the scans have completed and the checks have passed, the analysis results for this pull request branch will appear on this overview. Once you merge this pull request, the 'Security' tab will show more code scanning analysis results (for example, for the default branch). Depending on your configuration and choice of analysis tool, future pull requests will be annotated with code scanning analysis results. For more information about GitHub code scanning, check out the documentation.

@sonarqubecloud
Copy link

@codecov
Copy link

codecov bot commented Jan 22, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 83.33%. Comparing base (fd87a72) to head (73d703b).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main      #15   +/-   ##
=======================================
  Coverage   83.33%   83.33%           
=======================================
  Files          19       19           
  Lines         666      666           
  Branches       51       51           
=======================================
  Hits          555      555           
  Misses        110      110           
  Partials        1        1           

☔ View full report in Codecov by Sentry.
📢 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.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In @.github/workflows/ci-pipeline.yml:
- Line 1: The file contains CRLF line endings (visible at the "name: Unitify CI
Pipeline" line) which must be converted to Unix-style LF endings; open the
.github/workflows/ci-pipeline.yml and change its line endings to LF (ensure your
editor or git core.autocrlf/ .gitattributes enforces LF), save the file with LF
endings and commit the change so YAMLlint and cross-platform tools accept the
workflow.
🧹 Nitpick comments (6)
.github/copilot-instructions.md (5)

184-184: Use consistent ATX-style headings.

The headings at lines 184 and 278 use setext style (underlined with ---), while other headings in the document use ATX style (#). For consistency, convert these to ATX-style headings.

♻️ Proposed fix
-Writing Performance Tests
-description: 'Writing Performance Tests'
+---
+description: 'Writing Performance Tests'
-Writing XML documentation
-description: 'Writing XML documentation'
+---
+description: 'Writing XML documentation'

Also applies to: 278-278


59-59: Simplify wording.

"exact same namespace" can be shortened to "same namespace" for conciseness.

♻️ Proposed fix
-        then the corresponding unit test class must use the exact same namespace:
+        then the corresponding unit test class must use the same namespace:

71-74: Fix list indentation for consistency.

These list items have inconsistent indentation (1 space) compared to the parent list structure. Remove the leading space to align with the list at line 50.

♻️ Proposed fix
- - The unit tests for the YourProject.Foo assembly live in the YourProject.Foo.Tests assembly.
- - The functional tests for the YourProject.Foo assembly live in the YourProject.Foo.FunctionalTests assembly.
- - Test class names end with Test and live in the same namespace as the class being tested, e.g., the unit tests for the Boo class that resides in the YourProject.Foo assembly would be named BooTest and placed in the YourProject.Foo namespace in the YourProject.Foo.Tests assembly.
- - Modify the associated .csproj file to override the root namespace so the compiled namespace matches the SUT. Example:
+- The unit tests for the YourProject.Foo assembly live in the YourProject.Foo.Tests assembly.
+- The functional tests for the YourProject.Foo assembly live in the YourProject.Foo.FunctionalTests assembly.
+- Test class names end with Test and live in the same namespace as the class being tested, e.g., the unit tests for the Boo class that resides in the YourProject.Foo assembly would be named BooTest and placed in the YourProject.Foo namespace in the YourProject.Foo.Tests assembly.
+- Modify the associated .csproj file to override the root namespace so the compiled namespace matches the SUT. Example:

197-203: Add language specification to code fence.

The fenced code block is missing a language identifier, which prevents proper syntax highlighting.

♻️ Proposed fix
-  ```
+  ```csharp
   namespace YourProject.Security.Cryptography
   {
       public class Sha512256Benchmark { /* ... */ }
   }

</details>

---

`211-215`: **Adjust nested list indentation.**

The nested list items use 4-space indentation instead of the standard 2-space indentation expected by markdown linters.



<details>
<summary>♻️ Proposed fix</summary>

```diff
 - Use `BenchmarkDotNet` attributes to express intent and collect relevant metrics:
-    - `[MemoryDiagnoser]` to capture memory allocations.
-    - `[GroupBenchmarksBy(BenchmarkLogicalGroupRule.ByCategory)]` to group related benchmarks.
-    - `[Params]` for input sizes or variations to exercise multiple scenarios.
-    - `[GlobalSetup]` for one-time initialization that's not part of measured work.
-    - `[Benchmark]` on methods representing measured operations; consider `Baseline = true` and `Description` to improve report clarity.
+  - `[MemoryDiagnoser]` to capture memory allocations.
+  - `[GroupBenchmarksBy(BenchmarkLogicalGroupRule.ByCategory)]` to group related benchmarks.
+  - `[Params]` for input sizes or variations to exercise multiple scenarios.
+  - `[GlobalSetup]` for one-time initialization that's not part of measured work.
+  - `[Benchmark]` on methods representing measured operations; consider `Baseline = true` and `Description` to improve report clarity.
.github/prompts/benchmark.prompt.md (1)

49-66: Consider documenting [BenchmarkCategory] for grouping.

Since [GroupBenchmarksBy(BenchmarkLogicalGroupRule.ByCategory)] is recommended, consider mentioning the [BenchmarkCategory("...")] attribute, which is used to assign benchmarks to logical categories for grouping in the output report.

📝 Suggested addition to attributes section
 * `[Params(...)]` — define small, medium, large input sizes.
 * `[GlobalSetup]` — deterministic initialization of benchmark data.
 * `[Benchmark(Description = "...")]` — always add descriptions.
 * `[Benchmark(Baseline = true)]` — when comparing two implementations.
+* `[BenchmarkCategory("...")]` — group related benchmarks by category when using `GroupBenchmarksBy`.

@@ -1,12 +1,7 @@
name: Unitify CI/CD Pipeline
name: Unitify CI Pipeline
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Fix line ending characters.

Static analysis indicates the file uses CRLF line endings instead of LF. For cross-platform consistency and to satisfy YAMLlint, convert line endings to Unix-style (LF).

🧰 Tools
🪛 YAMLlint (1.38.0)

[error] 1-1: wrong new line character: expected \n

(new-lines)

🤖 Prompt for AI Agents
In @.github/workflows/ci-pipeline.yml at line 1, The file contains CRLF line
endings (visible at the "name: Unitify CI Pipeline" line) which must be
converted to Unix-style LF endings; open the .github/workflows/ci-pipeline.yml
and change its line endings to LF (ensure your editor or git core.autocrlf/
.gitattributes enforces LF), save the file with LF endings and commit the change
so YAMLlint and cross-platform tools accept the workflow.

@gimlichael gimlichael merged commit 483a279 into main Jan 22, 2026
21 checks passed
@gimlichael gimlichael deleted the v10.0.1/service-update branch January 22, 2026 18:49
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