IMPORTANT: This version includes a database migration. Make sure to back up your seed phrase in case of issues. Thank you
Please note that this version is a beta meant for testing purposes by core contributors. It's not meant for real use and makes no claims of security or integrity of funds or data in these builds.
Please report issues/bugs in the #general
channel on the status community or via:
https://github.com/status-im/status-desktop/issues
macOS users: after you open Status.dmg and copy Status.app to the Applications folder, you will need to "right click -> open" when running it for the first time (due to new Apple requirements for notarization). You may need to "right click -> open" twice.
Before updating also backup your seed phrase:
-> Profile -> Privacy and Security -> Backup Seed Phrase
Hero Feature
Initiate send from address in chat (Demo: #16354)
Implement a local pairing fallback: pairing and syncing between devices (mobile or desktop) is now easier
Bug Fixes
Status will automatically update transaction fee calculations in a timely manner
Improvements
Desktop Communities
- Performance improvements related to the members list - makes switching between channels faster
- Performance improvements for community admins - Improves the navigation in the admin panels and smoothness of the community when being an admin
- Update to the latest set of Emojis - You’ll now have access to all the emojis you are used to and we even upgraded the performance of the emoji popups and selectors
- Fixes an issue where the transfer of ownership would fail and leave the community with two owners - also fixes communities affected by this
What's Changed
- chore: update status-go by @igor-sirotin in #15824
- feat(Wallet)_: Support Multi-Chain Gas Fee Calculation in SendModal to Resolve No Gas Display Issue by @belalshehab in #15758
- Fix scroll to edit network button by @Valentina1133 in #15829
- fix(wakunodes): temporarily hide "add waku nodes" in advanced settings by @friofry in #15836
- chore: build the error reporting mechanism by @saledjenic in #15843
- Fix link preview by @Valentina1133 in #15842
- fix(ConnectDAppModal): add scrolling by @caybro in #15847
- fix(@desktop/wallet): Swap "Approve" button becomes enabled before Approve Tx succeeds/fails by @Khushboo-dev-cpp in #15807
- chore: set missing message verification and confirmation for message sent enabled by default by @richard-ramos in #15774
- CHERRY-PICK: fix(dApps): Improved logic for disconnecting of dApps in the app. by @Seitseman in #15840
- fix(DAppSignRequestModal): correctly compute text painted height by @caybro in #15856
- chore: update status-go by @kounkou in #15866
- chore: rename shards.test to status.prod by @richard-ramos in #15782
- Ban community member test by @Valentina1133 in #15845
- fix: missing wakuv2 fields in createAccountRequest toJson func by @richard-ramos in #15876
- fix: bump statusgo to fix storenode URLs by @richard-ramos in #15894
- fix(wallet)_: Disable send button on router errors & visually indicate gas issues by @belalshehab in #15867
- feat: checksum validation added when adding saved address and watch only address by @saledjenic in #15893
- [CHERRY-PICK] chore(beta): add beta tag to pairing screens (#15873) by @jrainville in #15901
- fix(ConnectDAppModal): don't overflow texts by @caybro in #15889
- fix(wallet): Update preferred networks even when empty by @Cuteivist in #15841
- fix(wallet): Constrain token name size to send modal width by @Cuteivist in #15859
- chore(dapps) disable eth_signTransaction for Wallet Connect by @stefandunca in #15868
- fix(wallet)_: Filter non-bridgeable assets in Bridge Modal by @belalshehab in #15908
- fix(wallet): Repeat transaction updates by @Cuteivist in #15571
- fix(dapps) restoring internet connection for the Wallet Connect SDK by @stefandunca in #15816
- fix: fixes few issues caused by incorrect accounts migration by @saledjenic in #15917
- fix(@desktop/wallet): Swap modal - Pay input amount - deleting 1 decimal deletes the entire number by @Khushboo-dev-cpp in #15887
- [CHERRY-PICK] fix(profile): fix canceling modifications in the profile (#15905) by @jrainville in #15906
- [CHERRY-PICK] chore(wallet): Hide Swap if cannot send by @Cuteivist in #15918
- fix: tx fails if the bonder fee is higher than the amount being sent by @saledjenic in #15926
- [CHERRY-PICK] fix(notif-indicator): evaluate the notifications on app start (#15872) by @jrainville in #15938
- [CHERRY-PICK]: StatusQ/ConcatModel: flag added changing behavior on source model's reset by @micieslak in #15951
- Chore/replace providers url by @IvanBelyakoff in #15913
- fix(Wallet): Hiding assets from wallet's main view doesn't work by @caybro in #15811
- fix: inconsistent/incorrect decimal value formatting by @caybro in #15920
- fix: suggestion given by the Router doesn't suggest chain the user has positive balance on by @saledjenic in #15949
- Replaced using user data with steps by @Valentina1133 in #15821
- fix(wallet): Disable adding new watch-only accounts by @belalshehab in #15944
- fix(SendModal): Bridge modal Simple mode's scroll is very clunky by @caybro in #15969
- [CherryPick]:: fix(@desktop/wallet): fix for Swap Input parameters reset when balances are reloaded by @Khushboo-dev-cpp in #15961
- fix: Add additional information to the Beta tags by @caybro in #15977
- [CHERRY-PICK] fix(dApps): Improved handling of connected dApps. by @Seitseman in #15985
- fix(community): Owner token / Token Master token not visible in community settings by @friofry in #15983
- test: set screen 2560x1440x24 by @antdanchenko in #15982
- tests: rework e2e tests according to product changes by @antdanchenko in #15990
- [CHERRY-PICK] fix(dApps): improved logic for the connected dApps list to always display as many dApps as possible by @Seitseman in #15992
- feature(connector)_: Add model join to handle connected dApps by @kounkou in #15954
- fix: [cherry-pick] change rpc host to localhost (#16003) by @igor-sirotin in #16007
- chore: Remove the Browser from the app completely for now by @caybro in #15984
- [Cherry-pick] Fix/watch accounts removal master by @alexjba in #16010
- feat(@desktop/wallet): handle Paraswap price impact error by @dlipicar in #15875
- [Cherry-pick] fix(WalletConnect): Fixing disconnect notifications by @alexjba in #15973
- feat(Wallet): Display the "Buy" button everywhere by @caybro in #16019
- [Cherry-pick ]fix(WalletConnect): Fixing fees parsing when provided by the dApp by @alexjba in #16009
- feat: some limits for wallet section by @saledjenic in #15989
- fix(@wallet): enable eth bridging by @alaibe in #16028
- chore: make tests running for dev build and update marks by @anastasiyaig in #16027
- fix(Wallet/SendModal): Using community assets in SendModal unblocked by @micieslak in #16013
- tests: set random color and return it so it works on any OS by @antdanchenko in #16037
- [CHERRY-PICK]: CollectiblesView: fixed crash when hiding collectibles from wallet's main view by @micieslak in #16038
- [CHERRY-PICK]: Wallet: swap/bridge buttons visibility adjusted by @micieslak in #16039
- fix(MessageView): Clipboard after editing a message by @caybro in #16030
- feat(@desktop/wallet): Swap:: Added text that links to Paraswaps terms and conditions page by @Khushboo-dev-cpp in #16035
- [CHERRY-PICK] feat(@desktop/metrics): send basic metrics (#15803) by @jrainville in #16040
- Introduce local run mark by @Valentina1133 in #15912
- Share wallet address and default account values in send/receive/bridge tests by @Valentina1133 in #15881
- fix(wallet): Don't reset wallet view after filter change by @Cuteivist in #15997
- ci: use current branch as git ref for E2E tests by @siddarthkay in #16054
- chore_: bump status-go to fix mem leak by @richard-ramos in #16061
- ci: run E2E as soon as linux stage is complete by @siddarthkay in #16068
- chore: group chat test is using newly created users to avoid potential waku issues by @anastasiyaig in #16055
- chore: Create architecture guide and update PR template by @micieslak in #15541
- fix(SendModal): hide the Custom network mode in
production
by @caybro in #16070 - fix(chat): Button to go to the latest message is barely visible on dark theme by @caybro in #16051
- chore: display generic error returned from the router by @saledjenic in #16001
- feat(@desktop/wallet): integrate new onramp status-go api by @dlipicar in #15987
- fix: keycard signing integration into wallet connect flows by @saledjenic in #16064
- chore(Global): Remove FeatureFlags access via Global singleton by @caybro in #16076
- fix: can't send in send modal if one of processors failed by @saledjenic in #16077
- fix(AboutViewPage): display (correct) status-go and Qt versions by @caybro in #16085
- [CHERRY-PICK] Fix WC crash and dApp connected status by @alexjba in #16084
- fix(red-dot): fix getting the real state of the AC notification count by @jrainville in #16024
- Fix: Reject the sign request when cancelling the authentication method + fix cookies issue by @alexjba in #16091
- ci: build with api-proxy credentials by @siddarthkay in #16093
- [CHERRY-PICK] Make the getENSName calls async by @jrainville in #16110
- chore_: allow disabling http/ws api from cli by @igor-sirotin in #16118
- chore: update Terms of Use document by @caybro in #16122
- ci: add api proxy stage build parameter by @yakimant in #16127
- chore: new parameters for local pairing by @igor-sirotin in #15943
- [CherryPick]: fix(@desktop/wallet): Fix register ENS flow which is currently broken by @Khushboo-dev-cpp in #16123
- tests: reorganise automated tests executed in prs for better visibility by @anastasiyaig in #16128
- chore: add verifications when checking checkboxes on modal by @anastasiyaig in #16137
- chore(swap): port SwapInputPanel to AmountToSendNew by @caybro in #16106
- tests: reduce timeout for saved address test by @anastasiyaig in #16140
- [CHERRY-PICK] chore(connector): disable connector flag and WS server by default by @jrainville in #16146
- [CHERRY-PICK] feat(metrics): add onboarding screen metrics and section navigation by @jrainville in #16145
- ci: adding more output for pytest when running tests by @anastasiyaig in #16143
- feat(wallet): cleanup proxy env vars, add proxy stage name by @dlipicar in #16108
- feat(StatusButton): Add support to show text when button is loading by @caybro in #16141
- chore: remove calls to getLatestVerificationRequestFrom by @jrainville in #16149
- fix(wallet): Filter collectibles filter options by @Cuteivist in #16125
- chore(Settings/About): update Privacy Policy document by @caybro in #16151
- fix(nix): add missing nix.conf with our binary cache by @jakubgs in #16097
- fix(StatusBaseButton): correct radius and icon size for
isRoundIcon
mode by @caybro in #16159 - fix: can't add ens name as watched address by @saledjenic in #16161
- fix(wallet): Fill bridge tx type by @Cuteivist in #16162
- feat(Settings/Privacy and security): add Privacy Policy popup by @caybro in #16164
- tests: refactor user.py to reduce references to hardcoded account (create new account each time where necessary) by @anastasiyaig in #16109
- chore(Makefile): reduce ui-tests build and runtime by @caybro in #16169
- [Cherry-Pick] fix(@desktop/wallet): fix sending erc1155 by @Khushboo-dev-cpp in #16174
- fix: fixed issue with no fees when minting community token by @saledjenic in #16175
- fix(notifs): only fetch notification exemptions when going to the page by @jrainville in #16166
- fix(ac): cache ac unread count and hasUnread in the view by @jrainville in #16152
- fix(community): Missing community owner token image by @friofry in #16134
- fix(WalletConnect): Fixing sign for uniswap and paraswap by @alexjba in #16168
- tests: reduce number of iterations of the same test per run by adding randomisation by @anastasiyaig in #16177
- ci: change Nix build filename to differentiate with regular build by @yakimant in #16190
- fix: can't add account when being offline by @saledjenic in #16158
- fix_: mailserver.not.working signal by @richard-ramos in #16184
- fix(Stored): Make stores typed by @Seitseman in #15011
- tests: use own profile link in messages so the information is not gone after 30 days by @anastasiyaig in #16197
- tests: add soft assertion by @antdanchenko in #16090
- chore(ci): add debug logs for windows signing by @jakubgs in #16189
- ci: move stage env variable setup to jenkins-lib by @yakimant in #16191
- chore: new router error
no positive balance
added by @saledjenic in #16182 - tests: test for blocking/unblocking user is now using brand new accounts by @anastasiyaig in #16202
- fix(wallet): Update collectibles media management by @Cuteivist in #16080
- perf(chat_section): improve onChatsLoaded performance by @jrainville in #16186
- feat(wallet): upgrade paraswap api to v6.2 by @dlipicar in #15781
- tests: add account with derivation path test randomised by @anastasiyaig in #16205
- Clipboard handling simplified and made nim-indepedent by @micieslak in #16203
- tests: editing account with right click stabilised by @anastasiyaig in #16209
- chore: Disable clicking on Betatag by @Cuteivist in #16207
- tests: fix typo in method name and update PRs tests list by @anastasiyaig in #16217
- fix(StatusChatInput): set max number of images to 6 to align with mobile by @caybro in #16212
- chore: update random seed generator by @anastasiyaig in #16222
- chore: update status-go to include fix for resolving community links in waku by @anastasiyaig in #16233
- tests: temp exclude test from critical path by @anastasiyaig in #16237
- feat(@desktop/wallet): Buy Mercuryo flow - Improvements by @Khushboo-dev-cpp in #16135
- tests: enable back buy ens name test by @anastasiyaig in #16241
- StatusQ:
SubmodelProxyModel
migrated toObjectProxyModel
and removed by @micieslak in #16238 - fix: Correctly display manage tokens icons by @Cuteivist in #16228
- feat: Upgrade emoji selection to support latest emojis by @caybro in #16179
- fix(@desktop/wallet): merge to latest status-go version by @Khushboo-dev-cpp in #16244
- fix: Slippage Selector Issues by @caybro in #16225
- fix for issue breaking
make
on mac: Update macOS deployment target to 12.0 and bottle version to Monterey by @iurimatias in #16262 - fix: Reset collectible details after exiting details page by @Cuteivist in #16231
- fix: Update account only when networks did change by @Cuteivist in #16229
- fix(Accounts): Avoid model reset on every account change by @alexjba in #16255
- fix(ci): add hash algoritm for Sectigo TS server by @jakubgs in #16215
- chore: enable back test with context menu interactions by @anastasiyaig in #16265
- tests: test to send 0 eth by @anastasiyaig in #16261
- fix(StatusNavigationListItem): unbreak hovering over settings menu items by @caybro in #16266
- TokenSelectorNew decomposed into smaller subcomponents by @micieslak in #16235
- chore: fix method reference by @anastasiyaig in #16273
- feat: Add external link to download extension plugin by @caybro in #16257
- tests: use seed phrase for account with funds under env var by @anastasiyaig in #16276
- fix(DAppSignRequestModal): correct wallet account color by @caybro in #16280
- Tests: make mint token test smarter using L2 networks to mint tokens (cheaper) by @anastasiyaig in #16285
- feat: Show send error message inside the SendModal by @Cuteivist in #16258
- Tests/optimisation by @anastasiyaig in #16292
- fix[StatusChatMenu]: updated menu options as per designs by @alexandraB99 in #14118
- fix(StatusSeedPhraseInput): accept a common prefix suggestion by @caybro in #16302
- tests: merge 2 tests into one by @anastasiyaig in #16306
- chore: update status-go version in master by @anastasiyaig in #16309
- Exclude gifs handling to separate store, make shared/RootStore singleton smaller by @micieslak in #16274
- fix: Apply custom asset / collectible order by @Cuteivist in #16227
- chore: remove old router logic by @saledjenic in #16204
- chore: add object name for collectibles delegates by @anastasiyaig in #16322
- chore(StatusMemberListItem): refactor to use ItemDelegate by @caybro in #16284
- fix(categories): make categories collapsing async to fix performance by @jrainville in #16271
- feat(@desktop/wallet): SwapModal: refresh currency price as well when fetching proposal by @Khushboo-dev-cpp in #15752
- fix: Use prefixes for address copy by @Cuteivist in #16230
- [StatusQ] Move StyledTextField to StatusQ by @caybro in #16311
- chore: object name for search box in searchable collectibles panel by @anastasiyaig in #16333
- Fix/remove send collectibles model 16328 by @Cuteivist in #16332
- chore: group chat e2e test is fixed by @anastasiyaig in #16339
- chore: fix nightly failures by @anastasiyaig in #16346
- fix: use proper networks model for detection of offline chain providers by @dlipicar in #16350
- fix: wallet connect - sake.lido.fi dApp - staking transaction gets stuck by @saledjenic in #16348
- refactor(community_tokens): only fetch holders when going to the page by @jrainville in #16308
- feat: add countdown pill to sign dialogs and make them unclosable by @caybro in #16349
- feat(SendModal): add a spinner when resolving an ENS name by @caybro in #16356
- fix(MessageView): unbreak GIF unfurling by @caybro in #16369
- chore: disable sync test temp from critical path by @anastasiyaig in #16371
- WC: Fixing transactions failures by @alexjba in #16353
- fix: logs in utc time by @igor-sirotin in #16373
- fix: browser connect - send transaction command by @saledjenic in #16365
- feat(wallet): Remove unused functions by @Cuteivist in #16342
- Feat/send via personal chat by @Khushboo-dev-cpp in #16354
- Replace TokenSelector with the new version by @micieslak in #16321
- Update status go and fix sync devices test by @anastasiyaig in #16377
CONTRIBUTING.md
extended with section regarding unit tests by @micieslak in #16372- fix(StatusMenu): StatusSuccessAction is not taken into account for Menu width by @caybro in #16357
- fix(MembersTabPanel): unbreak context menu by @caybro in #16375
- fix: check for the route if 0 value is entered by @saledjenic in #16385
- chore: merge tests into a single flow by @anastasiyaig in #16376
- chore: fix test for sending transaction by @anastasiyaig in #16386
- chore(notiifcations): stop logging messages in debug logs for notifs by @jrainville in #16381
- Refactor/16286 refactor profile context menu by @iurimatias in #16334
- tests: send random NFT by @anastasiyaig in #16331
- fix(SwapModal): Max slippage value remains as set even the custom field is erased by @caybro in #16397
- chore: tiny fixes for several failures in nightly by @anastasiyaig in #16399
- fix(SlippageSelector): cant do Swap with 100% slippage by @caybro in #16396
- Add remove user groups option to group chat context menu by @iurimatias in #16360
- Fix slow chat switching 2: Electric Boogaloo by @jrainville in #16279
- StatusQ: ConstantRole - custom SFPM proxy role added by @micieslak in #16405
- refactor: make MessageContextMenu a functional component by @iurimatias in #16390
- chore: fix community channels and categories locators by @anastasiyaig in #16413
- StatusQ: Introduce LazyStackLayout - stack layout with deferred instantiation by @micieslak in #16417
- fix(searchList): speed up ctrl-k search by using SPFM by @jrainville in #16393
- Speed up Admin Tab significantly by @jrainville in #16363
- tests: update existing test to open send modal from chat message by @anastasiyaig in #16424
- fix(wallet): several regressions due to recent store refactorings by @caybro in #16406
- feat(wallet): Add metrics for Send / Bridge / Swap by @Cuteivist in #16400
- chore: add timeout for clicks by @anastasiyaig in #16428
- fix(minting): fix minting tokens on Windows by @jrainville in #16422
- Fixed link to CONTRIBUTING.md in the PR template by @micieslak in #16423
- chore: improvements of the sending route generated by the router process by @saledjenic in #16330
- fix: add
PreferredDisplayName
to user_model by @micieslak in #16432 - chore: Exclude
CurrenciesStore
handling fromshared/RootStore
by @micieslak in #16388 - stores: move wallet-related methods/properties from shared/stores/RootStore to dedicated stores by @micieslak in #16438
- chore: squeeze 2 tests into one, so links previews are checked on PR level too by @anastasiyaig in #16439
- feat(sync): add a fallback mechanism when the pairing does't work by @jrainville in #15820
- fix(MessageContextMenuView): Message context menu displaying incorrectly by @caybro in #16434
- chore: align buying/releasing/setting ens usernames with the new sending flow by @saledjenic in #16440
- fix(MembersTabPanel): Buttons in the Member tab do not work by @caybro in #16441
- feat(wallet): Recalculate specific entries in accounts model by @Cuteivist in #16344
- stores: shared/RootStore made not singleton by @micieslak in #16449
- fix: suggested path calculation updated when adding previously deleted key pair by @saledjenic in #16444
- tests: add better condition when waiting for status change by @anastasiyaig in #16453
- chore:
applicationWindow
property removed fromGlobal
singleton by @micieslak in #16465 - tests: add verification when re-adding same seed again by @anastasiyaig in #16466
- fix(community): Token gating info when permission not met and set to private by @caybro in #16460
- chore: Set-up the initial codeowners by @alexjba in #16474
- tests: simplify renaming of keypair test and increase timeouts by @anastasiyaig in #16476
- fix: Update "Welcome to Status Beta" startup dialog by @caybro in #16480
- fix(status-go)_: add missing status-go dependencies by @igor-sirotin in #16470
- chore: Utils.qml content divided into two categories by @micieslak in #16482
- fix(status-go)_: install protobuf by @siddarthkay in #16488
- refactor: Remove the business logic from UI components by @alexjba in #16387
- chore: stabilise test for permission management by randomisation by @anastasiyaig in #16485
- fix: there are no options for remove and release ens username by @saledjenic in #16464
- fix: Remove forced OpenGl context sharing by @alexjba in #16443
- fix(chat): chat input accepts DnD for blocked users by @caybro in #16475
- Feat(WalletConnect): sign request timeout by @alexjba in #16467
- chore(@wallet): Desktop is in beta by @alaibe in #16498
- Fix some of the freezes experienced by the admins when the community updates by @jrainville in #16384
- fix(StatusChatInfoButton): missing lock icon by @caybro in #16504
- Chore(WalletConnect): Upgrade Wallet connect version and migrate to WalletKit by @alexjba in #16468
- chore: fix tests by @anastasiyaig in #16501
- chore(E2E): Use
mouseWheel
method to scroll by @alexjba in #16487 - Utils:
plainText
,downloadImageByUrl
,restartApplication
made backend-independent by @micieslak in #16492 - fix(ci)_: move nim cache to workspace tmp folder by @jakubgs in #16491
- Use a single member list for community public channels by @jrainville in #16301
- Feat/16445: Remove network prefixes from Wallet Settings and Profile by @Khushboo-dev-cpp in #16448
- Introduce ability of calling
StatusQ
methods fromNIM
by @micieslak in #16497 - Tests: fix tests according to simplification of send, enable change password test by @anastasiyaig in #16513
- feat(CreateCommunityPopup): validation and ensuring min. 1 tag added by @caybro in #16486
- Cleanup of multiple unused and unmaintained components by @micieslak in #16519
- chore: fix community tests to have tag filled in by @anastasiyaig in #16518
- fix: DAppsWorkflow flaky test by @alexjba in #16521
- chore: sign the flow only once if approval and transaction need to be placed once after another (swap flow) by @saledjenic in #16484
- fix: bump
SFPM
to fix ussues caused by bug inSFPM
by @micieslak in #16533 - fix(PasswordView): Password instructions missing max length requirement by @caybro in #16522
userProfile
removed fromGlobal
singleton by @micieslak in #16530- StatusQ: ModelCount simplified and property added by @micieslak in #16542
- Tests/simplification for community tests by @anastasiyaig in #16535
- fix; Update default sorting for assets and collectibles by @Cuteivist in #16552
- chore(status-go): bump status-go to latest by @jrainville in #16559
- fix(wallet): debounce send modal route requests and assign new uuid o… by @dlipicar in #16571
- [Cherry-pick]: Tests/wallet account simplified by @anastasiyaig in #16577
- Fix/migration problem by @jrainville in #16572
- fix(requests): fix member requests not showing in list by @jrainville in #16604
- fix(gifs): fix call to setGifUnfurlingEnabled using a bad store by @jrainville in #16603
- Fix/invalidate old routes on new request by @dlipicar in #16638
- (CHERRYPICK)fix(@desktop/wallet): Swap transaction - Wrong copy on the tooltip of the 'Swap' button by @Khushboo-dev-cpp in #16647
- fix(members): fix list showing all members when missing encryption keys by @jrainville in #16625
- fix(mentions): fix wrong user list given to mentions model by @jrainville in #16615
- [CHERRY-PICK] fix: links do not work in the terms of name registration popup by @saledjenic in #16669
- [Cherry-pick]: Tests/cherry pick timeout by @anastasiyaig in #16661
- [CHERRY-PICK] fix: cant fetch fees when releasing ens name, token is not set, as well as value by @saledjenic in #16677
- chore(status-go): bump status-go to get erc1155 transfer fix by @dlipicar in #16674
- fix(@wallet/desktop): No feedback after token approval. Once the approval is confirmed the Swap dialog becomes editable again, with the Swap button enabled by @Khushboo-dev-cpp in #16666
- chore(@e2e): fix condition for emoji path by @anastasiyaig in #16678
- [CHERRYPICK]: Windows installer: remove bin dir as a first step of installation by @micieslak in #16704
Full Changelog: 2.30.0...2.31.1