This repository has been archived by the owner on Jan 3, 2024. It is now read-only.
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:
v3
->v4
v3
->v4
7.6.1
->8.5
1.4.4
->1.5.5
1.0.0
->1.2.0
1.8.0
->1.10.0
2.6.1
->2.6.2
1.8.10
->1.9.21
1.180.0
->1.190.0
2023.04.00
->2023.10.01
1.10.0
->1.12.0
7.4.2
->8.1.4
7.4.2
->8.1.4
1.7.0
->1.8.1
Release Notes
actions/checkout (actions/checkout)
v4
Compare Source
actions/setup-java (actions/setup-java)
v4
Compare Source
gradle/gradle (gradle)
v8.5
Compare Source
v8.4
: 8.4Compare Source
The Gradle team is excited to announce Gradle 8.4.
Amongst other improvements, this release addresses two security vulnerabilities:
Read the Release Notes
We would like to thank the following community members for their contributions to this release of Gradle:
Ahmed Ehab,
Andrei Rybak,
Baptiste Decroix,
Björn Kautler,
Cesar de la Vega,
Ganavi Jayaram,
Gaurav Padam,
hwanseok,
J.T. McQuigg,
Jakub Chrzanowski,
Jendrik Johannes,
kackey0-1,
Konstantin Gribov,
Pratik Haldankar,
Qinglin,
Sebastian Schuberth,
Thad House,
valery1707,
Vladimir Sitnikov,
wuyangnju,
Yanming Zhou,
Yanshun Li,
Yusuke Uehara,
zeners
Upgrade instructions
Switch your build to use Gradle 8.4 by updating your wrapper:
Reporting problems
If you find a problem with this release, please file a bug on GitHub Issues adhering to our issue guidelines.
If you're not sure you're encountering a bug, please use the forum.
We hope you will build happiness with Gradle, and we look forward to your feedback via Twitter or on GitHub.
v8.3
: 8.3Compare Source
The Gradle team is excited to announce Gradle 8.3.
Read the Release Notes
We would like to thank the following community members for their contributions to this release of Gradle:
Adam,
Ahmed Ehab,
Aurimas,
Baptiste Decroix,
Björn Kautler,
Borewit,
Korov,
Mohammed Thavaf,
Patrick Brückner,
Philip Wedemann,
Róbert Papp,
Shi Chen,
Tony Robalik
Upgrade instructions
Switch your build to use Gradle 8.3 by updating your wrapper:
Reporting problems
If you find a problem with this release, please file a bug on GitHub Issues adhering to our issue guidelines.
If you're not sure you're encountering a bug, please use the forum.
We hope you will build happiness with Gradle, and we look forward to your feedback via Twitter or on GitHub.
v8.2.1
Compare Source
v8.2
: 8.2Compare Source
The Gradle team is excited to announce Gradle 8.2.
Amongst other improvements, this release addresses two security vulnerabilities:
Read the Release Notes
We would like to thank the following community contributors for their contributions to this release of Gradle:
Bruno Didot,
Eric Vantillard,
esfomeado,
Jendrik Johannes,
Jonathan Leitschuh,
Lee Euije,
Stefan Oehme,
Todor Dinev,
Yanshun Li
Upgrade instructions
Switch your build to use Gradle 8.2 by updating your wrapper:
./gradlew wrapper --gradle-version=8.2
Reporting problems
If you find a problem with this release, please file a bug on GitHub Issues adhering to our issue guidelines.
If you're not sure you're encountering a bug, please use the forum.
We hope you will build happiness with Gradle, and we look forward to your feedback via Twitter or on GitHub.
v8.1.1
: 8.1.1Compare Source
This is a patch release for Gradle 8.1. We recommend using 8.1.1 instead of 8.1.
It fixes the following issues:
Read the Release Notes
Upgrade Instructions
Switch your build to use Gradle 8.1.1 by updating your wrapper:
See the Gradle 8.x upgrade guide to learn about deprecations, breaking changes and other considerations when upgrading to Gradle 8.1.1.
Reporting Problems
If you find a problem with this release, please file a bug on GitHub Issues adhering to our issue guidelines.
If you're not sure you're encountering a bug, please use the forum.
v8.1
: 8.1Compare Source
The Gradle team is excited to announce Gradle 8.1.
Read the Release Notes
We would like to thank the following community contributors for their contributions to this release of Gradle:
André Sousa,
Attila Király,
Aurimas,
Björn Kautler,
Christoph Dreis,
David Morris,
DJtheRedstoner,
Gabriel Feo,
J.T. McQuigg,
JavierSegoviaCordoba,
JayaKrishnan Nair K,
Jeff Widman,
kackey0-1,
Martin Bonnin,
Martin Kealey,
modmuss50,
pan93412,
Sebastian Schuberth,
Simon Marquis,
TheDadda,
Thrillpool,
valery1707,
Xin Wang,
Yanshun Li
Upgrade instructions
Switch your build to use Gradle 8.1 by updating your wrapper:
./gradlew wrapper --gradle-version=8.1
Reporting problems
If you find a problem with this release, please file a bug on GitHub Issues adhering to our issue guidelines.
If you're not sure you're encountering a bug, please use the forum.
We hope you will build happiness with Gradle, and we look forward to your feedback via Twitter or on GitHub.
v8.0.2
: 8.0.2Compare Source
The Gradle team is excited to announce Gradle 8.0.2.
This is the second patch release for Gradle 8.0. We recommend using 8.0.2 instead of 8.0.
It fixes the following issues:
JavaCompile
Issues fixed in the first patch release:
target
flag--no-rebuild
suddenly gone without new deprecation cycle and without the reason for its undeprecation being voidRead the Release Notes
Upgrade Instructions
Switch your build to use Gradle 8.0.2 by updating your wrapper:
See the Gradle 7.x upgrade guide to learn about deprecations, breaking changes and other considerations when upgrading to Gradle 8.0.2.
Reporting Problems
If you find a problem with this release, please file a bug on GitHub Issues adhering to our issue guidelines.
If you're not sure you're encountering a bug, please use the forum.
v8.0.1
: 8.0.1Compare Source
This is a patch release for 8.0. We recommend using 8.0.1 instead of 8.0.
It fixes the following issues:
target
flag--no-rebuild
suddenly gone without new deprecation cycle and without the reason for its undeprecation being voidRead the Release Notes
Upgrade Instructions
Switch your build to use Gradle 8.0.1 by updating your wrapper:
See the Gradle 7.x upgrade guide to learn about deprecations, breaking changes and other considerations when upgrading to Gradle 8.0.1.
Reporting Problems
If you find a problem with this release, please file a bug on GitHub Issues adhering to our issue guidelines.
If you're not sure you're encountering a bug, please use the forum.
v8.0
: 8.0Compare Source
The Gradle team is excited to announce Gradle 8.0
Read the Release Notes
We would like to thank the following community members for their contributions to this release of Gradle:
Abdul Rauf,
Andrei Nevedomskii,
aSemy,
Ben Cox,
Björn Kautler,
bodhili,
Cédric Champeau,
Christoph Dreis,
Clara Guerrero Sánchez,
David Marin Vaquero,
David Morris,
Denis Buzmakov,
Dmitry Pogrebnoy,
Dzmitry Neviadomski,
Eliezer Graber,
Eric Pederson,
Fedor Ihnatkevich,
Gabriel Rodriguez,
Herbert von Broeuschmeul,
Hyeonmin Park,
Jeff,
Jendrik Johannes,
Korov,
Marcono1234,
Madhead,
Mariell Hoversholm,
Matthew Haughton,
Matthias Ernst,
Michael Bailey,
Michael Ernst,
Michael Torres,
Pankaj,
prasad-333,
RicardoJiang,
Siddardha Bezawada,
Stephen Topley,
Victor Maldonado,
Vinay Potluri,
Xin Wang.
Upgrade instructions
Switch your build to use Gradle 8.0 by updating your wrapper:
./gradlew wrapper --gradle-version=8.0
See the Gradle 7.x upgrade guide to learn about deprecations, breaking changes and other considerations when upgrading to Gradle 8.0.
For Java, Groovy, Kotlin and Android compatibility, see the full compatibility notes.
Reporting problems
If you find a problem with this release, please file a bug on GitHub Issues adhering to our issue guidelines.
If you're not sure you're encountering a bug, please use the forum.
We hope you will build happiness with Gradle, and we look forward to your feedback via Twitter or on GitHub.
v7.6.3
: 7.6.3Compare Source
This is a patch release for 7.6. We recommend using 7.6.3 instead of 7.6.
This release addresses two security vulnerabilities:
It also fixes the following issues:
Read the Release Notes
Upgrade Instructions
Switch your build to use Gradle 7.6.3 by updating your wrapper:
See the Gradle 7.x upgrade guide to learn about deprecations, breaking changes and other considerations when upgrading to Gradle 7.6.3.
Reporting Problems
If you find a problem with this release, please file a bug on GitHub Issues adhering to our issue guidelines.
If you're not sure you're encountering a bug, please use the forum.
v7.6.2
: 7.6.2Compare Source
This is a patch release for 7.6. We recommend using 7.6.2 instead of 7.6.
This release addresses two security vulnerabilities:
It also fixes the following issues:
Read the Release Notes
Upgrade Instructions
Switch your build to use Gradle 7.6.2 by updating your wrapper:
See the Gradle 7.x upgrade guide to learn about deprecations, breaking changes and other considerations when upgrading to Gradle 7.6.2.
Reporting Problems
If you find a problem with this release, please file a bug on GitHub Issues adhering to our issue guidelines.
If you're not sure you're encountering a bug, please use the forum.
androidx/media (androidx.media3:media3-exoplayer)
v1.2.0
Compare Source
This release includes the following changes since the
1.1.1 release:
@Nullable Throwable
parameter to the methods in theLog.Logger
interface. The
message
parameter to these methods no longer containsany information about the
Throwable
passed to theLog.{d,i,w,e}()
methods, so implementations will need to manually append this
information if desired (possibly using
Logger.appendThrowableString(String, Throwable)
).and nullable array element types are not detected as nullable. Examples
are
TrackSelectorResult
andSimpleDecoder
method parameters(#6792).
Util.shouldShowPlayButton
to show a "play" button while playback istemporarily suppressed (e.g. due to transient audio focus loss). The
legacy behavior can be maintained by using
PlayerView.setShowPlayButtonIfPlaybackIsSuppressed(false)
orMediaSession.Builder.setShowPlayButtonIfPlaybackIsSuppressed(false)
(#11213).
androidx.annotation:annotation-experimental
to1.3.1
to fixhttps://issuetracker.google.com/251172715.
ExoPlayer.setAudioAttributes
to thePlayer
interface.samples correctly
(#11000).
built-in speaker on Wear OS devices) when this feature is enabled via
ExoPlayer.Builder.setSuppressPlaybackOnUnsuitableOutput
. The playbacksuppression reason will be updated as
Player.PLAYBACK_SUPPRESSION_REASON_UNSUITABLE_AUDIO_OUTPUT
if playbackis attempted when no suitable audio outputs are available, or if all
suitable outputs are disconnected during playback. The suppression
reason will be removed when a suitable output is connected.
MediaSource.canUpdateMediaItem
andMediaSource.updateMediaItem
to accept
MediaItem
updates after creation viaPlayer.replaceMediaItem(s)
.MediaItem
updates for allMediaSource
classes provided by thelibrary via
Player.replaceMediaItem(s)
(#33,
#9978).
MimeTypes.TEXT_EXOPLAYER_CUES
toMimeTypes.APPLICATION_MEDIA3_CUES
.PngExtractor
that sends and reads a whole PNG file into theTrackOutput
as one sample.SequenceableLoader.continueLoading(long)
method in theSequenceableLoader
interface toSequenceableLoader.continueLoading(LoadingInfo loadingInfo)
.LoadingInfo
contains additional parameters, includingplaybackSpeed
and
lastRebufferRealtimeMs
in addition to the existingplaybackPositionUs
.ChunkSource.getNextChunk(long, long, List, ChunkHolder)
methodin the
ChunkSource
interface toChunkSource.getNextChunk(LoadingInfo, long, List, ChunkHolder)
.starvation (
bs
), deadline (dl
), playback rate (pr
) and startup(
su
) (#8699).ColorInfo
(#491).
object request (
nor
) and next range request (nrr
)(#8699).
query parameters (#553).
ConcurrentModificationException
inExperimentalBandwidthMeter
(#612).
MediaPeriodId
parameter toCompositeMediaSource.getMediaTimeForChildMediaTime
.ClippingMediaSource
(and other sources with period/window timeoffsets) in
ConcatenatingMediaSource2
(#11226).
BaseRenderer.onStreamChanged()
to also receive aMediaPeriodId
argument.TransformationRequest.HdrMode
annotation type and itsassociated constants. Use
Composition.HdrMode
and its associatedconstants instead.
OverlaySettings
to fix rotation issues.frameRate
anddurationUs
parameters ofSampleConsumer.queueInputBitmap
toTimestampIterator
.DefaultTrackSelector.Parameters.allowAudioNonSeamlessAdaptiveness
to explicitly allow or disallow non-seamless adaptation. The default
stays at its current behavior of
true
.unit of a stream to the sample queue
(#7909).
rotationDegrees
. ChangedprojectionPosePitch
toprojectionPoseRoll
(#461).
Extractor
instances can be directlyinspected with
instanceof
. If you want runtime access to theimplementation details of an
Extractor
you must first callExtractor.getUnderlyingInstance
.BmpExtractor
.WebpExtractor
.HeifExtractor
.QuickTime classic
support to
Mp4Extractor
.PCM encoding for
lpcm
in MP4.AudioSink.getFormatOffloadSupport(Format)
that retrieves level ofoffload support the sink can provide for the format through a
DefaultAudioOffloadSupportProvider
. It returns the newAudioOffloadSupport
that containsisFormatSupported
,isGaplessSupported
, andisSpeedChangeSupported
.AudioSink.setOffloadMode()
through which the offload configurationon the audio sink is configured. Default is
AudioSink.OFFLOAD_MODE_DISABLED
.setAudioOffloadPreference
inTrackSelectionParameters
. If the set preference is to enable, thedevice supports offload for the format, and the track selection is a
single audio track, then audio offload will be enabled.
audioOffloadModePreference
is set toAUDIO_OFFLOAD_MODE_PREFERENCE_REQUIRED
, then theDefaultTrackSelector
will only select an audio track and only if thattrack's format is supported in offload. If no audio track is supported
in offload, then no track will be selected.
playback position issue after track transition.
enableOffload
fromDefaultRenderersFactory.buildAudioSink
method signature.DefaultAudioSink.Builder.setOffloadMode
.DefaultAudioSink.OffloadMode.OFFLOAD_MODE_ENABLED_GAPLESS_DISABLED
.(#627).
ExoPlayer.experimentalSetOffloadSchedulingEnabled
andAudioOffloadListener.onExperimentalOffloadSchedulingEnabledChanged
.onExperimentalSleepingForOffloadChanged
asonSleepingForOffloadChanged
andonExperimentalOffloadedPlayback
asonOffloadedPlayback
.TrackSelectionParameters
interfacesand definitions to an inner
AudioOffloadPreferences
class.onAudioTrackInitialized
andonAudioTrackReleased
callbacks toAnalyticsListener
,AudioRendererEventListener
andAudioSink.Listener
.(#650).
IllegalArgumentException
(#677).
MediaCodecVideoRenderer
to use a customVideoFrameProcessor.Factory
.starts with negative timestamps
(#291).
ExoplayerCuesDecoder
. Text tracks withsampleMimeType = application/x-media3-cues
are now directly handled byTextRenderer
without needing a
SubtitleDecoder
instance.MetadataDecoder.decode
will no longer be called for "decode-only"samples as the implementation must return null anyway.
VideoFrameProcessor.queueInputBitmap(Bitmap, Iterator<Long>)
queuing bitmap input by timestamp.
VideoFrameProcessor.registerInputStream()
to be non-blocking.Apps must implement
VideoFrameProcessor.Listener#onInputStreamRegistered()
.frameRate
anddurationUs
parameters ofVideoFrameProcessor.queueInputBitmap
toTimestampIterator
.in a playlist can throw an exception
(#571).
AdsLoader.destroy()
FOREGROUND_SERVICE_IMMEDIATE
inDefaultMediaNotificationProvider
(#167).
android.media.session.MediaSession.setMediaButtonBroadcastReceiver()
above API 31 to avoid problems with deprecated API on Samsung devices
(#167).
and custom layout used to populate the notification and the platform
session.
MediaSessionService.onStartCommand()
within Media3 instead of routingthem to the platform session and back to Media3. With this, the caller
controller is always the media notification controller and apps can
easily recognize calls coming from the notification in the same way on
all supported API levels.
MediaController.getCurrentPosition()
is not advancingwhen connected to a legacy
MediaSessionCompat
.MediaLibrarySession.getSubscribedControllers(mediaId)
forconvenience.
MediaLibrarySession.Callback.onSubscribe()
to assert theavailability of the parent ID for which the controller subscribes. If
successful, the subscription is accepted and
notifyChildrenChanged()
is called immediately to inform the browser
(#561).
Android Auto.
COMMAND_GET_TIMELINE
is not available for the media notificationcontroller. With Android Auto as the client controller reading from the
framework session, this has the effect that the
queue
button in the UIof Android Auto is not displayed
(#339).
DataSourceBitmapLoader
by default instead ofSimpleBitmapLoader
(#271,
#327).
MediaSession.Callback.onMediaButtonEvent(Intent)
that allows appsto override the default media button event handling.
Player.Listener
implementation for Wear OS devices that handlesplayback suppression due to
Player.PLAYBACK_SUPPRESSION_REASON_UNSUITABLE_AUDIO_OUTPUT
bylaunching a system dialog to allow a user to connect a suitable audio
output (e.g. bluetooth headphones). The listener will auto-resume
playback if a suitable device is connected within a configurable timeout
(default is 5 minutes).
DownloadService
forAndroid 14 compatibility. When using this service, the app also needs to
add
dataSync
asforegroundServiceType
in the manifest and add theFOREGROUND_SERVICE_DATA_SYNC
permission(#11239).
load start time rather than the last load completed time
(#663).
has better support for merging overlapping subtitles, including
resolving flickering when transitioning between subtitle segments. You
can enable this using
DashMediaSource.Factory.experimentalParseSubtitlesDuringExtraction()
(#288).
IndexOutOfBoundsException
whenfalling back to TCP, or playback hanging in some situations.
RtspMediaPeriod
(#577).
(#613).
keep-alive RTSP Options requests
(#662).
standard MIDI files using the Jsyn library to synthesize audio.
DecoderOutputBuffer.shouldBeSkipped
to directly mark outputbuffers that don't need to be presented. This is preferred over
C.BUFFER_FLAG_DECODE_ONLY
that will be deprecated.Decoder.setOutputStartTimeUs
andSimpleDecoder.isAtLeastOutputStartTimeUs
to allow decoders to dropdecode-only samples before the start time. This should be preferred to
Buffer.isDecodeOnly
that will be deprecated.artifact is renamed to
media3-exoplayer-midi
(#734).
ArithmeticException
inLeanback code (#617).
TestExoPlayerBuilder
andFakeClock
compatible with Espresso UItests and Compose UI tests. This fixes a bug where playback advances
non-deterministically during Espresso or Compose view interactions.
TransformationRequest.Builder.setEnableRequestSdrToneMapping(boolean)
and
TransformationRequest.Builder.experimental_setEnableHdrEditing(boolean)
.Use
Composition.Builder.setHdrMode(int)
and pass theComposition
toTransformer.start(Composition, String)
instead.DownloadNotificationHelper.buildProgressNotification
method, use a non deprecated method that takes a
notMetRequirements
parameter instead.
v1.1.1
Compare Source
This release corresponds to the
ExoPlayer 2.19.1 release.
This release includes the following changes since the
1.1.0 release:
multidex
dependency from all modules(#499).
PlaybackStatsListener
where spuriousPlaybackStats
arecreated after the playlist is cleared.
streaming format (sf), stream type (st), version (v), top birate (tb),
object duration (d), measured throughput (mtp) and object type (ot)
(#8699).
Player.getState()
never transitioned toSTATE_ENDED
when playing very short files
(#538).
offloaded Opus playback in accordance with RFC 7845.
Previously indent and tab offset were included when limiting the cue
length to 32 characters (which was technically correct by the spec)
(#11019).
access it. When the custom layout changes,
MediaController.Listener.onCustomLayoutChanged
is called. Apps thatwant to send different custom layouts to different Media3 controller can
do this in
MediaSession.Callback.onConnect
by using anAcceptedResultBuilder
to make sure the custom layout is available tothe controller when connection completes.
MediaLibraryServiceLegacyStub
sent an error to aResult
that didn't support this which produced anUnsupportedOperationException
(#78).
PlayerWrapper
creates aVolumeProviderCompat
bydetermining
volumeControlType
through both legacy commands(
COMMAND_ADJUST_DEVICE_VOLUME
andCOMMAND_SET_DEVICE_VOLUME
) and newcommands (
COMMAND_ADJUST_DEVICE_VOLUME_WITH_FLAGS
andCOMMAND_SET_DEVICE_VOLUME_WITH_FLAGS
)(#554).
v1.1.0
Compare Source
This release corresponds to the
ExoPlayer 2.19.0 release.
This release contains the following changes since the
1.0.2 release:
change reason for suppressed too long.
(#15).
COMMAND_GET_METADATA
COMMAND_SET_PLAYLIST_METADATA
COMMAND_SET_DEVICE_VOLUME_WITH_FLAGS
COMMAND_ADJUST_DEVICE_VOLUME_WITH_FLAGS
flags:
void setDeviceVolume(int, int)
void increaseDeviceVolume(int)
void decreaseDeviceVolume(int)
void setDeviceMuted(boolean, int)
Builder
forDeviceInfo
and deprecate existing constructor.DeviceInfo.routingControllerId
to specify the routing controllerID for remote playbacks.
Player.replaceMediaItem(s)
as a shortcut to adding and removingitems at the same position
(#8046).
explicitly opted in. Use
ExoPlayer.Builder.setDeviceVolumeControlEnabled
to have access to:getDeviceVolume()
isDeviceMuted()
setDeviceVolume(int)
andsetDeviceVolume(int, int)
increaseDeviceVolume(int)
andincreaseDeviceVolume(int, int)
decreaseDeviceVolume(int)
anddecreaseDeviceVolume(int, int)
FilteringMediaSource
that allows to filter available track typesfrom a
MediaSource
.outgoing requests of adaptive streaming formats DASH, HLS, and
SmoothStreaming. The following fields,
br
,bl
,cid
,rtp
, andsid
, have been incorporated(#8699). API
structure and API methods:
MediaSource.Factory.setCmcdConfigurationFactory(CmcdConfiguration.Factory cmcdConfigurationFactory)
to enable it.CmcdConfiguration.RequestConfig.isKeyAllowed(String key)
to filterout which keys are logged.
CmcdConfiguration.RequestConfig.getCustomData()
to enablecustom key logging.
start the demo app with a custom
*.exolist.json
file(#439).
ExoPlayer.setVideoEffects()
for usingEffect
during videoplayback.
SampleQueue
to storesourceId
as along
rather than anint
. This changes the signatures of public methodsSampleQueue.sourceId
andSampleQueue.peekSourceId
.LoadControl
methodsshouldStartPlayback
andonTracksSelected
that allow associating these methods with therelevant
MediaPeriod
.ServerSideAdInsertionMediaSource.setAdPlaybackStates(Map<Object, AdPlaybackState>)
by adding a timeline parameter that contains theperiods with the UIDs used as keys in the map. This is required to avoid
concurrency issues with multi-period live streams.
EventDispatcher.withParameters(int windowIndex, @​Nullable MediaPeriodId mediaPeriodId, long mediaTimeOffsetMs)
andBaseMediaSource.createEventDispatcher(..., long mediaTimeOffsetMs)
.The variant of the methods without the `mediaTim
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR has been generated by Mend Renovate. View repository job log here.