Skip to content

Cleanup SimdUtils#2654

Merged
JimBobSquarePants merged 8 commits into
mainfrom
js/xplat-intrinsics
Feb 14, 2024
Merged

Cleanup SimdUtils#2654
JimBobSquarePants merged 8 commits into
mainfrom
js/xplat-intrinsics

Conversation

@JimBobSquarePants
Copy link
Copy Markdown
Member

Prerequisites

  • I have written a descriptive pull-request title
  • I have verified that there are no overlapping pull-requests open
  • I have verified that I am following the existing coding patterns and practice as demonstrated in the repository. These follow strict Stylecop rules 👮.
  • I have provided test coverage for my change (where applicable)

Description

The plan here is to be able to remove ExtendedIntrinsics and FallbackIntrinsics128 by normalizing the HwIntrinsics implementation adding Vector512 support and extending Vector128 support to include ARM.

Any and all input is welcome.

CC @tannergooding @saucecontrol @gfoidl @br3aker

Copy link
Copy Markdown
Contributor

@saucecontrol saucecontrol left a comment

Choose a reason for hiding this comment

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

I see there's a test failure on Arm64. Nothing jumps out as a cause, but I left some comments anyway :)

Comment thread src/ImageSharp/Common/Helpers/SimdUtils.HwIntrinsics.cs Outdated
int remainder;
if (Avx2.IsSupported)

if (Avx512BW.IsSupported)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This one's probably ok, but you'll want to consider bypassing the AVX-512 path on older hardware like Skylake-X, because of the well-known downclocking issues.

Vector512.IsHardwareAccelerated will return false on these processors, even though they support the AVX-512 instructions, so you can check both conditions to make sure the code only runs where AVX-512 is supported and fast.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Foot meet gun!
I'll add the additional checks.

result = AdvSimd.Insert(result, 3, AdvSimd.Extract(vector, (byte)((control >> 6) & 0x3)));
#pragma warning restore CA1857 // A constant is expected for the parameter
return result;
}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This is going to be a perf killer in most cases. It'll be worth testing any path that uses this to make sure it doesn't regress to slower than scalar when Arm starts taking a SIMD path it skipped before.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

I tossed a coin over this one. My thought was I was making enough savings elsewhere in calling method to justify the cost here. I need to see what the codegen is like, but I have no means to do so currently.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I assumed codegen would just be the 4 extracts and 3 inserts (which would make the shuffle a minimum of 8 cycles vs the 1 it takes on x86), but it's actually worse.

image

Copy link
Copy Markdown
Member Author

@JimBobSquarePants JimBobSquarePants Feb 2, 2024

Choose a reason for hiding this comment

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

🤮I'll um, i'll remove that then.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

I wish that you could define constants from a value given a parameter is a constant. I bet the codegen would be much better then.

- public static Vector128<float> Shuffle(Vector128<float> vector, [ConstantExpected] byte control)
+ public static Vector128<float> Shuffle(Vector128<float> vector, const byte control)

Then...

const byte w = (byte)((control >> 6) & 0x3)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I would have thought the fact that it's inlined and the control byte is a constant would have been enough, so I'm quite surprised at that codegen. I'll have a look in the morning and see if I can figure out what's up.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Looks to be an issue with where the constant folding happens.

The inlininer is happening and the operands seen are effectively:

               [000000] ----------- arg0                    +--*  LCL_VAR   simd16<System.Runtime.Intrinsics.Vector128`1> V00 arg0         
               [000006] ----------- arg1                    +--*  CNS_INT   int    0
               [000007] ----------- arg2                    +--*  LCL_VAR   simd16<System.Runtime.Intrinsics.Vector128`1> V00 arg0         
               [000010] ----------- arg3                    \--*  AND       int   
               [000008] -----------                            +--*  CNS_INT   int    228
               [000009] -----------                            \--*  CNS_INT   int    3

We're likely missing an attempt to constant fold AND which is blocking it, which is unfortunate.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Going to see if its a trivial fix I can get in...

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

dotnet/runtime#97901 fixes this case (and similar scenarios) in particular

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Hero!

/// <param name="vector">The value to convert.</param>
/// <returns>The <see cref="Vector256{Int32}"/>.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static Vector256<int> ConvertToInt32RoundToEven(Vector256<float> vector)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Personally, I'd avoid helpers like this for now. As of .NET 8, only AVX hardware supports hardware-accelerated Vector256 at all, so this is just that with more steps. You may be able to expand that when Arm SVE becomes available in .NET 9 (or 10 if you stick to the current pattern of targeting LTS), but one would hope by that time, you'll have a BCL-provided xplat helper you can use to replace any explicit AVX calls.

That is to say, at the time this becomes actually useful, you'll have to make changes anyway.

Same goes for Vector512, ofc.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

The hope is that bythe time 10 comes out I can replace Vector256Utilities.XX with Vector256.XX and it will be a simple job to refactor. Plus, the consistency feeds my soul.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

the consistency feeds my soul

I feel this 😄

My concern would be that the fallback code here is either

  1. Never used, so just a maintenance burden with no payoff, or
  2. Used accidentally, resulting in a perf drop over the optimized Vector128 path

Perhaps if you really do want to hide all intrinsics behind helpers like this, it would be better to throw PNSE outside the one optimized implementation. Be aware, though, adding these extra layers over intrinsics can hinder inlining when they're used in larger methods.

When refactoring time comes, most of these will hopefully just be Avx2.XX -> Vector256.XX anyway.

DebugGuard.IsTrue(source.Length == destination.Length, nameof(source), "Input spans must be of same length!");

if (Avx2.IsSupported || Sse2.IsSupported)
if (Avx512BW.IsSupported || Avx2.IsSupported || Sse2.IsSupported || AdvSimd.IsSupported)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
if (Avx512BW.IsSupported || Avx2.IsSupported || Sse2.IsSupported || AdvSimd.IsSupported)
if (Sse2.IsSupported || AdvSimd.IsSupported)

Avx512BW.IsSupported and Avx2.IsSupported strictly imply Sse2.IsSupported, so this is redundant.

}

Vector512<float> sign = vector & Vector512.Create(-0.0f);
Vector512<float> val_2p23_f32 = sign | Vector512.Create(8388608.0f);
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Can you make 8388608.0f a named constant and use that in the other VectorXyzUtilities too?
So it's defined three times.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

I'll have a look. Not sure where to put it.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Worth noting that 8388608 is 2^23, which is the boundary value at which fractional data can no longer be represented (only whole integers at or above this boundary).

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Never found a place to put this.

@JimBobSquarePants JimBobSquarePants changed the title WIP Cleanup SimdUtils Cleanup SimdUtils Feb 6, 2024
@JimBobSquarePants JimBobSquarePants marked this pull request as ready for review February 6, 2024 06:31
@JimBobSquarePants JimBobSquarePants added this to the v4.0.0 milestone Feb 6, 2024
Copy link
Copy Markdown
Contributor

@saucecontrol saucecontrol left a comment

Choose a reason for hiding this comment

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

Looks good aside from the tangle of IsSupported checks 👍

Comment on lines +764 to +767
if ((Vector512.IsHardwareAccelerated && Avx512F.IsSupported) ||
Avx2.IsSupported ||
Sse2.IsSupported ||
AdvSimd.IsSupported)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
if ((Vector512.IsHardwareAccelerated && Avx512F.IsSupported) ||
Avx2.IsSupported ||
Sse2.IsSupported ||
AdvSimd.IsSupported)
if (Vector128.IsHardwareAccelerated)

The check as written won't prevent you running the AVX-512 code on the slow processors, because those will still pass the Avx2.IsSupported check and enter this block, where they'll also pass the Avx512F.IsSupported check below and use Vector512 anyway.

This entire expression boils down to the lowest common denominator, which is Sse2.IsSupported || AdvSimd.IsSupported. That would seem to be unnecessarily restrictive though, because your Vector128 path is 100% xplat intrinsics. I don't know if Vector128.IsHardwareAccelerated reports true for wasm on .NET 8, but if it does now or in .NET 9, you'd be getting that for free if you loosen this check to just Vector128.IsHardwareAccelerated.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Ah yeah, this is much smarter, nice to know about wasm too.

{
int remainder;
if (Avx2.IsSupported)
if (Avx512F.IsSupported)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
if (Avx512F.IsSupported)
if (Vector512.IsHardwareAccelerated && Avx512F.IsSupported)

Copy link
Copy Markdown
Contributor

@saucecontrol saucecontrol Feb 8, 2024

Choose a reason for hiding this comment

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

BTW, I'm not 100% sure you want to include the Vector512.IsHardwareAccelerated restriction on all of these. You do have the option of restricting on IsSupported only and telling users who don't want to use AVX-512 on the slower hardware to disable it with DOTNET_EnableAVX512F=0, though that does also disable the new instructions on narrower vectors (AVX-512 VL) as well. I haven't made this decision for my own libs yet.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

I think I'll stick and include the check. I want my users to get no surprises.

Span<float> destination)
{
fixed (byte* sourceBase = source)
if (Avx512F.IsSupported)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
if (Avx512F.IsSupported)
if (Vector512.IsHardwareAccelerated && Avx512F.IsSupported)

Unsafe.Add(ref d, 3) = f3;
}
}
else if (Sse2.IsSupported || AdvSimd.IsSupported)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
else if (Sse2.IsSupported || AdvSimd.IsSupported)
else

Comment on lines +934 to +936
if ((Vector512.IsHardwareAccelerated && Avx512BW.IsSupported) ||
(Vector256.IsHardwareAccelerated && Avx2.IsSupported) ||
(Vector128.IsHardwareAccelerated && (Sse2.IsSupported || AdvSimd.IsSupported)))
Copy link
Copy Markdown
Contributor

@saucecontrol saucecontrol Feb 8, 2024

Choose a reason for hiding this comment

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

Suggested change
if ((Vector512.IsHardwareAccelerated && Avx512BW.IsSupported) ||
(Vector256.IsHardwareAccelerated && Avx2.IsSupported) ||
(Vector128.IsHardwareAccelerated && (Sse2.IsSupported || AdvSimd.IsSupported)))
if (Sse2.IsSupported || AdvSimd.IsSupported)

Edit: Oops, this one doesn't have xplat fallback for saturated narrowing. Need to keep the platform checks.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Is there one I can add? Would be great to do so.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

There's Vector128.Narrow (truncating), plus Min and Max, so you could put something together. It's a bit awkward because you really want to go int->byte, and splitting the helpers to plug in for each of the narrowing steps separately would be a lot of extra codegen. A single clamp to byte range followed by double narrow would be slightly cleaner.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Thanks. I think I'll leave it for now. Don't want to spend too long figuring it out.

int remainder;
if (Avx2.IsSupported)

if (Avx512BW.IsSupported)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
if (Avx512BW.IsSupported)
if (Vector512.IsHardwareAccelerated && Avx512BW.IsSupported)

Span<byte> destination)
{
if (Avx2.IsSupported)
if (Avx512BW.IsSupported)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
if (Avx512BW.IsSupported)
if (Vector512.IsHardwareAccelerated && Avx512BW.IsSupported)

Copy link
Copy Markdown
Contributor

@gfoidl gfoidl left a comment

Choose a reason for hiding this comment

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

Modulo some minor things and the feedback from @saucecontrol: LGTM


for (int i = 0; i < source.Length; i++)
{
Unsafe.Add(ref dBase, i) = Unsafe.Add(ref sBase, i) / 255f;
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
Unsafe.Add(ref dBase, i) = Unsafe.Add(ref sBase, i) / 255f;
Unsafe.Add(ref dBase, (uint)i) = Unsafe.Add(ref sBase, (uint)i) / 255f;

Comment on lines +68 to +69
ref byte dBase = ref MemoryMarshal.GetReference(destination);
for (int i = 0; i < source.Length; i++)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
ref byte dBase = ref MemoryMarshal.GetReference(destination);
for (int i = 0; i < source.Length; i++)
ref byte dBase = ref MemoryMarshal.GetReference(destination);
for (int i = 0; i < source.Length; i++)

For code style to have the same blank line as above.

ref byte dBase = ref MemoryMarshal.GetReference(destination);
for (int i = 0; i < source.Length; i++)
{
Unsafe.Add(ref dBase, i) = ConvertToByte(Unsafe.Add(ref sBase, i));
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
Unsafe.Add(ref dBase, i) = ConvertToByte(Unsafe.Add(ref sBase, i));
Unsafe.Add(ref dBase, (uint)i) = ConvertToByte(Unsafe.Add(ref sBase, (uint)i));

@JimBobSquarePants
Copy link
Copy Markdown
Member Author

Thanks for the review chaps. I've actioned the lot now. Will merge on successful build.

@JimBobSquarePants JimBobSquarePants merged commit 1f22bce into main Feb 14, 2024
@JimBobSquarePants JimBobSquarePants deleted the js/xplat-intrinsics branch February 14, 2024 02:13
@JimBobSquarePants
Copy link
Copy Markdown
Member Author

Stating to see some improvement in numbers here.

BenchmarkDotNet v0.13.11, Windows 11 (10.0.22631.3085/23H2/2023Update/SunValley3)
11th Gen Intel Core i7-11370H 3.30GHz, 1 CPU, 8 logical and 4 physical cores
.NET SDK 8.0.101
  [Host]   : .NET 8.0.1 (8.0.123.58001), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
  ShortRun : .NET 8.0.1 (8.0.123.58001), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI

Job=ShortRun  IterationCount=5  LaunchCount=1
WarmupCount=5
Method Mean Error StdDev Ratio Gen0 Gen1 Gen2 Allocated Alloc Ratio
'System.Drawing Load, Resize, Save' 368.56 ms 12.636 ms 1.955 ms 1.00 - - - 13.23 KB 1.00
'ImageFlow Load, Resize, Save' 270.28 ms 12.142 ms 3.153 ms 0.74 500.0000 500.0000 500.0000 4642.53 KB 351.00
'ImageSharp Load, Resize, Save' 114.87 ms 2.408 ms 0.625 ms 0.31 - - - 1314.02 KB 99.35
'ImageSharp TD Load, Resize, Save' 75.31 ms 1.923 ms 0.499 ms 0.20 166.6667 - - 1307.22 KB 98.83
'ImageMagick Load, Resize, Save' 393.97 ms 7.115 ms 1.101 ms 1.07 - - - 54.48 KB 4.12
'ImageFree Load, Resize, Save' 235.16 ms 2.376 ms 0.617 ms 0.64 6000.0000 6000.0000 6000.0000 95.8 KB 7.24
'MagicScaler Load, Resize, Save' 66.67 ms 0.873 ms 0.135 ms 0.18 - - - 45.42 KB 3.43
'SkiaSharp Load, Resize, Save' 136.42 ms 2.833 ms 0.736 ms 0.37 - - - 88.15 KB 6.66
'NetVips Load, Resize, Save' 122.52 ms 7.601 ms 1.974 ms 0.33 - - - 50.95 KB 3.85

This was referenced May 12, 2026
WarperSan added a commit to WarperSan/ThunderPipe that referenced this pull request May 15, 2026
Updated [SixLabors.ImageSharp](https://github.com/SixLabors/ImageSharp)
from 3.1.12 to 4.0.0.

<details>
<summary>Release notes</summary>

_Sourced from [SixLabors.ImageSharp's
releases](https://github.com/SixLabors/ImageSharp/releases)._

## 4.0.0

## What's Changed
* Update to net8 by @​stefannikolei in
SixLabors/ImageSharp#2583
* Handle dedup of local palette of 256 length - Main by
@​JimBobSquarePants in SixLabors/ImageSharp#2607
* Replace custom Crc32 by @​JimBobSquarePants in
SixLabors/ImageSharp#2611
* Sync 3.1 DrawImage fixes by @​tocsoft in
SixLabors/ImageSharp#2612
* Fix handling gif encoding for global palettes - Main by
@​JimBobSquarePants in SixLabors/ImageSharp#2615
* Bump actions/setup-dotnet from 3 to 4 by @​dependabot[bot] in
SixLabors/ImageSharp#2613
* Adjusted the casing of the Webp format name by @​jscarle in
SixLabors/ImageSharp#2623
* Fix Paeth Filter decode on platforms that do not support Ssse3 - Main
by @​JimBobSquarePants in
SixLabors/ImageSharp#2620
* Fix WebP animation speed bug by @​marklagendijk in
SixLabors/ImageSharp#2624
* Promote PixelTypeInfo to Pixel by @​stefannikolei in
SixLabors/ImageSharp#2601
* TGA: Treat 32 bit True Color images always as transparent by
@​brianpopow in SixLabors/ImageSharp#2643
* Modernize and optimize pixel format operations across platforms. by
@​JimBobSquarePants in SixLabors/ImageSharp#2645
* Cleanup SimdUtils by @​JimBobSquarePants in
SixLabors/ImageSharp#2654
* Bump actions/cache from 3 to 4 by @​dependabot[bot] in
SixLabors/ImageSharp#2648
* Bump codecov/codecov-action from 3 to 4 by @​dependabot[bot] in
SixLabors/ImageSharp#2657
* Bump NuGet/setup-nuget from 1 to 2 by @​dependabot[bot] in
SixLabors/ImageSharp#2658
* Add v3.1.x fixes #​2673 and #​2674 into main. by @​JimBobSquarePants
in SixLabors/ImageSharp#2675
* Add fixes 2668, 2676, and 2677 to main by @​JimBobSquarePants in
SixLabors/ImageSharp#2678
* Merge 2681 to v4 Main by @​JimBobSquarePants in
SixLabors/ImageSharp#2690
* Add JPEG COM marker support by @​RobertMut in
SixLabors/ImageSharp#2641
* Bump actions/upload-artifact from 3 to 4 by @​dependabot[bot] in
SixLabors/ImageSharp#2625
* Only exit JPEG scan decoding after multiple EOF hits by
@​JimBobSquarePants in SixLabors/ImageSharp#2701
* V4 Ensure VP8X alpha flag is updated correctly. by @​JimBobSquarePants
in SixLabors/ImageSharp#2703
* Fix animated png handling (issue #​2708) by @​SpaceCheetah in
SixLabors/ImageSharp#2710
* Merge latest release from v3 by @​JimBobSquarePants in
SixLabors/ImageSharp#2720
* Fix MacOS jobs by @​antonfirsov in
SixLabors/ImageSharp#2728
* Fix async-over-sync issue in Image.DecodeAsync() by @​kroymann in
SixLabors/ImageSharp#2725
* Fix overflow in MemoryAllocator.Create(options) by @​antonfirsov in
SixLabors/ImageSharp#2730
* GifDecoder: Limit lzw bits to a maximum of 12 bits by @​brianpopow in
SixLabors/ImageSharp#2744
* GifDecoder : Allow skipping bad metadata using identify by
@​JimBobSquarePants in SixLabors/ImageSharp#2749
* Add ICO and CUR file decoder. by @​frg2089 in
SixLabors/ImageSharp#2579
* v4 - Fix off-by-one error when centering a transform. by
@​JimBobSquarePants in SixLabors/ImageSharp#2761
* v4 Fix 2758 by @​JimBobSquarePants in
SixLabors/ImageSharp#2764
* Simplify Color Space Conversion APIs by @​JimBobSquarePants in
SixLabors/ImageSharp#2739
* Webp: Fix Issue 2763 by @​brianpopow in
SixLabors/ImageSharp#2767
* V4 Correctly break during Png decoding by @​JimBobSquarePants in
SixLabors/ImageSharp#2773
* V4 : Fix filtering on PNG encode. by @​JimBobSquarePants in
SixLabors/ImageSharp#2778
* Fix #​2779 buffer overrun by @​KirillAldashkin in
SixLabors/ImageSharp#2780
* Fix ImageMetadata docs typo by @​lofcz in
SixLabors/ImageSharp#2781
* Add API for metadata conversion between formats. by
@​JimBobSquarePants in SixLabors/ImageSharp#2751
* Tiff decoder: Fix issue 2679 by @​brianpopow in
SixLabors/ImageSharp#2789
* Replace PngCrcChunkHandling by @​JimBobSquarePants in
SixLabors/ImageSharp#2786
* Add tagname to debugger visualization for Exif- and Iptc-values, to
facilitate easier debugging and discovery by @​lassevk in
SixLabors/ImageSharp#2787
* V4 - Correctly handle transform spaces when building transform
matrices. by @​JimBobSquarePants in
SixLabors/ImageSharp#2795
* Allow decoding Tiff of different frame size. by @​JimBobSquarePants in
SixLabors/ImageSharp#2788
* Add progressive JPEG encoder by @​ardabada in
SixLabors/ImageSharp#2740
* Fix using dither in BmpEncoder when bit per pixel is <= 4 by @​mistoll
in SixLabors/ImageSharp#2819
* Add QuadDistortion to ProjectiveTransformBuilder by @​Socolin in
SixLabors/ImageSharp#2748
* WEBP : Use Correct Width With AlphaDecoder by @​JimBobSquarePants in
SixLabors/ImageSharp#2823
 ... (truncated)

Commits viewable in [compare
view](SixLabors/ImageSharp@v3.1.12...v4.0.0).
</details>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: WarperSan <leumas.ecole@gmail.com>
mpaulosky added a commit to mpaulosky/IssueTrackerApp that referenced this pull request May 17, 2026
Updated [Aspire.Hosting.Redis](https://github.com/microsoft/aspire) from
13.3.0 to 13.3.3.

<details>
<summary>Release notes</summary>

_Sourced from [Aspire.Hosting.Redis's
releases](https://github.com/microsoft/aspire/releases)._

## 13.3.3

## What's New in Aspire 13.3.3

Patch release for Aspire 13.3 with fixes for debug log level leaking
into user resources, Keycloak HTTPS endpoint token invalidation, and
endpoint materialization in `HostResourceWithEndpoints`.

### 🐛 Fixes

- 🔇 **Debug log level leaking into user resources** —
`Logging__LogLevel__Default=Debug` set by the app host was being
inherited by all user resources, silently changing their logging
verbosity. The app host now uses `ASPIRE_APPHOST_LOGLEVEL` instead,
which is scoped to Aspire processes only. (#​17071, backported via
#​17078)
- 🔑 **Keycloak HTTPS primary endpoint** — Fixed a regression where
Keycloak tokens became invalid after an app host restart because the
HTTPS endpoint port was dynamic. When developer certificates are
enabled, Keycloak's primary endpoint is now upgraded to HTTPS directly,
and the endpoint name is set to `http` to enable standard
`http+https://` service discovery URLs. (#​17058, backported via
#​17063)
- 🔌 **Endpoint materialization in `HostResourceWithEndpoints`** —
Endpoints configured via `HostResourceWithEndpoints` are now correctly
materialized, ensuring endpoint resolution and service discovery work as
expected. (#​17091, backported via #​17092)

### 🏷️ Housekeeping

- ⬆️ Bumped DCP (Microsoft.DeveloperControlPlane) from 0.23.5 → 0.23.6 —
includes fixes for Kubernetes OpenAPI generator types that caused
`[SHOULD NOT HAPPEN] failed to update managedFields` errors. (#​17070)
- 🚀 Bumped branding to 13.3.3 (#​17088)

---
*Full commit:
[a4615e7c6def6cba4703cdbd84009cd3da9a261b](microsoft/aspire@a4615e7c6def6cba4703cdbd84009cd3da9a261b)*


## 13.3.2

## What's New in Aspire 13.3.2

Patch release for Aspire 13.3 with a fix for container tunnel startup
when tunnel-dependent containers use `WaitFor()`.

### 🐛 Fixes

- 🚇 Fix `WaitFor()` for tunnel-dependent containers — The container
tunnel implementation that shipped in Aspire 13.3 deadlocked at startup
when tunnel-using containers waited on other resources, because resource
waits blocked `ResourceStarting` before the tunnel initialization could
complete. Container and tunnel startup have been refactored to cooperate
correctly, and additional tunnel-dependent containers can now be started
at any point during the application lifecycle. Also improves error
reporting for container tunnel failures. (#​16988, backported via
#​16993)

### 🏷️ Housekeeping

- 🚀 Bumped branding to 13.3.2 (#​17053)


## 13.3.1

# Aspire 13.3.1

## What's New in Aspire 13.3.1

Patch release for Aspire 13.3 with a regression fix for `aspire run` and
a DCP bump.

### 🐛 Fixes

- 🏃 **`aspire run` compute environment validation** — Skip compute
environment validation in run mode so customers no longer hit `Resource
'<name>' is configured to publish as an Azure Container App, but there
are no 'AzureContainerAppEnvironmentResource' resources. Ensure you have
added one by calling 'AddAzureContainerAppEnvironment'.` errors during
local runs. The check is now only performed in publish mode, matching
pre-13.3 behavior. (#​16945, backported via #​16952)

### 🏷️ Housekeeping

- ⬆️ Bumped DCP (Microsoft.DeveloperControlPlane) from 0.23.4 → 0.23.5
(#​16944)
- 🌐 Updated localization resources (#​16602)
- 🚀 Bumped branding to 13.3.1 (#​16951)

Commits viewable in [compare
view](microsoft/aspire@v13.3.0...v13.3.3).
</details>

Updated [Aspire.Hosting.Testing](https://github.com/microsoft/aspire)
from 13.3.0 to 13.3.3.

<details>
<summary>Release notes</summary>

_Sourced from [Aspire.Hosting.Testing's
releases](https://github.com/microsoft/aspire/releases)._

## 13.3.3

## What's New in Aspire 13.3.3

Patch release for Aspire 13.3 with fixes for debug log level leaking
into user resources, Keycloak HTTPS endpoint token invalidation, and
endpoint materialization in `HostResourceWithEndpoints`.

### 🐛 Fixes

- 🔇 **Debug log level leaking into user resources** —
`Logging__LogLevel__Default=Debug` set by the app host was being
inherited by all user resources, silently changing their logging
verbosity. The app host now uses `ASPIRE_APPHOST_LOGLEVEL` instead,
which is scoped to Aspire processes only. (#​17071, backported via
#​17078)
- 🔑 **Keycloak HTTPS primary endpoint** — Fixed a regression where
Keycloak tokens became invalid after an app host restart because the
HTTPS endpoint port was dynamic. When developer certificates are
enabled, Keycloak's primary endpoint is now upgraded to HTTPS directly,
and the endpoint name is set to `http` to enable standard
`http+https://` service discovery URLs. (#​17058, backported via
#​17063)
- 🔌 **Endpoint materialization in `HostResourceWithEndpoints`** —
Endpoints configured via `HostResourceWithEndpoints` are now correctly
materialized, ensuring endpoint resolution and service discovery work as
expected. (#​17091, backported via #​17092)

### 🏷️ Housekeeping

- ⬆️ Bumped DCP (Microsoft.DeveloperControlPlane) from 0.23.5 → 0.23.6 —
includes fixes for Kubernetes OpenAPI generator types that caused
`[SHOULD NOT HAPPEN] failed to update managedFields` errors. (#​17070)
- 🚀 Bumped branding to 13.3.3 (#​17088)

---
*Full commit:
[a4615e7c6def6cba4703cdbd84009cd3da9a261b](microsoft/aspire@a4615e7c6def6cba4703cdbd84009cd3da9a261b)*


## 13.3.2

## What's New in Aspire 13.3.2

Patch release for Aspire 13.3 with a fix for container tunnel startup
when tunnel-dependent containers use `WaitFor()`.

### 🐛 Fixes

- 🚇 Fix `WaitFor()` for tunnel-dependent containers — The container
tunnel implementation that shipped in Aspire 13.3 deadlocked at startup
when tunnel-using containers waited on other resources, because resource
waits blocked `ResourceStarting` before the tunnel initialization could
complete. Container and tunnel startup have been refactored to cooperate
correctly, and additional tunnel-dependent containers can now be started
at any point during the application lifecycle. Also improves error
reporting for container tunnel failures. (#​16988, backported via
#​16993)

### 🏷️ Housekeeping

- 🚀 Bumped branding to 13.3.2 (#​17053)


## 13.3.1

# Aspire 13.3.1

## What's New in Aspire 13.3.1

Patch release for Aspire 13.3 with a regression fix for `aspire run` and
a DCP bump.

### 🐛 Fixes

- 🏃 **`aspire run` compute environment validation** — Skip compute
environment validation in run mode so customers no longer hit `Resource
'<name>' is configured to publish as an Azure Container App, but there
are no 'AzureContainerAppEnvironmentResource' resources. Ensure you have
added one by calling 'AddAzureContainerAppEnvironment'.` errors during
local runs. The check is now only performed in publish mode, matching
pre-13.3 behavior. (#​16945, backported via #​16952)

### 🏷️ Housekeeping

- ⬆️ Bumped DCP (Microsoft.DeveloperControlPlane) from 0.23.4 → 0.23.5
(#​16944)
- 🌐 Updated localization resources (#​16602)
- 🚀 Bumped branding to 13.3.1 (#​16951)

Commits viewable in [compare
view](microsoft/aspire@v13.3.0...v13.3.3).
</details>

Updated [Aspire.MongoDB.Driver](https://github.com/microsoft/aspire)
from 13.3.0 to 13.3.3.

<details>
<summary>Release notes</summary>

_Sourced from [Aspire.MongoDB.Driver's
releases](https://github.com/microsoft/aspire/releases)._

## 13.3.3

## What's New in Aspire 13.3.3

Patch release for Aspire 13.3 with fixes for debug log level leaking
into user resources, Keycloak HTTPS endpoint token invalidation, and
endpoint materialization in `HostResourceWithEndpoints`.

### 🐛 Fixes

- 🔇 **Debug log level leaking into user resources** —
`Logging__LogLevel__Default=Debug` set by the app host was being
inherited by all user resources, silently changing their logging
verbosity. The app host now uses `ASPIRE_APPHOST_LOGLEVEL` instead,
which is scoped to Aspire processes only. (#​17071, backported via
#​17078)
- 🔑 **Keycloak HTTPS primary endpoint** — Fixed a regression where
Keycloak tokens became invalid after an app host restart because the
HTTPS endpoint port was dynamic. When developer certificates are
enabled, Keycloak's primary endpoint is now upgraded to HTTPS directly,
and the endpoint name is set to `http` to enable standard
`http+https://` service discovery URLs. (#​17058, backported via
#​17063)
- 🔌 **Endpoint materialization in `HostResourceWithEndpoints`** —
Endpoints configured via `HostResourceWithEndpoints` are now correctly
materialized, ensuring endpoint resolution and service discovery work as
expected. (#​17091, backported via #​17092)

### 🏷️ Housekeeping

- ⬆️ Bumped DCP (Microsoft.DeveloperControlPlane) from 0.23.5 → 0.23.6 —
includes fixes for Kubernetes OpenAPI generator types that caused
`[SHOULD NOT HAPPEN] failed to update managedFields` errors. (#​17070)
- 🚀 Bumped branding to 13.3.3 (#​17088)

---
*Full commit:
[a4615e7c6def6cba4703cdbd84009cd3da9a261b](microsoft/aspire@a4615e7c6def6cba4703cdbd84009cd3da9a261b)*


## 13.3.2

## What's New in Aspire 13.3.2

Patch release for Aspire 13.3 with a fix for container tunnel startup
when tunnel-dependent containers use `WaitFor()`.

### 🐛 Fixes

- 🚇 Fix `WaitFor()` for tunnel-dependent containers — The container
tunnel implementation that shipped in Aspire 13.3 deadlocked at startup
when tunnel-using containers waited on other resources, because resource
waits blocked `ResourceStarting` before the tunnel initialization could
complete. Container and tunnel startup have been refactored to cooperate
correctly, and additional tunnel-dependent containers can now be started
at any point during the application lifecycle. Also improves error
reporting for container tunnel failures. (#​16988, backported via
#​16993)

### 🏷️ Housekeeping

- 🚀 Bumped branding to 13.3.2 (#​17053)


## 13.3.1

# Aspire 13.3.1

## What's New in Aspire 13.3.1

Patch release for Aspire 13.3 with a regression fix for `aspire run` and
a DCP bump.

### 🐛 Fixes

- 🏃 **`aspire run` compute environment validation** — Skip compute
environment validation in run mode so customers no longer hit `Resource
'<name>' is configured to publish as an Azure Container App, but there
are no 'AzureContainerAppEnvironmentResource' resources. Ensure you have
added one by calling 'AddAzureContainerAppEnvironment'.` errors during
local runs. The check is now only performed in publish mode, matching
pre-13.3 behavior. (#​16945, backported via #​16952)

### 🏷️ Housekeeping

- ⬆️ Bumped DCP (Microsoft.DeveloperControlPlane) from 0.23.4 → 0.23.5
(#​16944)
- 🌐 Updated localization resources (#​16602)
- 🚀 Bumped branding to 13.3.1 (#​16951)

Commits viewable in [compare
view](microsoft/aspire@v13.3.0...v13.3.3).
</details>

Updated
[Aspire.StackExchange.Redis](https://github.com/microsoft/aspire) from
13.3.0 to 13.3.3.

<details>
<summary>Release notes</summary>

_Sourced from [Aspire.StackExchange.Redis's
releases](https://github.com/microsoft/aspire/releases)._

## 13.3.3

## What's New in Aspire 13.3.3

Patch release for Aspire 13.3 with fixes for debug log level leaking
into user resources, Keycloak HTTPS endpoint token invalidation, and
endpoint materialization in `HostResourceWithEndpoints`.

### 🐛 Fixes

- 🔇 **Debug log level leaking into user resources** —
`Logging__LogLevel__Default=Debug` set by the app host was being
inherited by all user resources, silently changing their logging
verbosity. The app host now uses `ASPIRE_APPHOST_LOGLEVEL` instead,
which is scoped to Aspire processes only. (#​17071, backported via
#​17078)
- 🔑 **Keycloak HTTPS primary endpoint** — Fixed a regression where
Keycloak tokens became invalid after an app host restart because the
HTTPS endpoint port was dynamic. When developer certificates are
enabled, Keycloak's primary endpoint is now upgraded to HTTPS directly,
and the endpoint name is set to `http` to enable standard
`http+https://` service discovery URLs. (#​17058, backported via
#​17063)
- 🔌 **Endpoint materialization in `HostResourceWithEndpoints`** —
Endpoints configured via `HostResourceWithEndpoints` are now correctly
materialized, ensuring endpoint resolution and service discovery work as
expected. (#​17091, backported via #​17092)

### 🏷️ Housekeeping

- ⬆️ Bumped DCP (Microsoft.DeveloperControlPlane) from 0.23.5 → 0.23.6 —
includes fixes for Kubernetes OpenAPI generator types that caused
`[SHOULD NOT HAPPEN] failed to update managedFields` errors. (#​17070)
- 🚀 Bumped branding to 13.3.3 (#​17088)

---
*Full commit:
[a4615e7c6def6cba4703cdbd84009cd3da9a261b](microsoft/aspire@a4615e7c6def6cba4703cdbd84009cd3da9a261b)*


## 13.3.2

## What's New in Aspire 13.3.2

Patch release for Aspire 13.3 with a fix for container tunnel startup
when tunnel-dependent containers use `WaitFor()`.

### 🐛 Fixes

- 🚇 Fix `WaitFor()` for tunnel-dependent containers — The container
tunnel implementation that shipped in Aspire 13.3 deadlocked at startup
when tunnel-using containers waited on other resources, because resource
waits blocked `ResourceStarting` before the tunnel initialization could
complete. Container and tunnel startup have been refactored to cooperate
correctly, and additional tunnel-dependent containers can now be started
at any point during the application lifecycle. Also improves error
reporting for container tunnel failures. (#​16988, backported via
#​16993)

### 🏷️ Housekeeping

- 🚀 Bumped branding to 13.3.2 (#​17053)


## 13.3.1

# Aspire 13.3.1

## What's New in Aspire 13.3.1

Patch release for Aspire 13.3 with a regression fix for `aspire run` and
a DCP bump.

### 🐛 Fixes

- 🏃 **`aspire run` compute environment validation** — Skip compute
environment validation in run mode so customers no longer hit `Resource
'<name>' is configured to publish as an Azure Container App, but there
are no 'AzureContainerAppEnvironmentResource' resources. Ensure you have
added one by calling 'AddAzureContainerAppEnvironment'.` errors during
local runs. The check is now only performed in publish mode, matching
pre-13.3 behavior. (#​16945, backported via #​16952)

### 🏷️ Housekeeping

- ⬆️ Bumped DCP (Microsoft.DeveloperControlPlane) from 0.23.4 → 0.23.5
(#​16944)
- 🌐 Updated localization resources (#​16602)
- 🚀 Bumped branding to 13.3.1 (#​16951)

Commits viewable in [compare
view](microsoft/aspire@v13.3.0...v13.3.3).
</details>

Updated [Auth0.ManagementApi](https://github.com/auth0/auth0.net) from
8.2.0 to 8.3.0.

<details>
<summary>Release notes</summary>

_Sourced from [Auth0.ManagementApi's
releases](https://github.com/auth0/auth0.net/releases)._

## 8.3.0


**Added**
- Added `UserDateSchemaExtensions` with `ToDateTime(this
UserDateSchema?)` and `ToDateTime(this UserDateSchema?, TimeZoneInfo)`
extension methods to convert user date fields (e.g. `created_at`,
`last_login`) to `DateTime?`
[\#​1009](auth0/auth0.net#1009)
([kailash-b](https://github.com/kailash-b))
- Resource Servers: Added `AllowOnlineAccessWithEphemeralSessions`
(`bool?`) property to `ResourceServer`,
`CreateResourceServerRequestContent`,
`UpdateResourceServerRequestContent`,
`GetResourceServerResponseContent`,
`CreateResourceServerResponseContent`, and
`UpdateResourceServerResponseContent` for ephemeral session support
[\#​1007](auth0/auth0.net#1007)
([fern-api[bot]](https://github.com/apps/fern-api))
- Refresh Tokens: Added `Audience` (`string`) property to
`RevokeRefreshTokensRequestContent` to scope bulk token revocation by
resource server identifier
[\#​1007](auth0/auth0.net#1007)
([fern-api[bot]](https://github.com/apps/fern-api))
- User Authentication Methods: Added passkey-specific properties
(`Aaguid`, `CredentialDeviceType`, `CredentialBackedUp`,
`IdentityUserId`, `UserAgent`, `UserHandle`, `Transports`) to
`CreateUserAuthenticationMethodRequestContent`
[\#​1007](auth0/auth0.net#1007)
([fern-api[bot]](https://github.com/apps/fern-api))
- User Authentication Methods: Added `UserHandle` and `Transports`
properties to `GetUserAuthenticationMethodResponseContent` and
`UserAuthenticationMethod` response types
[\#​1007](auth0/auth0.net#1007)
([fern-api[bot]](https://github.com/apps/fern-api))
- User Authentication Methods: Added new `CredentialDeviceTypeEnum` type
with `single_device` and `multi_device` values
[\#​1007](auth0/auth0.net#1007)
([fern-api[bot]](https://github.com/apps/fern-api))
- Error handling: Added new structured error schema types
`BadRequestSchema`, `ForbiddenSchema`, `UnauthorizedSchema`, and
`TooManyRequestsSchema` with associated `*Error` enum types
[\#​1007](auth0/auth0.net#1007)
([fern-api[bot]](https://github.com/apps/fern-api))

**Fixed**
- Error handling: Added `400 BadRequest` and `404 NotFound` error
handling to `Users.Roles` client
[\#​1007](auth0/auth0.net#1007)
([fern-api[bot]](https://github.com/apps/fern-api))

**Changed**
- Connections: Made `id` and `name` fields `required` (non-nullable) on
all `ConnectionResponseContent*` types and `ConnectionResponseCommon`
[\#​1007](auth0/auth0.net#1007)
([fern-api[bot]](https://github.com/apps/fern-api))

Commits viewable in [compare
view](auth0/auth0.net@mgmt-8.2.0...mgmt-8.3.0).
</details>

Updated
[FluentAssertions](https://github.com/fluentassertions/fluentassertions)
from 8.9.0 to 8.10.0.

<details>
<summary>Release notes</summary>

_Sourced from [FluentAssertions's
releases](https://github.com/fluentassertions/fluentassertions/releases)._

## 8.10.0

<!-- Release notes generated using configuration in .github/release.yml
at main -->

## What's Changed
### Improvements
* Fail with a descriptive error when path-based rules are used on
value-semantic types by @​dennisdoomen in
fluentassertions/fluentassertions#3187
* Significantly speed up BeEquivalentTo for large unordered collections
by @​dennisdoomen in
fluentassertions/fluentassertions#3188
* Add ComparingNullCollectionsAsEmpty and ComparingNullStringsAsEmpty
options to BeEquivalentTo by @​dennisdoomen in
fluentassertions/fluentassertions#3202
* Include original index in extraneous item failure messages by
@​dennisdoomen in
fluentassertions/fluentassertions#3203
### Documentation
* Reroute the docs link to Xceed by @​dennisdoomen in
fluentassertions/fluentassertions#3183
* Fix typo in release notes by @​jnyrup in
fluentassertions/fluentassertions#3194
* Fix typos in docs by @​jnyrup in
fluentassertions/fluentassertions#3197
### Others
* Bump flatted from 3.4.1 to 3.4.2 in the npm_and_yarn group across 1
directory by @​dependabot[bot] in
fluentassertions/fluentassertions#3184
* Add AI assistant instruction file (agents.md) for Copilot, Claude, and
JetBrains Junie by @​Copilot in
fluentassertions/fluentassertions#3176
* Bump smol-toml from 1.6.0 to 1.6.1 in the npm_and_yarn group across 1
directory by @​dependabot[bot] in
fluentassertions/fluentassertions#3185
* Bump the npm_and_yarn group across 1 directory with 2 updates by
@​dependabot[bot] in
fluentassertions/fluentassertions#3186
* Bump cspell from 9.7.0 to 10.0.0 by @​dependabot[bot] in
fluentassertions/fluentassertions#3189
* Update nugets by @​jnyrup in
fluentassertions/fluentassertions#3192
* Fixup Qodana issues by @​jnyrup in
fluentassertions/fluentassertions#3193
* Fix Qodana argument separator by @​jnyrup in
fluentassertions/fluentassertions#3195
* Use new Qodana linter option by @​jnyrup in
fluentassertions/fluentassertions#3196
* Fix flaky BeLessThanOrEqualTo execution time test by @​Copilot in
fluentassertions/fluentassertions#3200
* Bump JetBrains/qodana-action from 2025.3 to 2026.1 by
@​dependabot[bot] in
fluentassertions/fluentassertions#3201
* Use long for hashCode in ReferentialComparer to avoid overflow by
@​dennisdoomen in
fluentassertions/fluentassertions#3204


**Full Changelog**:
fluentassertions/fluentassertions@8.9.0...8.10.0

Commits viewable in [compare
view](fluentassertions/fluentassertions@8.9.0...8.10.0).
</details>

Updated
[Microsoft.AspNetCore.Mvc.Testing](https://github.com/dotnet/dotnet)
from 10.0.7 to 10.0.8.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.AspNetCore.Mvc.Testing's
releases](https://github.com/dotnet/dotnet/releases)._

No release notes found for this version range.

Commits viewable in [compare
view](https://github.com/dotnet/dotnet/commits).
</details>

Updated [Microsoft.AspNetCore.OpenApi](https://github.com/dotnet/dotnet)
from 10.0.7 to 10.0.8.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.AspNetCore.OpenApi's
releases](https://github.com/dotnet/dotnet/releases)._

No release notes found for this version range.

Commits viewable in [compare
view](https://github.com/dotnet/dotnet/commits).
</details>

Updated
[Microsoft.AspNetCore.SignalR.Client](https://github.com/dotnet/dotnet)
from 10.0.7 to 10.0.8.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.AspNetCore.SignalR.Client's
releases](https://github.com/dotnet/dotnet/releases)._

No release notes found for this version range.

Commits viewable in [compare
view](https://github.com/dotnet/dotnet/commits).
</details>

Updated
[Microsoft.Extensions.Caching.StackExchangeRedis](https://github.com/dotnet/dotnet)
from 10.0.7 to 10.0.8.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.Extensions.Caching.StackExchangeRedis's
releases](https://github.com/dotnet/dotnet/releases)._

No release notes found for this version range.

Commits viewable in [compare
view](https://github.com/dotnet/dotnet/commits).
</details>

Updated
[Microsoft.Extensions.Configuration](https://github.com/dotnet/dotnet)
from 10.0.7 to 10.0.8.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.Extensions.Configuration's
releases](https://github.com/dotnet/dotnet/releases)._

No release notes found for this version range.

Commits viewable in [compare
view](https://github.com/dotnet/dotnet/commits).
</details>

Updated
[Microsoft.Extensions.Configuration.Abstractions](https://github.com/dotnet/dotnet)
from 10.0.7 to 10.0.8.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.Extensions.Configuration.Abstractions's
releases](https://github.com/dotnet/dotnet/releases)._

No release notes found for this version range.

Commits viewable in [compare
view](https://github.com/dotnet/dotnet/commits).
</details>

Updated
[Microsoft.Extensions.Configuration.Binder](https://github.com/dotnet/dotnet)
from 10.0.7 to 10.0.8.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.Extensions.Configuration.Binder's
releases](https://github.com/dotnet/dotnet/releases)._

No release notes found for this version range.

Commits viewable in [compare
view](https://github.com/dotnet/dotnet/commits).
</details>

Updated
[Microsoft.Extensions.DependencyInjection](https://github.com/dotnet/dotnet)
from 10.0.7 to 10.0.8.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.Extensions.DependencyInjection's
releases](https://github.com/dotnet/dotnet/releases)._

No release notes found for this version range.

Commits viewable in [compare
view](https://github.com/dotnet/dotnet/commits).
</details>

Updated
[Microsoft.Extensions.DependencyInjection.Abstractions](https://github.com/dotnet/dotnet)
from 10.0.7 to 10.0.8.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.Extensions.DependencyInjection.Abstractions's
releases](https://github.com/dotnet/dotnet/releases)._

No release notes found for this version range.

Commits viewable in [compare
view](https://github.com/dotnet/dotnet/commits).
</details>

Updated
[Microsoft.Extensions.Http.Resilience](https://github.com/dotnet/extensions)
from 10.5.0 to 10.6.0.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.Extensions.Http.Resilience's
releases](https://github.com/dotnet/extensions/releases)._

## 10.6.0

Version 10.6.0 stabilizes the response continuation token and
background-response APIs in Microsoft.Extensions.AI.Abstractions. Most
other AI work for May shipped in 10.5.1; this monthly release rolls
those changes up alongside dependency updates and a small Resource
Monitoring cleanup.

## Experimental API Changes

### Now Stable

* ResponseContinuationToken and background-response APIs are now stable
(previously `MEAI001`) #​7512

## What's Changed

### AI

* Stabilize ResponseContinuationToken / background-response APIs #​7512
by @​jozkee (co-authored by @​Copilot)

## Repository Infrastructure Updates

* Update version to 10.6.0 #​7458 by @​jeffhandley
* [main] Update dependencies from dotnet/arcade #​7451
* Bump follow-redirects from 1.15.11 to 1.16.0 in
/src/Libraries/Microsoft.Extensions.AI.Evaluation.Reporting/TypeScript/azure-devops-report/tasks/PublishAIEvaluationReport
#​7469
* Merge release/10.5 into main #​7470 by @​jeffhandley
* Bump microsoft.visualstudio.slngen.tool from 12.0.13 to 12.0.32 #​7484
* Bump postcss from 8.5.9 to 8.5.12 in
/src/Libraries/Microsoft.Extensions.AI.Evaluation.Reporting/TypeScript
#​7494
* Bump dotnet-reportgenerator-globaltool from 5.5.7 to 5.5.9 #​7504
* Rename release-notes skill to write-release-notes #​7511 by
@​jeffhandley (co-authored by @​Copilot)

## Acknowledgements

* @​wtgodbe @​tarekgh @​peterwald @​JeremyLikness @​eiriktsarpalis
@​ericstj @​evgenyfedorov2 reviewed pull requests

**Full Changelog**:
dotnet/extensions@v10.5.2...v10.6.0


## 10.5.2

This patch release ships a single fix to
`Microsoft.Extensions.VectorData.Abstractions`, correcting `StorageName`
resolution when external serialization is enabled.
`Microsoft.Extensions.VectorData.ConformanceTests`,
`Microsoft.Extensions.AI.Abstractions`, `Microsoft.Extensions.AI`, and
`Microsoft.Extensions.AI.OpenAI` are published alongside it for version
coherency — they contain no code changes from 10.5.1.

## Packages in this release

| Package | Version |
| --- | --- |
| Microsoft.Extensions.VectorData.Abstractions | 10.5.2 |
| Microsoft.Extensions.VectorData.ConformanceTests | 10.5.2 |
| Microsoft.Extensions.AI.Abstractions | 10.5.2 |
| Microsoft.Extensions.AI | 10.5.2 |
| Microsoft.Extensions.AI.OpenAI | 10.5.2 |

## What's Changed

### Microsoft.Extensions.VectorData.Abstractions

- Minor fixes to MEVD.Abstractions: correct `StorageName` behavior when
external serialization is enabled, and disable a warning for `net462`.
(by @​roji in [#​7475](dotnet/extensions#7475))

**Full Changelog**:
dotnet/extensions@v10.5.1...v10.5.2


## 10.5.1

Version 10.5.1 of the Microsoft.Extensions.AI packages stabilizes
CodeInterpreter, WebSearch, and ImageGeneration tool content types. The
release adds new experimental tool search and OpenAI request policy
hooks. And the OpenTelemetry gen-ai semantic conventions are updated to
align with v1.41.

The 'aiagent-webapi' project template in
Microsoft.Agents.AI.ProjectTemplates is updated to align with v1.3.0 of
Agent Framework, updating the OpenTelemetry dependencies within the
template projects as well.

## Packages in this release

| Package | Version |
|---------|---------|
| Microsoft.Extensions.AI | 10.5.1 |
| Microsoft.Extensions.AI.Abstractions | 10.5.1 |
| Microsoft.Extensions.AI.OpenAI | 10.5.1 |
| Microsoft.Extensions.AI.Templates | 10.5.1-preview.3.26251.3 |
| Microsoft.Agents.AI.ProjectTemplates | 1.3.0-preview.1.26251.3 |

## Experimental API Changes

### Now Stable

The following types previously emitted the `MEAI001` experimental
diagnostic and are now stable.

* CodeInterpreter and WebSearch tool content types are now stable #​7493
  * `CodeInterpreterToolCallContent`
  * `CodeInterpreterToolResultContent`
  * `WebSearchToolCallContent`
  * `WebSearchToolResultContent`
* ImageGeneration tool content types and tool are now stable #​7476
  * `ImageGenerationToolCallContent`
  * `ImageGenerationToolResultContent`
  * `HostedImageGenerationTool`
  * `ImageGenerationOptions`
* `ImageGenerationResponseFormat` (the `Hosted` enum value remains
experimental)
* `IImageGenerator` and the rest of the image generation infrastructure
also remain experimental

### New Experimental APIs

The following new APIs emit the `MEAI001` experimental diagnostic.

* New experimental API: `HostedToolSearchTool` with `DeferredTools` for
tool-search-driven deferred tool loading #​7471
* New experimental API: `OpenAIRequestPolicies` extension hook for
appending `System.ClientModel.PipelinePolicy` instances to outgoing
OpenAI requests #​7495

### Breaking Changes to Experimental APIs

* `WebSearchToolResultContent.Results` was renamed to `Outputs` as part
of the stabilization in #​7493, aligning with
`CodeInterpreterToolResultContent.Outputs`. The original `Results`
property was included in version 10.4.0 and 10.5.0; this is a binary
breaking change and consumers need to update to consume the updated
property.

  ```diff
  WebSearchToolResultContent content = ...;
  - IList<AIContent>? items = content.Results;
  + IList<AIContent>? items = content.Outputs;
  ```

 ... (truncated)

Commits viewable in [compare
view](dotnet/extensions@v10.5.0...v10.6.0).
</details>

Updated
[Microsoft.Extensions.Logging.Abstractions](https://github.com/dotnet/dotnet)
from 10.0.7 to 10.0.8.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.Extensions.Logging.Abstractions's
releases](https://github.com/dotnet/dotnet/releases)._

No release notes found for this version range.

Commits viewable in [compare
view](https://github.com/dotnet/dotnet/commits).
</details>

Updated [Microsoft.Extensions.Options](https://github.com/dotnet/dotnet)
from 10.0.7 to 10.0.8.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.Extensions.Options's
releases](https://github.com/dotnet/dotnet/releases)._

No release notes found for this version range.

Commits viewable in [compare
view](https://github.com/dotnet/dotnet/commits).
</details>

Updated
[Microsoft.Extensions.Options.ConfigurationExtensions](https://github.com/dotnet/dotnet)
from 10.0.7 to 10.0.8.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.Extensions.Options.ConfigurationExtensions's
releases](https://github.com/dotnet/dotnet/releases)._

No release notes found for this version range.

Commits viewable in [compare
view](https://github.com/dotnet/dotnet/commits).
</details>

Updated
[Microsoft.Extensions.ServiceDiscovery](https://github.com/dotnet/extensions)
from 10.5.0 to 10.6.0.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.Extensions.ServiceDiscovery's
releases](https://github.com/dotnet/extensions/releases)._

## 10.6.0

Version 10.6.0 stabilizes the response continuation token and
background-response APIs in Microsoft.Extensions.AI.Abstractions. Most
other AI work for May shipped in 10.5.1; this monthly release rolls
those changes up alongside dependency updates and a small Resource
Monitoring cleanup.

## Experimental API Changes

### Now Stable

* ResponseContinuationToken and background-response APIs are now stable
(previously `MEAI001`) #​7512

## What's Changed

### AI

* Stabilize ResponseContinuationToken / background-response APIs #​7512
by @​jozkee (co-authored by @​Copilot)

## Repository Infrastructure Updates

* Update version to 10.6.0 #​7458 by @​jeffhandley
* [main] Update dependencies from dotnet/arcade #​7451
* Bump follow-redirects from 1.15.11 to 1.16.0 in
/src/Libraries/Microsoft.Extensions.AI.Evaluation.Reporting/TypeScript/azure-devops-report/tasks/PublishAIEvaluationReport
#​7469
* Merge release/10.5 into main #​7470 by @​jeffhandley
* Bump microsoft.visualstudio.slngen.tool from 12.0.13 to 12.0.32 #​7484
* Bump postcss from 8.5.9 to 8.5.12 in
/src/Libraries/Microsoft.Extensions.AI.Evaluation.Reporting/TypeScript
#​7494
* Bump dotnet-reportgenerator-globaltool from 5.5.7 to 5.5.9 #​7504
* Rename release-notes skill to write-release-notes #​7511 by
@​jeffhandley (co-authored by @​Copilot)

## Acknowledgements

* @​wtgodbe @​tarekgh @​peterwald @​JeremyLikness @​eiriktsarpalis
@​ericstj @​evgenyfedorov2 reviewed pull requests

**Full Changelog**:
dotnet/extensions@v10.5.2...v10.6.0


## 10.5.2

This patch release ships a single fix to
`Microsoft.Extensions.VectorData.Abstractions`, correcting `StorageName`
resolution when external serialization is enabled.
`Microsoft.Extensions.VectorData.ConformanceTests`,
`Microsoft.Extensions.AI.Abstractions`, `Microsoft.Extensions.AI`, and
`Microsoft.Extensions.AI.OpenAI` are published alongside it for version
coherency — they contain no code changes from 10.5.1.

## Packages in this release

| Package | Version |
| --- | --- |
| Microsoft.Extensions.VectorData.Abstractions | 10.5.2 |
| Microsoft.Extensions.VectorData.ConformanceTests | 10.5.2 |
| Microsoft.Extensions.AI.Abstractions | 10.5.2 |
| Microsoft.Extensions.AI | 10.5.2 |
| Microsoft.Extensions.AI.OpenAI | 10.5.2 |

## What's Changed

### Microsoft.Extensions.VectorData.Abstractions

- Minor fixes to MEVD.Abstractions: correct `StorageName` behavior when
external serialization is enabled, and disable a warning for `net462`.
(by @​roji in [#​7475](dotnet/extensions#7475))

**Full Changelog**:
dotnet/extensions@v10.5.1...v10.5.2


## 10.5.1

Version 10.5.1 of the Microsoft.Extensions.AI packages stabilizes
CodeInterpreter, WebSearch, and ImageGeneration tool content types. The
release adds new experimental tool search and OpenAI request policy
hooks. And the OpenTelemetry gen-ai semantic conventions are updated to
align with v1.41.

The 'aiagent-webapi' project template in
Microsoft.Agents.AI.ProjectTemplates is updated to align with v1.3.0 of
Agent Framework, updating the OpenTelemetry dependencies within the
template projects as well.

## Packages in this release

| Package | Version |
|---------|---------|
| Microsoft.Extensions.AI | 10.5.1 |
| Microsoft.Extensions.AI.Abstractions | 10.5.1 |
| Microsoft.Extensions.AI.OpenAI | 10.5.1 |
| Microsoft.Extensions.AI.Templates | 10.5.1-preview.3.26251.3 |
| Microsoft.Agents.AI.ProjectTemplates | 1.3.0-preview.1.26251.3 |

## Experimental API Changes

### Now Stable

The following types previously emitted the `MEAI001` experimental
diagnostic and are now stable.

* CodeInterpreter and WebSearch tool content types are now stable #​7493
  * `CodeInterpreterToolCallContent`
  * `CodeInterpreterToolResultContent`
  * `WebSearchToolCallContent`
  * `WebSearchToolResultContent`
* ImageGeneration tool content types and tool are now stable #​7476
  * `ImageGenerationToolCallContent`
  * `ImageGenerationToolResultContent`
  * `HostedImageGenerationTool`
  * `ImageGenerationOptions`
* `ImageGenerationResponseFormat` (the `Hosted` enum value remains
experimental)
* `IImageGenerator` and the rest of the image generation infrastructure
also remain experimental

### New Experimental APIs

The following new APIs emit the `MEAI001` experimental diagnostic.

* New experimental API: `HostedToolSearchTool` with `DeferredTools` for
tool-search-driven deferred tool loading #​7471
* New experimental API: `OpenAIRequestPolicies` extension hook for
appending `System.ClientModel.PipelinePolicy` instances to outgoing
OpenAI requests #​7495

### Breaking Changes to Experimental APIs

* `WebSearchToolResultContent.Results` was renamed to `Outputs` as part
of the stabilization in #​7493, aligning with
`CodeInterpreterToolResultContent.Outputs`. The original `Results`
property was included in version 10.4.0 and 10.5.0; this is a binary
breaking change and consumers need to update to consume the updated
property.

  ```diff
  WebSearchToolResultContent content = ...;
  - IList<AIContent>? items = content.Results;
  + IList<AIContent>? items = content.Outputs;
  ```

 ... (truncated)

Commits viewable in [compare
view](dotnet/extensions@v10.5.0...v10.6.0).
</details>

Updated [MongoDB.Bson](https://github.com/mongodb/mongo-csharp-driver)
from 3.8.0 to 3.8.1.

<details>
<summary>Release notes</summary>

_Sourced from [MongoDB.Bson's
releases](https://github.com/mongodb/mongo-csharp-driver/releases)._

## 3.8.1

This is a patch release that addresses a security issue:

- [CSHARP-6034](https://jira.mongodb.org/browse/CSHARP-6034): Update
Snappier to fix a security issue
([GHSA-pggp-6c3x-2xmx](GHSA-pggp-6c3x-2xmx))

### Known warning when restoring: SharpCompress NU1902

When restoring a project that references this driver with the .NET 8 SDK
or newer, NuGet may emit the `NU1902` audit warning for the transitive
`SharpCompress 0.30.1` dependency
([GHSA-6c8g-7p36-r338](GHSA-6c8g-7p36-r338)
— directory traversal via `IArchive.WriteToDirectory()`). The driver
does not use that API; `SharpCompress` is only used for in-memory ZLib
stream compression of MongoDB wire-protocol messages, so the driver's
usage does not expose consumers to this advisory. This issue will be
addressed in an upcoming release
([CSHARP-6037](https://jira.mongodb.org/browse/CSHARP-6037)).

Documentation on the .NET driver can be found
[here](https://www.mongodb.com/docs/drivers/csharp/v3.8/).

Commits viewable in [compare
view](mongodb/mongo-csharp-driver@v3.8.0...v3.8.1).
</details>

Updated [MongoDB.Driver](https://github.com/mongodb/mongo-csharp-driver)
from 3.8.0 to 3.8.1.

<details>
<summary>Release notes</summary>

_Sourced from [MongoDB.Driver's
releases](https://github.com/mongodb/mongo-csharp-driver/releases)._

## 3.8.1

This is a patch release that addresses a security issue:

- [CSHARP-6034](https://jira.mongodb.org/browse/CSHARP-6034): Update
Snappier to fix a security issue
([GHSA-pggp-6c3x-2xmx](GHSA-pggp-6c3x-2xmx))

### Known warning when restoring: SharpCompress NU1902

When restoring a project that references this driver with the .NET 8 SDK
or newer, NuGet may emit the `NU1902` audit warning for the transitive
`SharpCompress 0.30.1` dependency
([GHSA-6c8g-7p36-r338](GHSA-6c8g-7p36-r338)
— directory traversal via `IArchive.WriteToDirectory()`). The driver
does not use that API; `SharpCompress` is only used for in-memory ZLib
stream compression of MongoDB wire-protocol messages, so the driver's
usage does not expose consumers to this advisory. This issue will be
addressed in an upcoming release
([CSHARP-6037](https://jira.mongodb.org/browse/CSHARP-6037)).

Documentation on the .NET driver can be found
[here](https://www.mongodb.com/docs/drivers/csharp/v3.8/).

Commits viewable in [compare
view](mongodb/mongo-csharp-driver@v3.8.0...v3.8.1).
</details>

Updated [SixLabors.ImageSharp](https://github.com/SixLabors/ImageSharp)
from 3.1.12 to 4.0.0.

<details>
<summary>Release notes</summary>

_Sourced from [SixLabors.ImageSharp's
releases](https://github.com/SixLabors/ImageSharp/releases)._

## 4.0.0

## What's Changed
* Update to net8 by @​stefannikolei in
SixLabors/ImageSharp#2583
* Handle dedup of local palette of 256 length - Main by
@​JimBobSquarePants in SixLabors/ImageSharp#2607
* Replace custom Crc32 by @​JimBobSquarePants in
SixLabors/ImageSharp#2611
* Sync 3.1 DrawImage fixes by @​tocsoft in
SixLabors/ImageSharp#2612
* Fix handling gif encoding for global palettes - Main by
@​JimBobSquarePants in SixLabors/ImageSharp#2615
* Bump actions/setup-dotnet from 3 to 4 by @​dependabot[bot] in
SixLabors/ImageSharp#2613
* Adjusted the casing of the Webp format name by @​jscarle in
SixLabors/ImageSharp#2623
* Fix Paeth Filter decode on platforms that do not support Ssse3 - Main
by @​JimBobSquarePants in
SixLabors/ImageSharp#2620
* Fix WebP animation speed bug by @​marklagendijk in
SixLabors/ImageSharp#2624
* Promote PixelTypeInfo to Pixel by @​stefannikolei in
SixLabors/ImageSharp#2601
* TGA: Treat 32 bit True Color images always as transparent by
@​brianpopow in SixLabors/ImageSharp#2643
* Modernize and optimize pixel format operations across platforms. by
@​JimBobSquarePants in SixLabors/ImageSharp#2645
* Cleanup SimdUtils by @​JimBobSquarePants in
SixLabors/ImageSharp#2654
* Bump actions/cache from 3 to 4 by @​dependabot[bot] in
SixLabors/ImageSharp#2648
* Bump codecov/codecov-action from 3 to 4 by @​dependabot[bot] in
SixLabors/ImageSharp#2657
* Bump NuGet/setup-nuget from 1 to 2 by @​dependabot[bot] in
SixLabors/ImageSharp#2658
* Add v3.1.x fixes #​2673 and #​2674 into main. by @​JimBobSquarePants
in SixLabors/ImageSharp#2675
* Add fixes 2668, 2676, and 2677 to main by @​JimBobSquarePants in
SixLabors/ImageSharp#2678
* Merge 2681 to v4 Main by @​JimBobSquarePants in
SixLabors/ImageSharp#2690
* Add JPEG COM marker support by @​RobertMut in
SixLabors/ImageSharp#2641
* Bump actions/upload-artifact from 3 to 4 by @​dependabot[bot] in
SixLabors/ImageSharp#2625
* Only exit JPEG scan decoding after multiple EOF hits by
@​JimBobSquarePants in SixLabors/ImageSharp#2701
* V4 Ensure VP8X alpha flag is updated correctly. by @​JimBobSquarePants
in SixLabors/ImageSharp#2703
* Fix animated png handling (issue #​2708) by @​SpaceCheetah in
SixLabors/ImageSharp#2710
* Merge latest release from v3 by @​JimBobSquarePants in
SixLabors/ImageSharp#2720
* Fix MacOS jobs by @​antonfirsov in
SixLabors/ImageSharp#2728
* Fix async-over-sync issue in Image.DecodeAsync() by @​kroymann in
SixLabors/ImageSharp#2725
* Fix overflow in MemoryAllocator.Create(options) by @​antonfirsov in
SixLabors/ImageSharp#2730
* GifDecoder: Limit lzw bits to a maximum of 12 bits by @​brianpopow in
SixLabors/ImageSharp#2744
* GifDecoder : Allow skipping bad metadata using identify by
@​JimBobSquarePants in SixLabors/ImageSharp#2749
* Add ICO and CUR file decoder. by @​frg2089 in
SixLabors/ImageSharp#2579
* v4 - Fix off-by-one error when centering a transform. by
@​JimBobSquarePants in SixLabors/ImageSharp#2761
* v4 Fix 2758 by @​JimBobSquarePants in
SixLabors/ImageSharp#2764
* Simplify Color Space Conversion APIs by @​JimBobSquarePants in
SixLabors/ImageSharp#2739
* Webp: Fix Issue 2763 by @​brianpopow in
SixLabors/ImageSharp#2767
* V4 Correctly break during Png decoding by @​JimBobSquarePants in
SixLabors/ImageSharp#2773
* V4 : Fix filtering on PNG encode. by @​JimBobSquarePants in
SixLabors/ImageSharp#2778
* Fix #​2779 buffer overrun by @​KirillAldashkin in
SixLabors/ImageSharp#2780
* Fix ImageMetadata docs typo by @​lofcz in
SixLabors/ImageSharp#2781
* Add API for metadata conversion between formats. by
@​JimBobSquarePants in SixLabors/ImageSharp#2751
* Tiff decoder: Fix issue 2679 by @​brianpopow in
SixLabors/ImageSharp#2789
* Replace PngCrcChunkHandling by @​JimBobSquarePants in
SixLabors/ImageSharp#2786
* Add tagname to debugger visualization for Exif- and Iptc-values, to
facilitate easier debugging and discovery by @​lassevk in
SixLabors/ImageSharp#2787
* V4 - Correctly handle transform spaces when building transform
matrices. by @​JimBobSquarePants in
SixLabors/ImageSharp#2795
* Allow decoding Tiff of different frame size. by @​JimBobSquarePants in
SixLabors/ImageSharp#2788
* Add progressive JPEG encoder by @​ardabada in
SixLabors/ImageSharp#2740
* Fix using dither in BmpEncoder when bit per pixel is <= 4 by @​mistoll
in SixLabors/ImageSharp#2819
* Add QuadDistortion to ProjectiveTransformBuilder by @​Socolin in
SixLabors/ImageSharp#2748
* WEBP : Use Correct Width With AlphaDecoder by @​JimBobSquarePants in
SixLabors/ImageSharp#2823
 ... (truncated)

Commits viewable in [compare
view](SixLabors/ImageSharp@v3.1.12...v4.0.0).
</details>

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: mpaulosky <60372079+mpaulosky@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants