Repository navigation
chore(deps): Update dependency ocornut/imgui to v1.93.0 - #119
Merged
Merged
Conversation
|
Important Review skippedBot user detected. To trigger a single review, invoke the ⚙️ Run configuration
You can disable this status message by setting the Use the checkbox below for a quick retry:
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. Comment |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
1.92.9→1.93.0Release Notes
ocornut/imgui
v1.93.0Compare Source
Dear ImGui v1.93.0 🎨🖌️
✋ Reading the changelog is a good way to keep up to date with whaat Dear ImGui has to offer, and will give you ideas of some features that you've been ignoring until now!
📣 If you are browsing multiple releases: click version number above to display full release note contents, otherwise it is badly clipped by GitHub!
Links: Homepage - Release notes - FAQ - Issues, Q&A. Also see our Wiki with sections such as..
Dear ImGui is funded by your contributions and absolutely needs them to sustain and grow. We can invoice and accommodate to many situations. If your company uses Dear ImGui, please reach out. See Funding page. Did you know? If you need an excuse to pay, you may buy licenses for Test Engine and buy hours of support (and cough not use them all) and that will contribute to fund Dear ImGui.
❤️ Thanks to sponsors ❤️
As well as various paid/corporate licenses to imgui_test_engine supporting the project.
News about Third-Party Projects
Check the Useful Extensions/Widgets page for many more.
Changes in v1.93.0 (since v1.92.9b)
🆘 PS: v1.92.8 contained a signature change for the trailing optional parameters of
ImDrawList::AddRect(),AddPolyline(),PathStroke(). C++ users should be notified at compile-time, but languages without type-checking may only be notified at runtime. Read v1.92.8 if using non a C++ language. Consider enablingIMGUI_DISABLE_OBSOLETE_FUNCTIONSfrom time to time to get rid of obsolete calls.In 1.93.0, the
ImDrawListrendering API has been improved to be more robust and more consistent over the whole range of shapes. The rendering now matches much closer to common vector drawing APIs, like html canvas. Improvements, like anti-aliased line endings and stroke position were added. The coordinates passed to the API are now consistently describing shape outlines.For code using custom rendering: some details are now rendered slightly differently (even if generally more consistent). The difference in rendering is in the range of half a pixel, but that can lead to issues like some lines now look blurrier or more transparent. All Dear ImGui widgets should appear identical or better.
The rendering of common shapes was optimized when the shapes fall on integer coordinates (which is most of the UI). This includes skipping anti-aliasing when not needed, or using textures instead of tessellated geometry to draw round corners. The varying code-paths are designed to look indistinguishable from each others.
New rendering code fixes some inconsistencies between graphics APIs (e.g. DirectX vs OpenGL) which are using different diamond exits rules. New code should work precisely the same regardless of which graphics API is used (note that using _StrokeLegacy mode can lead to the same old inconsistencies).
New rendering code also deals better with animating thickness and rounding (integer values are recommended).
While the current version doesn't make lots of visible use of the new features and facilities, they are among the pillars that will make it easier to create prettier contents, both for custom rendering and future versions of the library.
Use
ImDrawFlags_StrokeLegacymode to emulate old rendering:draw_list->AddLine(..., ..., ImDrawFlags_StrokeLegacy);draw_list->PushDrawFlag(ImDrawFlags_StrokeLegacy, true); draw_list->AddLine(...); draw_list->PopDrawFlag();ImGui::Checkbox("DefaultsToStrokeLegacy", &io.ConfigDebugDrawListDefaultsToStrokeLegacy); // Map to a checkboxio.ConfigDebugDrawListDefaultsToStrokeLegacy = io.KeyShift; // Map on ShiftDon't panic!
Many applications will not notice any difference! You will more likely see differences if you used lots of direct
ImDrawListcalls for custom rendering.Credits
For ImDrawList changes in 1.93.0:
Other changes:
Refer to our guides:
📘 ImDrawList Vector Rendering Reference ❤️
https://github.com/ocornut/imgui/wiki/Draw-List
(includes a precise list of differences between 1.92.9 and 1.93.0).
📘 Pixel Perfect Anti-aliased Rendering ❤️
https://github.com/ocornut/imgui/wiki/Pixel-Perfect-Rendering
📘 How Anti-aliased Polyline Rendering is Implemented ❤️
https://github.com/ocornut/imgui/wiki/Polyline-Rendering
🗨️ Discussion topic #9504
(if you have a problem to discuss, please open a new issue)
🔍 Interactive 1.92.9 vs 1.93 Troubleshooting / Testbed w/ commentary ❤️
https://www.dearimgui.com/docs/drawlist_v193
Breaking Changes
ImDrawList:
AddLine(): removed the (+0.5f,+0.5f) offset that was sneakily added to input coordinates. (#9504)AddLine()is not used that often and many won't immediately notice the difference.ImDrawFlags_StrokeLegacyto use old offset if required. Or you can apply the offset manually!AddLineH(),AddLineV()functions added in 1.92.8.AddLine():AddLine()values toAddLineV(),AddLineH()you can keep same inputs coordinates as before:AddLine({x, y1}, {x, y2}, col)-->AddLineV(x, y1, y2, col);// Vertical line.AddLine({x1, y}, {x2, y}, col)-->AddLineH(x1, x2, y, col);// Horizontal line.AddLine()use default stroke pos Center andAddLineV(),AddLineH()use Inside, thickness>1.0f strokes will differ. UsingImDrawFlags_StrokeCenterwill match old result more closely (aka look centered), but is more likely to look blurry as it already did before.AddLine({x1, y1}, {x2, y2}, col)-->AddLine({x1 + 0.5f, y1 + 0.5f}, {x2+ 0.5f, y2 + 0.5f}, col);// SameImDrawFlags_StrokeLegacy-->AddLine({x1, y1}, {x2, y2}, col, thickness, ImDrawFlags_StrokeLegacy); // Offset by +0.5f + disable AA ends.AddPolyline(). There is a possibility that you legacy code added fudge offsets here and there; which may not be necessary anymore if you use_AALineEnds, or if you combine rendering of contiguous lines usingAddPolyline().AddRect(),AddCircle(),AddNgon(),AddEllipse(),AddTriangle(),AddQuad(): defaulting to "inside" stroke.AddCircle(),AddNgon(): removed -0.5f offset added to radius.ImDrawFlags_StrokeLegacyto use old method if required. Or you can apply the offset manually!AddRectFilled(): non-integer coordinates will now display anti-aliased edges. Previously, non-integer coordinates rendered with aliased edges snapped by the rasterizer. (#6971)AddRect(),AddRectFilled(): rectangles with inverted coordinates won't be visible unless usingImDrawFlags_StrokeLegacymode. With inverted coordinates (min > max):AddRect()rounding off -> visible but incorrect outer size.AddRect()rounding on -> visible but very glitchy.AddRectFilled()rounding off -> visible and correct.AddRectFilled()rounding on -> visible but very glitchy.ImDrawFlags_StrokeLegacyto use old rendering for cases without rounding, or fix coordinates.ImDrawListFlagsintoImDrawFlags.ImDrawListFlagswas rarely used directly and generally setup by the ImGui context. Unifying them allows easily using them for both per-primitives and scope alterations. Kept redirection enums (will obsolete).ImDrawListFlags_AntiAliasedLines->ImDrawFlags_AALinesImDrawListFlags_AntiAliasedFill->ImDrawFlags_AAFillImDrawListFlags_AllowVtxOffset->ImDrawFlags_UseVtxOffsetImDrawListFlags_TextNoPixelSnap->ImDrawFlags_TextNoPixelSnapImDrawFlags_RoundCornersXXXflags toImDrawFlags_RoundXXX. Kept redirection enums (will obsolete).ImDrawFlags_RoundCornersAll->ImDrawFlags_RoundAllImDrawFlags_RoundCornersNone->ImDrawFlags_RoundNoneImDrawFlags_RoundCornersTopLeft->ImDrawFlags_RoundTopLeftImDrawFlags_RoundCornersTopRight->ImDrawFlags_RoundTopRightImDrawFlags_RoundCornersBottomLeft->ImDrawFlags_RoundBottomLeftImDrawFlags_RoundCornersBottomRight->ImDrawFlags_RoundBottomRightImDrawFlags_RoundCornersTop->ImDrawFlags_RoundTopImDrawFlags_RoundCornersBottom->ImDrawFlags_RoundBottomImDrawFlags_RoundCornersLeft->ImDrawFlags_RoundLeftImDrawFlags_RoundCornersRight->ImDrawFlags_RoundRightImDrawListFlags_AntiAliasedLinesUseTexandstyle.AntiAliasedLinesUseTexas obsolete, as the new line rendering code always uses textures.ImFontAtlasFlags_NoBakedLinesin the font atlas will now disable support for anti-aliased lines by clearingstyle.AntiAliasedLines/style.AntiAliasedLineEnds.Style:
style.CurveTessellationTol(default 1.25) which was in Pixels² unit in favor ofstyle.CurveTessellationMaxError(default 1.12) which is in Pixels unit. It is easier to tweak + this allows us to easily scale error threshold on high density screens.style.CurveTessellationMaxError == sqrtf(style.CurveTessellationTol).ImGuiTextFilter:
float widthparameter ofDraw(const char* filter, float width): prefer usingSetNextItemWidth(float)which is standard. Kept inline redirection function.Fonts:
AddRemapChar()toAddRemapCodepoint()(rarely used, marked internal). (#609, #5748, #9559)Backends:
ImGui_ImplDX12_Init()signature, which was obsoleted in 1.91.6 (December 2014), because it needed to forcefully disable support forImGuiBackendFlags_RendererHasTextures. Use the new signature! (#9487)GL_CLIP_ORIGINby default as the detection is sub-optimal and not reliable on some setup. UseImGui_ImplOpenGL3_SetClipOrigin(0)to enable auto-detection, or e.g.ImGui_ImplOpenGL3_SetClipOrigin(GL_UPPER_LEFT).Other Changes
Style:
ImGuiCol_TitleBgXXXcolors so that the selected window title bar appears brighter.DrawList:
ImDrawListstroking functions: (#9504) [@memononen]ImDrawFlags_StrokeInside(default for Rect, Circle/Ellipse, Triangle, Quad, Ngon + AddLineH, AddLineV)ImDrawFlags_StrokeCenter(default for Line, Polyline, Beziers, Paths function)ImDrawFlags_StrokeCenterBiased(center w/ bias for pixel perfect alignment)ImDrawFlags_StrokeOutsideImDrawFlags_StrokeLegacy(match old behavior)PushDrawFlag(ImDrawFlags_StrokeLegacy, true).Read our Wiki guides for more details! https://github.com/ocornut/imgui/wiki/Draw-List
Troubleshoot with our interactive 1.92.9 vs 1.93.0 comparing testbed: https://www.dearimgui.com/docs/drawlist_v193
io.ConfigDebugDrawListDefaultsToStrokeLegacyto facilitate comparing old/new behaviors. This is equivalent to callingPushDrawFlag(ImDrawFlags_StrokeLegacy, true)on every drawlists. Suggested uses:io.ConfigDebugDrawListDefaultsToStrokeLegacy = io.KeyShift; // Map on holding ShiftImGui::Checkbox("DefaultsToStrokeLegacy", &io.ConfigDebugDrawListDefaultsToStrokeLegacy);ImDrawFlags_AALineEndsflag to enable anti-aliased line ends.style.AntiAliasedLineEndsin ImGui to set default state.PushDrawFlag().ImDrawFlags_JoinMiterflag to disable using beveled corner.AddRect(),AddCircle(),AddNgon(),AddEllipse()functions since we know that the input path does not contain sharper corners.ImDrawFlags_CapSquareflag to extend lines ends using square caps. (#9360)AddConvexPolyFilled()/PathFillConvex(): improved to handle input geometry more robustly. The rendering of sharp corners was improved. Earlier there were issues with sharp corners either creating long spikes, or messing up the adjacent edge's anti-aliasing. Now the anti-aliasing fringe calculation is more consistent, and sharp corners get beveled to avoid spikes. There might still be issues when the smallest extent of a long thin polygon is less than a pixel. Also supportsImDrawFlags_JoinMiter, to facilitate matching a stroke using the same flag. [@memononen]AddRect(),AddRectFilled(): various optimizations for rounded rectangles. (#1962, #9504)ImFontAtlasFlags_NoBakedRoundCornersto disable baking round corners in font atlas.ImDrawFlags_UseTexForRoundCornersflag to enable in scope or per-shape. Added for consistency and debugging, not really needed in practice.AddCircle(),AddCircleFilled(): fixed large circles being under-tessellated (when above ~140 with defaultCircleTessellationMaxError).For example, when using inside strokes,
AddRect()andAddRectFilled()with rounding now overlap better. (#3656)AddCircle()andAddCircleFilled()now overlap better.ImDrawList. (#9489)PushDrawFlag(ImDrawFlags_StrokeLegacy, true);enforce legacy tweaks.ImDrawFlags_StrokeLegacy:ImDrawFlags_StrokeCenter.AddLine()add +0.5f,+0.5f offset to position.AddRect()andAddRectFilled()allow inverted positions.AddRectFilled()has no AA when passed non-integer coordinates.AddCircle(),AddNgon()add a -0.5f offset to radius.FramebufferScalefor Apple/Retina screen is applied to draw lists:PushTexture()to allow convenience grace period of using a texture that was queue for destroy during the frame. Make it safe to stick to an existing texture during the frame. (#9528, #8465)platform_io.DrawCallback_SetSamplerFromTexstandard backend-agnostic draw callback for requesting to use the sampler associated already associated to a texture. Currently only supported by the OpenGL2/3 and SDLRenderer3 backend. (#9378)ImDrawList::_OwnerNamewhen using animated label. (#9552) [@ubi-dcastonguay]Mixed Values:
ImGuiItemFlags_MixedValueflag for representing mixed/indeterminate values. Supported by: Checkbox(), RadioButton(), DragXXX(), SliderXXX(), InputXXX(), ColorXXX() and Combo() functions. The scoped flag is designed for usage by advanced property editors. (#5518, #5677, #6865)Drags, Sliders:
ImGuiSliderFlags_Logarithmicwith S32/S64 types which leads to clamped interactions. (#9526, #3361, #1823, #1316, #642) [@lailoken]Tree Nodes:
ImGuiTreeNodeFlags_DrawLinesXXXfeatures or other features requiring stack storage. (#9509) [@lasrod]Tab Bars:
<>scrolling buttons while the selected Tab is at either end of the section mid-section but not fully visible always makes it fully visible (before eventually selecting a Tab in the leading/trailing section).Tables:
InputText:
Selectable:
ImGuiSelectableFlags_SelectOnNavtriggering during NavInit.Fonts:
AddFontDefault()to useio.DisplayFrameBufferScaleas part of the heuristic to selectAddFontDefaultVector()by default, effectively using ProggyForever instead of ProggyClean on most Apple/Retina setups by default.ImFont::AddRemapCodepointToGlyphIndex()allowing to access glyphs that are not mapped to codepoints. (#9559, #5647, #609, #5748, #8466)AddFontDefaultVector(). Caused by a non-pixel aligned offset caused byExtraSizeScale. (#9348, #9233) [@redpartizan, @RDMCz]FontSrcContainsGlyph,FontBakedLoadGlyphsignatures to take raw glyph index instead of codepoint. AddedFontSrcGetGlyphIndexFromCodepoint. (#9559, #5647, #9540, #8466, #8465)IMGUI_DISABLE_STB_TRUETYPEto completely omit the stb_truetype loader code + stb_truetype.h code. (#9573)ColorEdit:
ColorButton(),ColorEdit4(),ColorPicker4(): cancel-out alpha caused byBeginDisabled()so disabled color buttons have the same color as non-disabled ones. (#9511)ColorButton(): fixed issues/inconsistencies with checkerboard rendering when combining color alpha and global style alpha. (#9511) [@enjmiah, @ocornut]Popups:
GetMousePosOnOpeningCurrentPopup()to be legal to call within theBeginPopup()/EndPopup()scope of a popup which was just closed. (#9551) [@jkunstwald]ImGuiTextFilter:
DrawWithHint()function. (#6206, #6395, #6447)Widgets:
Misc:
GetBackgroundDrawList()/GetForegroundDrawList()not being properly reset every frame when accumulated session time is very large (e.g. a few days). [@lailoken]IM_NODEBUGSTEPhelper to tag functions with__declspec(non_user_code)(MSVC) or[[gnu::artificial]](Clang/GCC) in order to provide a hint to debuggers to skip trivial functions when stepping into.IM_NODEBUGSTEP:ImVec2(),ImVec4()etc. and various operators.ImHashData()affecting Clang 23 + SSE 4.2 + -flto. Could manifest asImFontAtlasBakedGetId()computation omitting font size from the hashed data. (#9557, #9560) [@sthalik]ClearPlatformHandlers(), fixing issues switching backends mid-session to one relying on default. (#9537, #8945, #2769) [@lstalmir]Demo:
Widgets->Mixed Valuessection. (#5518, #5677, #6865)Backends:
platform_io.DrawCallback_SetSamplerFromTexdraw callback to request using the sampler associated already associated to a texture. (#9378)DrawCallback_ResetRenderStatehandler not resetting all states in the glTexParameter() path. (#9378)ImGui_ImplOpenGL3_SetClipOrigin()to specify origin betweenGL_LOWER_LEFT(new default),GL_UPPER_LEFTand0(autodetect, old default).glGetIntegerv(GL_CLIP_ORIGIN)multiple times when using when using default and usingDrawCallback_ResetRenderState, at it appear to stall some drivers. (#2186, #3998, #3146, #3143, #8640)RenderDrawData(). (#9378)CurrentScaleModeinImGui_ImplSDLRenderer3_RenderState. (#9543, #9378) [@Clownacy]platform_io.DrawCallback_SetSamplerFromTexdraw callback to request using the sampler associated already associated to a texture viaSDL_SetTextureScaleMode(). (#9378) It is equivalent to settingrender_state->CurrentScaleMode = SDL_SCALEMODE_INVALID. Note: this callback is only supported by selected rendering backends: most other graphics API don't have the equivalent ofSDL_SetTextureScaleMode()and the callback won't work with them.wgpuRenderPassEncoderSetViewport()whenFramebufferScaleis >1.0f. (#9515, #8628) [@WayU]Changes from 1.92.9b to 1.93.0 specific to the Docking+Multi-Viewports branch:
git tag: v1.93.0-docking
Docking+Viewports Branch:
ImGuiCol_DockingEmptyBgvalue in dark/light styles.CreateSwapChain()orCreateRenderTargetView()calls are failing. (#9546) [@lailoken]Gallery
@markaren threepp: "A cross-platform C++20 3D library with the high-level API of three.js — and modern backends: portable OpenGL, and a deferred Vulkan renderer with ray-traced accents."

https://github.com/markaren/threepp
@Stiiv: Poietic Playground – "modelling and simulation application for Stocks and Flows. Tech details: Using ImGui from Swift through native C++ bindings (no wrapper package), SDL backend, rendering of the canvas content through Cairo."

https://github.com/openpoiesis/poietic-playground
@sindney: "This is my WIP vibe game engine https://github.com/sindney/fury3d, picked up with vibe coding from a 9 year old code base."

@csclyde: "The texture atlas packer I made in Zig with Dear ImGui, called Packrat. I also built a ton of internal tooling for my game, Cursemark, with Dear ImGui. Great technology, thanks for making it."

Assurance Forge _"is an open-source safety case engineering tool built around SACM 2.3, with GSN visualization, automatic layout, and AI-assisted review against the Safety Case Core Guidelines."

https://www.assurance-forge.com, https://github.com/lasrod/assurance-forge
SuperDex Studio
https://github.com/facebookresearch/project_superdex
Homepage: https://projectsuperdex.com/studio/ / Video: https://projectsuperdex.com/studio/docs/overview/
Overview.SuperDex.Studio.1.overview-1.mp4
Kapi Engine

https://x.com/toncijukic/status/2094426446252970312
https://kapiengine.com/
@hyblocker: Space Calibrator 2.0 "a rewrite of Space Calibrator. Update includes updated UI (using Dear ImGUI of course)"

https://store.steampowered.com/app/3368750/Space_Calibrator, https://github.com/hyblocker/OpenVR-SpaceCalibrator
more screenshots
@Mewiof: "Free & open source Ableton alternative"

https://github.com/Mewiof/MSDAW (MIT)
@eliasdaler: _"It’s so convenient to use Dear ImGui with a mouse directly on Sega Dreamcast to setup environment colors. 😍"
https://bsky.app/profile/eliasdaler.bsky.social/post/3mv3j2n4mtc2s
Dreamcast.mp4
Pulsarus for Active USB Ultrasound Probes


Homepage: https://vermon.com/oem-usb-probe/
Brochure: https://decel.univ-tours.fr/data/presentations/BrochureDkpocV17.pdf
@ValentineShilov: WebRemoteImgui: "C++ library and example that brings Dear ImGui to the web. It executes all application logic on the server and streams the UI to any modern web browser using WebGL, while piping user interactions back in real-time. Features per-user sessions, making it ideal for remote monitoring, headless server dashboards, and cloud-based C++ tools."


https://github.com/ValentineShilov/webremoteimgui
Private dashboard created using this library:
@auygun: Gel is a cross-platform, gitk-like graphical git repository browser.


https://github.com/auygun/gel
camomill is an application for generating 5-axis toolpaths for CNC machines. It aims to be a cost-effective (buy once, perpetual license) Computer-Aided Manufacturing (CAM) tool with a focus on the 5-axis operations that are traditionally reserved for very expensive industrial-grade software suites.

https://gustavolsson.itch.io/camomill
ceasta: a reverse engineering tool (disassembler, decompiler, debugger)

https://github.com/ngwg/ceasta
"win32 + dx11 on windows, glfw + opengl3 on linux and macos (the mac build is one universal .app; the window works in points and 1.92's dynamic fonts render at the retina density). a plain fixed layout with splitters instead of docking, ImGuiListClipper for the listing and every table, the function graph drawn with ImDrawList, and a command palette for every action. three themes: dark, light and high contrast."
@ExtasyHosting: "Custom firmware on a FlySky TX. It’s always a pleasure getting ImGui running on embedded hardware"


more screenshots
@sse2: hammer knockoff for my game engine. quite happy with how it turned out (still very wip)"

MeshInspector seems to be using a modded version of Dear ImGui

https://meshinspector.com
Web version https://app.meshinspector.com, OSS part https://github.com/MeshInspector/MeshLib
Only part of it is open-source, eg. the MRViewer which seems to be a simpler app:
Misc helpers https://github.com/MeshInspector/MeshLib/blob/master/source/MRViewer/ImGuiHelpers.cpp
As well as SmileInspector https://smileinspector.io/

@abdullahoday710: "Particle system editor for my game engine"

@AnthonyBall1966: Deluxe Pixel

https://kage.games/dpixel
@Zaryob: ImShark — a packet analyzer built with Dear ImGui

"I started ImShark in 2023 as a small project to learn how network packets and protocols work, using Dear ImGui to inspect them visually. Over time, it grew into a Wireshark-inspired desktop application, with live packet capture alongside offline capture analysis."
https://github.com/Zaryob/imshark
...More in gallery threads.
Also see previous releases details.
Note that GitHub are now clamping release notes sometimes really badly, click on a header/title to read full notes.
💰 🙏 Dear ImGui is funded by your contributions and absolutely needs them to sustain and grow. We can invoice and accommodate to many situations. If your company uses Dear ImGui, please reach out. See Funding page. Did you know? If you need an excuse to pay, you may buy licenses for Test Engine and buy hours of support (and cough not use them all) and that will contribute to fund Dear ImGui.
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate CLI.