Skip to content

Conversation

@gimlichael
Copy link
Member

@gimlichael gimlichael commented Jun 13, 2025

This pull request introduces significant enhancements to the threading utilities in the Cuemon.Core library, including the addition of new classes and methods to streamline asynchronous operations. Key changes include the creation of the AsyncRunOptions class for configuring async operations, the implementation of the Awaiter static class for retrying async methods with timeout and delay options, and comprehensive unit tests to validate these new functionalities.

Enhancements to Asynchronous Operation Configuration:

  • New AsyncRunOptions class: Introduced to provide options for configuring timeout and delay settings for asynchronous operations. Defaults are set to 5 seconds for Timeout and 100 milliseconds for Delay. (src/Cuemon.Core/Threading/AsyncRunOptions.cs, src/Cuemon.Core/Threading/AsyncRunOptions.csR1-R49)

Improved Asynchronous Execution:

  • New Awaiter static class: Added the RunUntilSucceededOrTimeoutAsync method to repeatedly invoke an asynchronous method until it succeeds or a timeout is reached. Handles exceptions and returns a ConditionalValue indicating success or failure. (src/Cuemon.Core/Threading/Awaiter.cs, src/Cuemon.Core/Threading/Awaiter.csR1-R64)

Unit Testing Coverage:

  • Comprehensive tests for Awaiter: Added unit tests in AwaiterTest to validate the behavior of RunUntilSucceededOrTimeoutAsync. Tests cover scenarios such as immediate success, retries until success, timeout without exceptions, timeout with a single exception, and timeout with multiple exceptions aggregated into an AggregateException. (test/Cuemon.Core.Tests/Threading/AwaiterTest.cs, test/Cuemon.Core.Tests/Threading/AwaiterTest.csR1-R125)

Minor Refinements:

  • Updated AsyncOptions constructor: Changed the default value of CancellationToken from default to CancellationToken.None for better clarity and consistency. (src/Cuemon.Core/Threading/AsyncOptions.cs, src/Cuemon.Core/Threading/AsyncOptions.csL37-R37)

Summary by CodeRabbit

  • New Features
    • Introduced a utility for retrying asynchronous operations until success or timeout, with customizable timeout and delay settings.
    • Added a new options class to configure asynchronous run behavior, including timeout and retry delay.
  • Bug Fixes
    • Improved initialization of cancellation tokens for asynchronous options to ensure consistent behavior.
  • Tests
    • Added comprehensive tests covering various scenarios for the new asynchronous retry utility, including success, retries, timeouts, and exception handling.

@gimlichael gimlichael self-assigned this Jun 13, 2025
@coderabbitai
Copy link

coderabbitai bot commented Jun 13, 2025

Caution

Review failed

The pull request is closed.

## Walkthrough

The changes introduce a new asynchronous utility class `Awaiter` with a method to retry an async operation until success or timeout, along with a new configuration class `AsyncRunOptions`. The `AsyncOptions` constructor was updated to initialize its cancellation token. Comprehensive tests for the retry logic were also added.

## Changes

| File(s)                                          | Change Summary                                                                                      |
|-------------------------------------------------|---------------------------------------------------------------------------------------------------|
| src/Cuemon.Core/Threading/AsyncOptions.cs       | Modified `AsyncOptions` constructor to initialize `CancellationToken` with `CancellationToken.None`. |
| src/Cuemon.Core/Threading/AsyncRunOptions.cs    | Added new class `AsyncRunOptions` with `Timeout` and `Delay` properties and default values.       |
| src/Cuemon.Core/Threading/Awaiter.cs            | Added static class `Awaiter` with async retry method `RunUntilSuccessfulOrTimeoutAsync`.           |
| test/Cuemon.Core.Tests/Threading/AwaiterTest.cs | Added `AwaiterTest` class with multiple async tests covering success, retry, timeout, and exceptions.|

## Error: Could not generate a valid Mermaid diagram after multiple attempts.

> > Hop and skip, the async way,  
> > Retry till success or timeout's sway.  
> > Tokens set, delays in line,  
> > Exceptions caught, all combined fine.  
> > Rabbit runs the async race,  
> > With code that hops with grace! 🐇✨

📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 19375cf and a7543d7.

📒 Files selected for processing (3)
  • .github/workflows/pipelines.yml (5 hunks)
  • .nuget/Cuemon.Core/PackageReleaseNotes.txt (1 hunks)
  • CHANGELOG.md (1 hunks)

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
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

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: 6

🧹 Nitpick comments (2)
src/Cuemon.Core/Threading/AsyncOptions.cs (1)

26-28: XML doc is now misleading – default is no longer default

The constructor sets the token to CancellationToken.None, but the documentation table still advertises <c>default</c>.
Please keep docs in sync with behaviour to avoid confusion.

-///         <description><c>default</c></description>
+///         <description><c>CancellationToken.None</c></description>
test/Cuemon.Core.Tests/Threading/AwaiterTest.cs (1)

80-81: Extraneous semicolon

The lonely semicolon has no effect and can be safely removed.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f0dc132 and a84a067.

📒 Files selected for processing (4)
  • src/Cuemon.Core/Threading/AsyncOptions.cs (1 hunks)
  • src/Cuemon.Core/Threading/AsyncRunOptions.cs (1 hunks)
  • src/Cuemon.Core/Threading/Awaiter.cs (1 hunks)
  • test/Cuemon.Core.Tests/Threading/AwaiterTest.cs (1 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (1)
src/Cuemon.Core/Threading/AsyncRunOptions.cs (1)
src/Cuemon.Core/Threading/AsyncOptions.cs (2)
  • AsyncOptions (11-57)
  • AsyncOptions (35-38)
⏰ Context from checks skipped due to timeout of 90000ms (3)
  • GitHub Check: call-build (Release) / 🛠️ Build
  • GitHub Check: call-build (Debug) / 🛠️ Build
  • GitHub Check: 🪟 Prepare Windows / 🏷️ Restore

Comment on lines +31 to +35
public AsyncRunOptions()
{
Timeout = TimeSpan.FromSeconds(5);
Delay = TimeSpan.FromMilliseconds(100);
}
Copy link

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Validate Timeout and Delay at construction time

A negative Timeout/Delay (or a Delay greater than Timeout) will make Awaiter behave unpredictably or throw deep inside Task.Delay.
Sanitise once in the ctor to fail-fast.

-    public AsyncRunOptions()
-    {
-        Timeout = TimeSpan.FromSeconds(5);
-        Delay = TimeSpan.FromMilliseconds(100);
-    }
+    public AsyncRunOptions()
+    {
+        Timeout = TimeSpan.FromSeconds(5);
+        Delay = TimeSpan.FromMilliseconds(100);
+    }
+
+    private void Validate()
+    {
+        if (Timeout < TimeSpan.Zero)  throw new ArgumentOutOfRangeException(nameof(Timeout));
+        if (Delay   < TimeSpan.Zero)  throw new ArgumentOutOfRangeException(nameof(Delay));
+        if (Delay   > Timeout)        throw new ArgumentException("Delay cannot exceed Timeout.");
+    }

Call Validate() at the end of the ctor and from both property setters (see next comment).

Committable suggestion skipped: line range outside the PR's diff.

🤖 Prompt for AI Agents
In src/Cuemon.Core/Threading/AsyncRunOptions.cs around lines 31 to 35, the
constructor sets Timeout and Delay without validation, allowing negative values
or Delay greater than Timeout, which causes unpredictable behavior. Add a
Validate() method that checks Timeout and Delay for non-negative values and
ensures Delay is not greater than Timeout. Call Validate() at the end of the
constructor to fail fast if invalid values are set.

Comment on lines +41 to +47
public TimeSpan Timeout { get; set; }

/// <summary>
/// Gets or sets the delay between asynchronous operation attempts.
/// </summary>
/// <value>The delay between asynchronous operation attempts. The default is 100 milliseconds.</value>
public TimeSpan Delay { get; set; }
Copy link

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Add guards in property setters

Without checks, a caller can later inject invalid values after construction.

-public TimeSpan Timeout { get; set; }
+private TimeSpan _timeout;
+public TimeSpan Timeout
+{
+    get => _timeout;
+    set
+    {
+        if (value < TimeSpan.Zero) throw new ArgumentOutOfRangeException(nameof(value));
+        _timeout = value;
+    }
+}
@@
-public TimeSpan Delay { get; set; }
+private TimeSpan _delay;
+public TimeSpan Delay
+{
+    get => _delay;
+    set
+    {
+        if (value < TimeSpan.Zero) throw new ArgumentOutOfRangeException(nameof(value));
+        _delay = value;
+    }
+}
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
public TimeSpan Timeout { get; set; }
/// <summary>
/// Gets or sets the delay between asynchronous operation attempts.
/// </summary>
/// <value>The delay between asynchronous operation attempts. The default is 100 milliseconds.</value>
public TimeSpan Delay { get; set; }
private TimeSpan _timeout;
public TimeSpan Timeout
{
get => _timeout;
set
{
if (value < TimeSpan.Zero) throw new ArgumentOutOfRangeException(nameof(value));
_timeout = value;
}
}
/// <summary>
/// Gets or sets the delay between asynchronous operation attempts.
/// </summary>
/// <value>The delay between asynchronous operation attempts. The default is 100 milliseconds.</value>
private TimeSpan _delay;
public TimeSpan Delay
{
get => _delay;
set
{
if (value < TimeSpan.Zero) throw new ArgumentOutOfRangeException(nameof(value));
_delay = value;
}
}
🤖 Prompt for AI Agents
In src/Cuemon.Core/Threading/AsyncRunOptions.cs between lines 41 and 47, the
Timeout and Delay property setters lack validation, allowing invalid values to
be set. Add guard clauses in the setters to validate the input, for example
ensuring the TimeSpan values are not negative or zero where inappropriate, and
throw appropriate exceptions if invalid values are assigned.

Comment on lines +40 to +44
options.CancellationToken.ThrowIfCancellationRequested();
conditionalValue = await method().ConfigureAwait(false);
if (conditionalValue.Succeeded) { break; }
}
catch (Exception ex)
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue

Possible NullReferenceException when delegate returns null

conditionalValue.Succeeded is accessed inside the loop without a null-check, yet the delegate contract allows returning null.
Either document that method must never return null or defensively handle it:

-conditionalValue = await method().ConfigureAwait(false);
-if (conditionalValue.Succeeded) { break; }
+conditionalValue = await method().ConfigureAwait(false);
+if (conditionalValue?.Succeeded == true) { break; }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
options.CancellationToken.ThrowIfCancellationRequested();
conditionalValue = await method().ConfigureAwait(false);
if (conditionalValue.Succeeded) { break; }
}
catch (Exception ex)
options.CancellationToken.ThrowIfCancellationRequested();
conditionalValue = await method().ConfigureAwait(false);
if (conditionalValue?.Succeeded == true) { break; }
}
catch (Exception ex)
🤖 Prompt for AI Agents
In src/Cuemon.Core/Threading/Awaiter.cs around lines 40 to 44, the code accesses
conditionalValue.Succeeded without checking if conditionalValue is null, which
can cause a NullReferenceException since the delegate method may return null. To
fix this, add a null check for conditionalValue before accessing its Succeeded
property, or update the method's contract to ensure it never returns null and
document this requirement clearly.

exceptions.Add(ex);
}

await Task.Delay(options.Delay).ConfigureAwait(false);
Copy link

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Propagate cancellation to the delay

Task.Delay(options.Delay) ignores the provided cancellation token, postponing cancellation until the next loop turn.

-await Task.Delay(options.Delay).ConfigureAwait(false);
+await Task.Delay(options.Delay, options.CancellationToken).ConfigureAwait(false);

This ensures that a cancelled token breaks out immediately.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
await Task.Delay(options.Delay).ConfigureAwait(false);
await Task.Delay(options.Delay, options.CancellationToken).ConfigureAwait(false);
🤖 Prompt for AI Agents
In src/Cuemon.Core/Threading/Awaiter.cs at line 49, the call to Task.Delay does
not pass the cancellation token from options, causing delays to ignore
cancellation requests. Modify the Task.Delay call to include the cancellation
token from options so that the delay can be cancelled immediately when
requested, allowing the loop to break out promptly.

Comment on lines 29 to 31
public static async Task<ConditionalValue> RunUntilSucceededOrTimeoutAsync(Func<Task<ConditionalValue>> method, Action<AsyncRunOptions> setup = null)
{
var options = Patterns.Configure(setup);
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue

Guard against null method delegate

Awaiter.RunUntilSucceededOrTimeoutAsync(null) currently throws a null-deref several lines later.
Add quick validation for clearer exception semantics.

-public static async Task<ConditionalValue> RunUntilSucceededOrTimeoutAsync(Func<Task<ConditionalValue>> method, Action<AsyncRunOptions> setup = null)
+public static async Task<ConditionalValue> RunUntilSucceededOrTimeoutAsync(Func<Task<ConditionalValue>> method, Action<AsyncRunOptions> setup = null)
 {
+    if (method == null) throw new ArgumentNullException(nameof(method));
🤖 Prompt for AI Agents
In src/Cuemon.Core/Threading/Awaiter.cs around lines 29 to 31, the method
parameter is not checked for null, causing a null reference exception later. Add
a guard clause at the start of RunUntilSucceededOrTimeoutAsync to throw an
ArgumentNullException if method is null, providing clearer and earlier error
feedback.

Comment on lines +100 to +108
{
new InvalidOperationException("fail1"),
new ArgumentException("fail2")
};
var callCount = 0;
Task<ConditionalValue> Method()
{
throw exceptions[callCount++];
}
Copy link

Choose a reason for hiding this comment

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

💡 Verification agent

❓ Verification inconclusive

exceptions[callCount++] can overrun the list

When the timeout allows more than two iterations, an IndexOutOfRangeException will be added, defeating the intent of verifying an AggregateException with exactly the two predefined failures.

Consider looping the provided exceptions instead:

-Task<ConditionalValue> Method()
-{
-    throw exceptions[callCount++];
-}
+Task<ConditionalValue> Method()
+{
+    var ex = exceptions[callCount % exceptions.Count];
+    callCount++;
+    throw ex;
+}

This keeps the test deterministic irrespective of how many retries occur.


#!/bin/bash
# Locate the AwaiterTest.cs file and inspect the exceptions declaration and Method()
file=$(fd --glob 'AwaiterTest.cs' -t f)
echo "Found file: $file"
echo "---- Head of file ----"
sed -n '1,200p' "$file"
echo "---- Search for exceptions declaration ----"
grep -Rn "exceptions *=" "$file"
echo "---- Search for Method() definition ----"
grep -Rn "Task<ConditionalValue> Method" -n "$file"

Cycle through exceptions in Method() to prevent overruns

When retries exceed the two predefined failures, exceptions[callCount++] will throw an IndexOutOfRangeException. Use the modulo operator on the array’s Length to keep calls within bounds:

  • File: test/Cuemon.Core.Tests/Threading/AwaiterTest.cs (lines 100–108)
-Task<ConditionalValue> Method()
-{
-    throw exceptions[callCount++];
-}
+Task<ConditionalValue> Method()
+{
+    var ex = exceptions[callCount % exceptions.Length];
+    callCount++;
+    throw ex;
+}
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
{
new InvalidOperationException("fail1"),
new ArgumentException("fail2")
};
var callCount = 0;
Task<ConditionalValue> Method()
{
throw exceptions[callCount++];
}
Task<ConditionalValue> Method()
{
var ex = exceptions[callCount % exceptions.Length];
callCount++;
throw ex;
}
🤖 Prompt for AI Agents
In test/Cuemon.Core.Tests/Threading/AwaiterTest.cs around lines 100 to 108, the
code accessing exceptions[callCount++] can cause an IndexOutOfRangeException if
retries exceed the exceptions array length. To fix this, modify the index access
to use callCount modulo the length of the exceptions array, ensuring the index
wraps around and prevents overruns during repeated calls.

@codecov
Copy link

codecov bot commented Jun 13, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 79.86%. Comparing base (e077271) to head (19375cf).
Report is 3 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #123      +/-   ##
==========================================
- Coverage   80.17%   79.86%   -0.32%     
==========================================
  Files         596      595       -1     
  Lines       18513    18317     -196     
  Branches     1902     1870      -32     
==========================================
- Hits        14843    14629     -214     
- Misses       3599     3618      +19     
+ Partials       71       70       -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.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

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: 2

♻️ Duplicate comments (13)
.nuget/Cuemon.Extensions.Data.Integrity/PackageReleaseNotes.txt (1)

5-5: Duplicate: Simplify wording in ALM bullet. See suggestion on first release-notes file for replacing “with respect to” with “for” and adding “the” before “dependencies.”

🧰 Tools
🪛 LanguageTool

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Extensions.AspNetCore.Text.Json/PackageReleaseNotes.txt (1)

5-5: Duplicate: Simplify wording in ALM bullet. See initial note about using “for TFMs” instead of “with respect to TFMs” and prepending “the” to “dependencies.”

🧰 Tools
🪛 LanguageTool

[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Extensions.IO/PackageReleaseNotes.txt (1)

5-5: Duplicate: Simplify wording in ALM bullet. Refer to the first file’s suggestion on adopting “for TFMs” and adding “the” before “dependencies.”

🧰 Tools
🪛 LanguageTool

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Extensions.AspNetCore/PackageReleaseNotes.txt (1)

5-5: Duplicate: Simplify wording in ALM bullet. As noted above, “for TFMs” is more concise than “with respect to TFMs,” and including “the” before “dependencies” enhances readability.

🧰 Tools
🪛 LanguageTool

[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Extensions.Threading/PackageReleaseNotes.txt (1)

5-5: Apply the same phrasing refinement.
See comment on .nuget/Cuemon.Runtime.Caching/PackageReleaseNotes.txt:5 for suggested wording.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Diagnostics/PackageReleaseNotes.txt (1)

5-5: Apply the same phrasing refinement.
See comment on .nuget/Cuemon.Runtime.Caching/PackageReleaseNotes.txt:5 for suggested wording.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Extensions.Reflection/PackageReleaseNotes.txt (1)

5-5: Apply the same phrasing refinement.
See comment on .nuget/Cuemon.Runtime.Caching/PackageReleaseNotes.txt:5 for suggested wording.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Threading/PackageReleaseNotes.txt (1)

5-5: Apply the same phrasing refinement.
See comment on .nuget/Cuemon.Runtime.Caching/PackageReleaseNotes.txt:5 for suggested wording.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Extensions.DependencyInjection/PackageReleaseNotes.txt (1)

1-5: Ensure consistent wording across release notes
The 9.0.6 entry mirrors other packages. You may apply the same phrasing refinement:

- Updated dependencies to the latest TFMs
🧰 Tools
🪛 LanguageTool

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Extensions.Runtime.Caching/PackageReleaseNotes.txt (1)

1-5: Consistent phrasing suggestion
As with other release notes, consider replacing

- CHANGED Dependencies to latest and greatest with respect to TFMs

with

- Updated dependencies to the latest TFMs
🧰 Tools
🪛 LanguageTool

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.AspNetCore/PackageReleaseNotes.txt (1)

1-5: Apply uniform release note language
To align with the rest of the suite, you can simplify the dependency update line to:

- Updated dependencies to the latest TFMs
🧰 Tools
🪛 LanguageTool

[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Extensions.Diagnostics/PackageReleaseNotes.txt (1)

1-5: Standardize dependency update phrasing
For consistency, update the bullet to:

- Updated dependencies to the latest TFMs
🧰 Tools
🪛 LanguageTool

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

test/Cuemon.Core.Tests/Threading/AwaiterTest.cs (1)

105-108: exceptions[callCount++] still risks IndexOutOfRangeException

The earlier review pointed out that this direct indexing will break when the retry loop exceeds the two predefined failures – a likely scenario given a 50 ms timeout and 10 ms delay. Please wrap the index with a modulo to keep the test deterministic.

-            Task<ConditionalValue> Method()
-            {
-                throw exceptions[callCount++];
-            }
+            Task<ConditionalValue> Method()
+            {
+                var ex = exceptions[callCount % exceptions.Count];
+                callCount++;
+                throw ex;
+            }
🧹 Nitpick comments (35)
.nuget/Cuemon.Extensions.Core/PackageReleaseNotes.txt (2)

1-2: Remove hidden BOM and verify header formatting.
The file begins with a visible BOM character (\uFEFF) which can cause rendering issues in some editors. Remove the BOM to ensure clean text; the “Version 9.0.6” header and availability line otherwise match the established pattern.


4-5: Refine phrasing in ALM section.
The entry “CHANGED Dependencies to latest and greatest with respect to TFMs” is consistent but a bit wordy. Consider replacing “with respect to TFMs” with “for TFMs” to improve conciseness and align with a more streamlined style.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Extensions.AspNetCore.Mvc.RazorPages/PackageReleaseNotes.txt (1)

5-5: Consider shortening wording for brevity.
Replace “with respect to TFMs” with “for TFMs” to reduce wordiness.

- - CHANGED Dependencies to latest and greatest with respect to TFMs
+ - CHANGED Dependencies to latest and greatest for TFMs
🧰 Tools
🪛 LanguageTool

[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Extensions.AspNetCore.Mvc.Formatters.Text.Json/PackageReleaseNotes.txt (1)

5-5: Consider shortening wording for brevity.
Replace “with respect to TFMs” with “for TFMs” to reduce wordiness.

- - CHANGED Dependencies to latest and greatest with respect to TFMs
+ - CHANGED Dependencies to latest and greatest for TFMs
🧰 Tools
🪛 LanguageTool

[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.AspNetCore.Razor.TagHelpers/PackageReleaseNotes.txt (1)

5-5: Consider shortening wording for brevity.
Replace “with respect to TFMs” with “for TFMs” to reduce wordiness.

- - CHANGED Dependencies to latest and greatest with respect to TFMs
+ - CHANGED Dependencies to latest and greatest for TFMs
🧰 Tools
🪛 LanguageTool

[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.AspNetCore.Authentication/PackageReleaseNotes.txt (1)

5-5: Consider shortening wording for brevity.
Replace “with respect to TFMs” with “for TFMs” to reduce wordiness.

- - CHANGED Dependencies to latest and greatest with respect to TFMs
+ - CHANGED Dependencies to latest and greatest for TFMs
🧰 Tools
🪛 LanguageTool

[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Extensions.Text/PackageReleaseNotes.txt (1)

5-5: Consider shortening wording for brevity.
Replace “with respect to TFMs” with “for TFMs” to reduce wordiness.

- - CHANGED Dependencies to latest and greatest with respect to TFMs
+ - CHANGED Dependencies to latest and greatest for TFMs
🧰 Tools
🪛 LanguageTool

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Extensions.AspNetCore.Authentication/PackageReleaseNotes.txt (1)

4-5: Refine release note wording.
The phrase “CHANGED Dependencies to latest and greatest with respect to TFMs” is verbose and missing an article. Consider simplifying to:

  • “Updated dependencies to the latest TFMs.”
🧰 Tools
🪛 LanguageTool

[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Extensions.Hosting/PackageReleaseNotes.txt (2)

4-5: Simplify dependency update wording.
Replace “CHANGED Dependencies to latest and greatest with respect to TFMs” with a more concise “Updated dependencies to the latest TFMs.”

🧰 Tools
🪛 LanguageTool

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)


36-36: Clarify removal scope.
Add the definite article and specify the target clearly, e.g.:

  • “Removed support for the IHostingEnvironment interface (netstandard2.0).”
.nuget/Cuemon.Extensions.Xml/PackageReleaseNotes.txt (1)

4-5: Shorten ALM entry and add article.
Consider changing “CHANGED Dependencies to latest and greatest with respect to TFMs” to:

  • “Updated dependencies to the latest TFMs.”
🧰 Tools
🪛 LanguageTool

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Extensions.AspNetCore.Xml/PackageReleaseNotes.txt (1)

4-5: Make ALM change more concise.
Use “Updated dependencies to the latest TFMs.” instead of the longer phrasing.

🧰 Tools
🪛 LanguageTool

[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.AspNetCore.App/PackageReleaseNotes.txt (1)

4-5: Refine ALM change description.
Consider “Updated dependencies to the latest TFMs.” for brevity and clarity.

🧰 Tools
🪛 LanguageTool

[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Extensions.Data/PackageReleaseNotes.txt (1)

1-5: Suggest simplifying the ALM entry wording.

The phrase “CHANGED Dependencies to latest and greatest with respect to TFMs” is verbose and could be more concise. For example:

 # ALM
- - CHANGED Dependencies to latest and greatest with respect to TFMs
+ - UPDATED dependencies for target framework monikers
🧰 Tools
🪛 LanguageTool

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Extensions.Net/PackageReleaseNotes.txt (1)

1-5: Suggest simplifying the ALM entry wording.

The phrase “CHANGED Dependencies to latest and greatest with respect to TFMs” is verbose and could be more concise. For example:

 # ALM
- - CHANGED Dependencies to latest and greatest with respect to TFMs
+ - UPDATED dependencies for target framework monikers
🧰 Tools
🪛 LanguageTool

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.AspNetCore.Mvc/PackageReleaseNotes.txt (1)

1-5: Suggest simplifying the ALM entry wording.

The phrase “CHANGED Dependencies to latest and greatest with respect to TFMs” is verbose and could be more concise. For example:

 # ALM
- - CHANGED Dependencies to latest and greatest with respect to TFMs
+ - UPDATED dependencies for target framework monikers
🧰 Tools
🪛 LanguageTool

[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Extensions.AspNetCore.Mvc.Formatters.Xml/PackageReleaseNotes.txt (1)

1-5: Suggest simplifying the ALM entry wording.

The phrase “CHANGED Dependencies to latest and greatest with respect to TFMs” is verbose and could be more concise. For example:

 # ALM
- - CHANGED Dependencies to latest and greatest with respect to TFMs
+ - UPDATED dependencies for target framework monikers
🧰 Tools
🪛 LanguageTool

[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Net/PackageReleaseNotes.txt (1)

1-5: Suggest simplifying the ALM entry wording.

The phrase “CHANGED Dependencies to latest and greatest with respect to TFMs” is verbose and could be more concise. For example:

 # ALM
- - CHANGED Dependencies to latest and greatest with respect to TFMs
+ - UPDATED dependencies for target framework monikers
🧰 Tools
🪛 LanguageTool

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Data.SqlClient/PackageReleaseNotes.txt (1)

5-5: Refine ALM bullet for clarity.
Consider shortening “CHANGED Dependencies to latest and greatest with respect to TFMs” to something like “Updated dependencies for TFMs” or include the missing article for consistency (e.g., “to the latest…”).

🧰 Tools
🪛 LanguageTool

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Data/PackageReleaseNotes.txt (1)

5-5: Refine ALM bullet wording.
Consider rephrasing to “Updated dependencies for TFMs” or include “the” for consistency: “to the latest dependencies for TFMs.”

🧰 Tools
🪛 LanguageTool

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Extensions.Text.Json/PackageReleaseNotes.txt (1)

5-5: Simplify ALM bullet text.
Replace “CHANGED Dependencies to latest and greatest with respect to TFMs” with a more concise phrase like “Updated dependencies for TFMs.”

🧰 Tools
🪛 LanguageTool

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Security.Cryptography/PackageReleaseNotes.txt (1)

5-5: ALM bullet could be clearer.
Consider a concise phrasing: “Updated dependencies for TFMs” or include “the latest” if desired: “to the latest dependencies for TFMs.”

🧰 Tools
🪛 LanguageTool

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Data.Integrity/PackageReleaseNotes.txt (1)

5-5: Streamline ALM bullet.
Shorten to “Updated dependencies for TFMs” or add “the” for grammatical consistency: “to the latest dependencies for TFMs.”

🧰 Tools
🪛 LanguageTool

[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Extensions.Collections.Specialized/PackageReleaseNotes.txt (1)

5-5: Simplify wording in ALM bullet. The phrase “with respect to” is somewhat verbose; consider a more concise alternative (e.g., “for TFMs”). Also, adding “the” before “dependencies” can improve flow:

  • CHANGED the dependencies to the latest and greatest for TFMs
🧰 Tools
🪛 LanguageTool

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Runtime.Caching/PackageReleaseNotes.txt (1)

5-5: Refine ALM bullet for clarity and consistency.
The line currently reads:

- CHANGED Dependencies to latest and greatest with respect to TFMs

It’s wordy and missing “the”. Consider a succinct alternative:

- - CHANGED Dependencies to latest and greatest with respect to TFMs
+ - UPDATED dependencies to the latest versions for TFMs
🧰 Tools
🪛 LanguageTool

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Resilience/PackageReleaseNotes.txt (1)

1-5: Validate release note entry for 9.0.6
The new version block follows existing structure. For brevity and clarity, consider simplifying the bullet from

- CHANGED Dependencies to latest and greatest with respect to TFMs

to

- Updated dependencies to the latest TFMs
🧰 Tools
🪛 LanguageTool

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Extensions.AspNetCore.Mvc/PackageReleaseNotes.txt (1)

4-5: Shorten ALM description.
Replace

CHANGED Dependencies to latest and greatest with respect to TFMs

with

Updated dependencies to latest TFMs

for brevity and clarity.

🧰 Tools
🪛 LanguageTool

[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Xml/PackageReleaseNotes.txt (1)

5-5: Reduce wordiness in ALM.
Consider changing

CHANGED Dependencies to latest and greatest with respect to TFMs

to

Updated dependencies to latest TFMs
🧰 Tools
🪛 LanguageTool

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.IO/PackageReleaseNotes.txt (1)

5-5: Simplify ALM phrasing.
Switch to

Updated dependencies to latest TFMs

for a more concise description.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Extensions.Collections.Generic/PackageReleaseNotes.txt (1)

5-5: Trim redundant wording.
Use

Updated dependencies to latest TFMs

instead of

CHANGED Dependencies to latest and greatest with respect to TFMs
🧰 Tools
🪛 LanguageTool

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Core/PackageReleaseNotes.txt (2)

5-5: Concise ALM entry.
Recommend replacing

CHANGED Dependencies to latest and greatest with respect to TFMs

with

Updated dependencies to latest TFMs
🧰 Tools
🪛 LanguageTool

[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   # New Features - ADDED Awaiter c...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)


7-8: Enhance feature description.
The "ADDED Awaiter class" entry is clear but could reference the specific method name (RunUntilSucceededOrTimeoutAsync) or link to docs for better traceability.

CHANGELOG.md (1)

11-11: Use a colon instead of a semicolon in the introductory sentence.

To align with the rest of the changelog’s style, replace the semicolon after “minor new handy feature” with a colon.

test/Cuemon.Core.Tests/Threading/AwaiterTest.cs (2)

80-81: Dangling semicolon is dead code

Line 80 contains a standalone ; that does nothing and can be safely removed to keep the test clean.


56-72: Optional: assert the number of invocations in timeout test

RunUntilSuccessfulOrTimeoutAsync_ShouldReturnUnsuccessfulOnTimeout_NoExceptions doesn’t verify how many times Method was invoked. Adding an assertion on call count would tighten the test’s guarantees and guard against regressions in retry logic.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e900c82 and 3a45da8.

📒 Files selected for processing (44)
  • .nuget/Cuemon.AspNetCore.App/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.AspNetCore.Authentication/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.AspNetCore.Mvc/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.AspNetCore.Razor.TagHelpers/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.AspNetCore/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Core.App/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Core/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Data.Integrity/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Data.SqlClient/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Data/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Diagnostics/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Extensions.AspNetCore.Authentication/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Extensions.AspNetCore.Mvc.Formatters.Text.Json/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Extensions.AspNetCore.Mvc.Formatters.Xml/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Extensions.AspNetCore.Mvc.RazorPages/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Extensions.AspNetCore.Mvc/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Extensions.AspNetCore.Text.Json/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Extensions.AspNetCore.Xml/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Extensions.AspNetCore/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Extensions.Collections.Generic/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Extensions.Collections.Specialized/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Extensions.Core/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Extensions.Data.Integrity/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Extensions.Data/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Extensions.DependencyInjection/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Extensions.Diagnostics/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Extensions.Hosting/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Extensions.IO/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Extensions.Net/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Extensions.Reflection/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Extensions.Runtime.Caching/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Extensions.Text.Json/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Extensions.Text/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Extensions.Threading/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Extensions.Xml/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.IO/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Net/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Resilience/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Runtime.Caching/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Security.Cryptography/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Threading/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Xml/PackageReleaseNotes.txt (1 hunks)
  • CHANGELOG.md (1 hunks)
  • test/Cuemon.Core.Tests/Threading/AwaiterTest.cs (1 hunks)
🧰 Additional context used
🪛 LanguageTool
.nuget/Cuemon.Extensions.AspNetCore.Xml/PackageReleaseNotes.txt

[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.AspNetCore.Authentication/PackageReleaseNotes.txt

[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Extensions.AspNetCore.Mvc/PackageReleaseNotes.txt

[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Extensions.AspNetCore/PackageReleaseNotes.txt

[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Extensions.AspNetCore.Mvc.Formatters.Text.Json/PackageReleaseNotes.txt

[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Extensions.Core/PackageReleaseNotes.txt

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Extensions.Text.Json/PackageReleaseNotes.txt

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.AspNetCore/PackageReleaseNotes.txt

[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.AspNetCore.App/PackageReleaseNotes.txt

[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.AspNetCore.Mvc/PackageReleaseNotes.txt

[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.AspNetCore.Razor.TagHelpers/PackageReleaseNotes.txt

[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Core.App/PackageReleaseNotes.txt

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Core/PackageReleaseNotes.txt

[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   # New Features - ADDED Awaiter c...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Data.Integrity/PackageReleaseNotes.txt

[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Data.SqlClient/PackageReleaseNotes.txt

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Data/PackageReleaseNotes.txt

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Diagnostics/PackageReleaseNotes.txt

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Extensions.AspNetCore.Authentication/PackageReleaseNotes.txt

[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Extensions.AspNetCore.Mvc.Formatters.Xml/PackageReleaseNotes.txt

[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Extensions.AspNetCore.Mvc.RazorPages/PackageReleaseNotes.txt

[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Extensions.AspNetCore.Text.Json/PackageReleaseNotes.txt

[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Extensions.Collections.Generic/PackageReleaseNotes.txt

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Extensions.Collections.Specialized/PackageReleaseNotes.txt

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Extensions.Data.Integrity/PackageReleaseNotes.txt

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Extensions.Data/PackageReleaseNotes.txt

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Extensions.DependencyInjection/PackageReleaseNotes.txt

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Extensions.Diagnostics/PackageReleaseNotes.txt

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Extensions.Hosting/PackageReleaseNotes.txt

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Extensions.IO/PackageReleaseNotes.txt

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Extensions.Net/PackageReleaseNotes.txt

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Extensions.Reflection/PackageReleaseNotes.txt

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Extensions.Runtime.Caching/PackageReleaseNotes.txt

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Extensions.Text/PackageReleaseNotes.txt

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Extensions.Threading/PackageReleaseNotes.txt

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Extensions.Xml/PackageReleaseNotes.txt

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.IO/PackageReleaseNotes.txt

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Net/PackageReleaseNotes.txt

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Resilience/PackageReleaseNotes.txt

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Runtime.Caching/PackageReleaseNotes.txt

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Security.Cryptography/PackageReleaseNotes.txt

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Threading/PackageReleaseNotes.txt

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Xml/PackageReleaseNotes.txt

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

⏰ Context from checks skipped due to timeout of 90000ms (3)
  • GitHub Check: call-build (Debug) / 🛠️ Build
  • GitHub Check: call-build (Release) / 🛠️ Build
  • GitHub Check: 🪟 Prepare Windows / 🏷️ Restore
🔇 Additional comments (22)
.nuget/Cuemon.Core.App/PackageReleaseNotes.txt (1)

1-2: Release notes header is up-to-date.

Version and availability correctly reflect the new 9.0.6 release.

.nuget/Cuemon.Extensions.AspNetCore.Mvc.RazorPages/PackageReleaseNotes.txt (1)

1-6: Release notes entry for version 9.0.6 looks correct.
The new version is properly listed with availability for .NET 9 & .NET 8 and the ALM change is concise.

🧰 Tools
🪛 LanguageTool

[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Extensions.AspNetCore.Mvc.Formatters.Text.Json/PackageReleaseNotes.txt (1)

1-6: Release notes entry for version 9.0.6 looks correct.
The new version is properly listed with availability for .NET 9 & .NET 8 and the ALM change is concise.

🧰 Tools
🪛 LanguageTool

[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.AspNetCore.Razor.TagHelpers/PackageReleaseNotes.txt (1)

1-6: Release notes entry for version 9.0.6 looks correct.
The new version is properly listed with availability for .NET 9 & .NET 8 and the ALM change is concise.

🧰 Tools
🪛 LanguageTool

[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.AspNetCore.Authentication/PackageReleaseNotes.txt (1)

1-6: Release notes entry for version 9.0.6 looks correct.
The new version is properly listed with availability for .NET 9 & .NET 8 and the ALM change is concise.

🧰 Tools
🪛 LanguageTool

[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Extensions.Text/PackageReleaseNotes.txt (1)

1-6: Release notes entry for version 9.0.6 looks correct.
The new version is properly listed with availability for .NET 9, .NET 8, & .NET Standard 2.0 and the ALM change is concise.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

.nuget/Cuemon.Extensions.AspNetCore.Authentication/PackageReleaseNotes.txt (1)

1-2: New version entry added correctly.
The header and availability lines for version 9.0.6 are clear and accurate.

.nuget/Cuemon.Extensions.Hosting/PackageReleaseNotes.txt (1)

1-2: New version entry updated correctly.
Version 9.0.6 and its availability targets are correctly documented.

.nuget/Cuemon.Extensions.Xml/PackageReleaseNotes.txt (1)

1-2: Version header looks good.
The new entry for version 9.0.6 and its availability are correctly stated.

.nuget/Cuemon.Extensions.AspNetCore.Xml/PackageReleaseNotes.txt (1)

1-2: New version header is correct.
Version 9.0.6 and its platform support are accurately captured.

.nuget/Cuemon.AspNetCore.App/PackageReleaseNotes.txt (1)

1-2: Version 9.0.6 entry added.
The header reflects the new release and target frameworks correctly.

.nuget/Cuemon.Data.SqlClient/PackageReleaseNotes.txt (1)

1-3: Version entry for 9.0.6 is correct.
This adds the new version with proper availability targets.

.nuget/Cuemon.Data/PackageReleaseNotes.txt (1)

1-3: Version entry for 9.0.6 is correct.
New version entry aligns with existing format.

.nuget/Cuemon.Extensions.Text.Json/PackageReleaseNotes.txt (1)

1-3: Version 9.0.6 header and availability look good.
Entry follows the standard pattern.

.nuget/Cuemon.Security.Cryptography/PackageReleaseNotes.txt (1)

1-3: New version header is accurate.
Availability targets are consistent with other packages.

.nuget/Cuemon.Data.Integrity/PackageReleaseNotes.txt (1)

1-3: 9.0.6 entry and availability are correctly added.
Matches package versioning conventions.

.nuget/Cuemon.Extensions.AspNetCore.Mvc/PackageReleaseNotes.txt (1)

1-2: Confirm version header consistency.
The "Version 9.0.6" entry and its availability lines follow the established format across release notes.

.nuget/Cuemon.Xml/PackageReleaseNotes.txt (1)

1-2: Verify version entry formatting.
The new "Version 9.0.6" header and availability align with previous entries.

.nuget/Cuemon.IO/PackageReleaseNotes.txt (1)

1-2: Check header format.
The new version and availability section match the existing pattern.

.nuget/Cuemon.Extensions.Collections.Generic/PackageReleaseNotes.txt (1)

1-2: Confirm version declaration style.
"Version 9.0.6" and its availability are consistent with earlier notes.

.nuget/Cuemon.Core/PackageReleaseNotes.txt (1)

1-2: Validate new version header.
The header and availability for 9.0.6 maintain format consistency with prior entries.

test/Cuemon.Core.Tests/Threading/AwaiterTest.cs (1)

78-88: Immediate-cancel token may hide real timeout behaviour

Creating a CancellationTokenSource(TimeSpan.FromMilliseconds(0)) produces a token that is already cancelled before the first await. The test effectively checks cancellation rather than timeout logic.
If the intention is to validate timeout with cancellation support, consider cancelling slightly after the timeout (e.g., 20 ms) to keep the two mechanisms distinguishable.

Comment on lines +4 to +5
# ALM
- CHANGED Dependencies to latest and greatest with respect to TFMs
Copy link

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

⚠️ Potential issue

Release notes missing feature summaries for new async utilities and tests.

The 9.0.6 entry currently only updates dependencies but doesn’t document the key additions delivered in this PR (the Awaiter retry utility, AsyncRunOptions, the AsyncOptions constructor change, and the new unit tests). Please expand the # ALM section to include these features, for example:

 # ALM
- - CHANGED Dependencies to latest and greatest with respect to TFMs
+ - UPDATED dependencies to the latest versions for supported TFMs
+ - ADDED `AsyncRunOptions` class for configurable timeout/delay in async operations
+ - ADDED `Awaiter.RunUntilSucceededOrTimeoutAsync` retry utility in `Cuemon.Threading`
+ - UPDATED `AsyncOptions` constructor default to `CancellationToken.None`
+ - ADDED comprehensive unit tests for `Awaiter` in `AwaiterTest`
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
# ALM
- CHANGED Dependencies to latest and greatest with respect to TFMs
# ALM
- UPDATED dependencies to the latest versions for supported TFMs
- ADDED `AsyncRunOptions` class for configurable timeout/delay in async operations
- ADDED `Awaiter.RunUntilSucceededOrTimeoutAsync` retry utility in `Cuemon.Threading`
- UPDATED `AsyncOptions` constructor default to `CancellationToken.None`
- ADDED comprehensive unit tests for `Awaiter` in `AwaiterTest`
🧰 Tools
🪛 LanguageTool

[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0   # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs   Ver...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs   Version 9.0.5 Availability: .NET...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

🤖 Prompt for AI Agents
In .nuget/Cuemon.Core.App/PackageReleaseNotes.txt around lines 4 to 5, the
release notes for version 9.0.6 only mention dependency updates and omit key new
features. Expand the # ALM section to include summaries of the new async
utilities like the Awaiter retry utility, AsyncRunOptions, the AsyncOptions
constructor change, and the added unit tests to accurately reflect the PR's
contributions.

Comment on lines 15 to 17
- Awaiter class in the Cuemon.Threading namespace that provides a set of static methods for awaiting asynchronous operations:
- RunUntilSuccessfulOrTimeoutAsync repeatedly invokes a specified asynchronous lambda expression until it succeeds or a configured timeout is reached

Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue

Changelog entry is incomplete and mismatches the PR details.

  • The method name in the changelog (RunUntilSuccessfulOrTimeoutAsync) does not match the actual signature introduced (RunUntilSucceededOrTimeoutAsync).
  • The new AsyncRunOptions class is missing from the “Added” list.
  • The update to the AsyncOptions constructor (default CancellationTokenCancellationToken.None) is not documented.

Apply this diff to correct and complete the entry:

@@ -11,7 +11,7 @@ This is a service update that focuses on package dependencies and a minor new
-feature; `Cuemon.Threading.Awaiter.RunUntilSuccessfulOrTimeoutAsync` method.
+feature: `Cuemon.Threading.Awaiter.RunUntilSucceededOrTimeoutAsync` method.

 ### Added

-- Awaiter class in the Cuemon.Threading namespace that provides a set of static methods for awaiting asynchronous operations:
-  - RunUntilSuccessfulOrTimeoutAsync repeatedly invokes a specified asynchronous lambda expression until it succeeds or a configured timeout is reached
+- Awaiter class in the Cuemon.Threading namespace that provides a set of static methods for awaiting asynchronous operations:
+  - RunUntilSucceededOrTimeoutAsync repeatedly invokes a specified asynchronous operation until it succeeds or a configured timeout is reached.
+- AsyncRunOptions class in the Cuemon.Core.Threading namespace providing configurable timeout (default 5s) and delay (default 100ms) for retries.
+- AsyncOptions constructor now defaults its `CancellationToken` parameter to `CancellationToken.None` for clarity.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- Awaiter class in the Cuemon.Threading namespace that provides a set of static methods for awaiting asynchronous operations:
- RunUntilSuccessfulOrTimeoutAsync repeatedly invokes a specified asynchronous lambda expression until it succeeds or a configured timeout is reached
This is a service update that focuses on package dependencies and a minor new feature: `Cuemon.Threading.Awaiter.RunUntilSucceededOrTimeoutAsync` method.
### Added
- Awaiter class in the Cuemon.Threading namespace that provides a set of static methods for awaiting asynchronous operations:
- RunUntilSucceededOrTimeoutAsync repeatedly invokes a specified asynchronous operation until it succeeds or a configured timeout is reached.
- AsyncRunOptions class in the Cuemon.Core.Threading namespace providing configurable timeout (default 5s) and delay (default 100ms) for retries.
- AsyncOptions constructor now defaults its `CancellationToken` parameter to `CancellationToken.None` for clarity.
🤖 Prompt for AI Agents
In CHANGELOG.md around lines 15 to 17, the changelog entry has an incorrect
method name and is missing details. Update the method name from
RunUntilSuccessfulOrTimeoutAsync to RunUntilSucceededOrTimeoutAsync to match the
actual code. Add the new AsyncRunOptions class to the "Added" section. Also,
document the change in the AsyncOptions constructor where the default
CancellationToken was changed to CancellationToken.None. Ensure the changelog
fully reflects all relevant changes from the PR.

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: 0

🧹 Nitpick comments (1)
.github/workflows/pipelines.yml (1)

102-102: Validate build input support and optimize build step
Verify that the codebeltnet/jobs-dotnet-test@v2 reusable workflow supports the build parameter to avoid CI failures. Optionally, to speed up Linux runs, you can limit the build step to Windows only:

-      build: true # we need to build for .net48
+      build: ${{ matrix.os == 'windows-2022' }} # only build on Windows for .NET48
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 3741b92 and 4773b02.

📒 Files selected for processing (1)
  • .github/workflows/pipelines.yml (1 hunks)

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

🧹 Nitpick comments (2)
.github/workflows/pipelines.yml (2)

31-36: Consider removing the commented-out prepare_windows block.

Leaving large commented sections can clutter the workflow. If Windows caching is no longer needed, remove these lines entirely to keep the pipeline clean and maintainable.


101-116: Enhance the Windows test job clarity and performance.

  • The job and step share the vague name call-test; consider renaming to call-test-windows for clearer logs.
  • Caching was removed when disabling prepare_windows, so the Windows job now always restores from scratch. You may reintroduce caching (e.g., via a lightweight prepare_windows job or adding a restore-cache-key input) to speed up runs.
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between ca3f14f and b9b3274.

📒 Files selected for processing (1)
  • .github/workflows/pipelines.yml (5 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (2)
  • GitHub Check: call-build (Release) / 🛠️ Build
  • GitHub Check: call-build (Debug) / 🛠️ Build
🔇 Additional comments (4)
.github/workflows/pipelines.yml (4)

178-181: Downstream update for SonarCloud is correct.

The sonarcloud job now depends on both test_linux and test_windows, ensuring analyses only run after all test suites complete.


189-193: Downstream update for Codecov is correct.

The codecov job’s needs now includes both test jobs, aligning coverage reporting with multi-platform testing.


198-202: Downstream update for CodeQL is correct.

Including both test_linux and test_windows in the needs ensures security scans run after the full test matrix.


205-209: Deploy dependencies updated appropriately.

The deploy job now correctly awaits test_linux, test_windows, and all other prerequisites before pushing packages.

@sonarqubecloud
Copy link

gimlichael and others added 3 commits June 15, 2025 01:59
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
@gimlichael gimlichael merged commit 5bb60b1 into main Jun 15, 2025
8 of 11 checks passed
@gimlichael gimlichael deleted the v9.0.6/awaiter branch June 15, 2025 00:03
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