Skip to content

[pull] main from MetaMask:main#356

Merged
pull[bot] merged 13 commits into
dmrazzy:mainfrom
MetaMask:main
Sep 23, 2025
Merged

[pull] main from MetaMask:main#356
pull[bot] merged 13 commits into
dmrazzy:mainfrom
MetaMask:main

Conversation

@pull
Copy link
Copy Markdown

@pull pull Bot commented Sep 23, 2025

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

Gudahtt and others added 13 commits September 23, 2025 11:53
Reverts #6680, which was created in errors and has no
changes.
## Explanation

Add `TransactionType` values for Predict.

## References

## Checklist

- [x] I've updated the test suite for new or updated code as appropriate
- [x] I've updated documentation (JSDoc, Markdown, etc.) for new or
updated code as appropriate
- [x] I've communicated my changes to consumers by [updating changelogs
for packages I've
changed](https://github.com/MetaMask/core/tree/main/docs/contributing.md#updating-changelogs),
highlighting breaking changes as necessary
- [x] I've prepared draft pull requests for clients and consumer
packages to resolve any breaking changes
)

## Explanation

This reverts commit 1aae93d, which was
accidentally released as part of v44 with a bunch of undocumented
breaking changes.

## References

See #6454

## Checklist

- [x] I've updated the test suite for new or updated code as appropriate
- [x] I've updated documentation (JSDoc, Markdown, etc.) for new or
updated code as appropriate
- [x] I've communicated my changes to consumers by [updating changelogs
for packages I've
changed](https://github.com/MetaMask/core/tree/main/docs/contributing.md#updating-changelogs),
highlighting breaking changes as necessary
- [x] I've prepared draft pull requests for clients and consumer
packages to resolve any breaking changes
## Explanation

This release reverts some accidental changes introduced in v44 of the
two bridge controllers. It also (incidentally) includes one change to
the `bridge-status-controller`.

## References

N/A

## Checklist

N/A
## Explanation

Re-introduce proper prefixes based on the keyring types for non-HD
keyrings.

## References

N/A

## Checklist

- [ ] I've updated the test suite for new or updated code as appropriate
- [ ] I've updated documentation (JSDoc, Markdown, etc.) for new or
updated code as appropriate
- [ ] I've communicated my changes to consumers by [updating changelogs
for packages I've
changed](https://github.com/MetaMask/core/tree/main/docs/contributing.md#updating-changelogs),
highlighting breaking changes as necessary
- [ ] I've prepared draft pull requests for clients and consumer
packages to resolve any breaking changes
## Explanation

<!--
Thanks for your contribution! Take a moment to answer these questions so
that reviewers have the information they need to properly understand
your changes:

* What is the current state of things and why does it need to change?
* What is the solution your changes offer and how does it work?
* Are there any changes whose purpose might not obvious to those
unfamiliar with the domain?
* If your primary goal was to update one package but you found you had
to update another one along the way, why did you do so?
* If you had to upgrade a dependency, why did you do so?
-->

Release subscription controller 0.2.0

## References

<!--
Are there any issues that this pull request is tied to?
Are there other links that reviewers should consult to understand these
changes better?
Are there client or consumer pull requests to adopt any breaking
changes?

For example:

* Fixes #12345
* Related to #67890
-->

## Checklist

- [x] I've updated the test suite for new or updated code as appropriate
- [x] I've updated documentation (JSDoc, Markdown, etc.) for new or
updated code as appropriate
- [x] I've communicated my changes to consumers by [updating changelogs
for packages I've
changed](https://github.com/MetaMask/core/tree/main/docs/contributing.md#updating-changelogs),
highlighting breaking changes as necessary
- [x] I've prepared draft pull requests for clients and consumer
packages to resolve any breaking changes
## Explanation

**What is the current state of things and why does it need to change?**

The current `#onAddNetwork` behavior in `NetworkEnablementController`
was inconsistent and didn't provide a good user experience:
- All newly added networks were automatically enabled, regardless of
context
- The logic for determining "popular networks mode" required ALL popular
networks to be enabled, which was impractical
- Users experienced unexpected network switching when adding popular
networks in multi-network scenarios

**What is the solution your changes offer and how does it work?**

This PR implements a more intuitive network addition behavior:

1. **Improved Popular Networks Detection**: Changed from requiring "all
popular networks enabled" to ">2 popular networks enabled", making the
detection much more practical and user-friendly.

2. **Context-Aware Network Addition**:
- **If in popular networks mode (>2 popular networks enabled) AND adding
a popular network** → Keep current selection (add but don't enable the
new network)
- **Otherwise** → Switch to the newly added network (disable all others,
enable the new one)

3. **Key Benefits**:
- When users have multiple popular networks enabled and add another
popular network, their current workflow isn't disrupted
- When users add non-popular networks or add networks when not in
"popular mode", they get the expected behavior of switching to the new
network
- The popular networks threshold (>2) is much more realistic than
requiring all popular networks

**Are there any changes whose purpose might not obvious to those
unfamiliar with the domain?**

- The method rename from `#areAllPopularNetworksEnabled()` to
`#isInPopularNetworksMode()` reflects the conceptual shift from checking
all networks to checking if the user is in a "popular networks" usage
pattern
- The ">2" threshold was chosen because it indicates the user is
actively using multiple popular networks (suggesting they prefer the
multi-network mode) vs. having just 1-2 networks enabled

## References

This change improves the user experience for network management in
MetaMask by implementing more intuitive network addition behavior based
on user context.

## Checklist

- [x] I've updated the test suite for new or updated code as appropriate
- [x] I've updated documentation (JSDoc, Markdown, etc.) for new or
updated code as appropriate
- [ ] I've communicated my changes to consumers by [updating changelogs
for packages I've
changed](https://github.com/MetaMask/core/tree/main/docs/contributing.md#updating-changelogs),
highlighting breaking changes as necessary
- [ ] I've prepared draft p
…hest index from account group names (#6696)

## Explanation

Now allows a bit more pattern when extracting account group name index.

## References

N/A

## Checklist

- [ ] I've updated the test suite for new or updated code as appropriate
- [ ] I've updated documentation (JSDoc, Markdown, etc.) for new or
updated code as appropriate
- [ ] I've communicated my changes to consumers by [updating changelogs
for packages I've
changed](https://github.com/MetaMask/core/tree/main/docs/contributing.md#updating-changelogs),
highlighting breaking changes as necessary
- [ ] I've prepared draft pull requests for clients and consumer
packages to resolve any breaking changes
…perations (#6697)

## Explanation

```md
- Set the `setAccountGroupName`'s option `autoHandleConflict` to `true` for all backup & sync operations
```

<!--
Thanks for your contribution! Take a moment to answer these questions so
that reviewers have the information they need to properly understand
your changes:

* What is the current state of things and why does it need to change?
* What is the solution your changes offer and how does it work?
* Are there any changes whose purpose might not obvious to those
unfamiliar with the domain?
* If your primary goal was to update one package but you found you had
to update another one along the way, why did you do so?
* If you had to upgrade a dependency, why did you do so?
-->

## References

<!--
Are there any issues that this pull request is tied to?
Are there other links that reviewers should consult to understand these
changes better?
Are there client or consumer pull requests to adopt any breaking
changes?

For example:

* Fixes #12345
* Related to #67890
-->

## Checklist

- [x] I've updated the test suite for new or updated code as appropriate
- [x] I've updated documentation (JSDoc, Markdown, etc.) for new or
updated code as appropriate
- [x] I've communicated my changes to consumers by [updating changelogs
for packages I've
changed](https://github.com/MetaMask/core/tree/main/docs/contributing.md#updating-changelogs),
highlighting breaking changes as necessary
- [ ] I've prepared draft pull requests for clients and consumer
packages to resolve any breaking changes
Reverts #6695 because it was using the wrong format for the
PR title, so it didn't trigger a release
Releases of:
- `SubscriptionController` 0.2.0
- `AccountTreeController` 1.1.0, which includes:
  * Various fixes for account group names
  * Auto-conflict resolution for account group names with backup & sync
## Explanation

Uniswap reported a bug in slack
[here](https://consensys.slack.com/archives/C017NBJL1S7/p1758234734587359?thread_ts=1752698865.023109&cid=C017NBJL1S7)
where MetaMask was unpermitting any EVM connections for a dapp if that
dapp used the solana wallet standard provider to make a connect request
and then cancelled it.

This call to `disconnect()` is happening outside of our packages and is
not related to a previous but similar bug where our own wallet-standard
provider was calling `wallet_revokeSession` when receiving an empty
solana `accountsChanged` event.

To fix this, this PR proposes an implementation for partial permission
revoking in the `wallet_revokeSession` handler so that we can then
update our solana `wallet-standard` provider to only revoke the solana
scopes when it is asked to disconnect.

<!--
Thanks for your contribution! Take a moment to answer these questions so
that reviewers have the information they need to properly understand
your changes:

* What is the current state of things and why does it need to change?
* What is the solution your changes offer and how does it work?
* Are there any changes whose purpose might not obvious to those
unfamiliar with the domain?
* If your primary goal was to update one package but you found you had
to update another one along the way, why did you do so?
* If you had to upgrade a dependency, why did you do so?
-->

## References

<!--
Are there any issues that this pull request is tied to?
Are there other links that reviewers should consult to understand these
changes better?
Are there client or consumer pull requests to adopt any breaking
changes?

For example:

* Fixes #12345
* Related to #67890
-->

* Fixes [#728](https://consensyssoftware.atlassian.net/browse/WAPI-728)

## Checklist

- [x] I've updated the test suite for new or updated code as appropriate
- [x] I've updated documentation (JSDoc, Markdown, etc.) for new or
updated code as appropriate
- [x] I've communicated my changes to consumers by [updating changelogs
for packages I've
changed](https://github.com/MetaMask/core/tree/main/docs/contributing.md#updating-changelogs),
highlighting breaking changes as necessary
- [x] I've prepared draft pull requests for clients and consumer
packages to resolve any breaking changes

---------

Co-authored-by: Alex Donesky <adonesky@gmail.com>
## Explanation

Release for `@metamask/multichain-api-middleware`

- Add partial permission revoke into `wallet_revokeSession`
([#6668](#6668))
- Bump `@metamask/chain-agnostic-permission` from `1.0.0` to `1.1.1`
([#6241](#6241),
[#6345](#6241))
- Bump `@metamask/controller-utils` from `^11.10.0` to `^11.14.0`
([#6069](#6069),
[#6303](#6303),
[#6620](#6620),
[#6629](#6629))
- Bump `@metamask/network-controller` from `^24.0.0` to `^24.2.0`
([#6148](#6148),
[#6303](#6303),
[#6678](#6678))
- Bump `@metamask/utils` from `^11.2.0` to `^11.4.2`
([#6054](#6054))
- Bump `@metamask/utils` from `^11.4.2` to `^11.8.0`
([#6588](#6588))
- Bump `@metamask/json-rpc-engine` from `^10.0.3` to `^10.1.0`
([#6678](#6678))

<!--
Thanks for your contribution! Take a moment to answer these questions so
that reviewers have the information they need to properly understand
your changes:

* What is the current state of things and why does it need to change?
* What is the solution your changes offer and how does it work?
* Are there any changes whose purpose might not obvious to those
unfamiliar with the domain?
* If your primary goal was to update one package but you found you had
to update another one along the way, why did you do so?
* If you had to upgrade a dependency, why did you do so?
-->

## References

<!--
Are there any issues that this pull request is tied to?
Are there other links that reviewers should consult to understand these
changes better?
Are there client or consumer pull requests to adopt any breaking
changes?

For example:

* Fixes #12345
* Related to #67890
-->

* Fixes https://consensyssoftware.atlassian.net/browse/WAPI-728

## Checklist

- [x] I've updated the test suite for new or updated code as appropriate
- [x] I've updated documentation (JSDoc, Markdown, etc.) for new or
updated code as appropriate
- [x] I've communicated my changes to consumers by [updating changelogs
for packages I've
changed](https://github.com/MetaMask/core/tree/main/docs/contributing.md#updating-changelogs),
highlighting breaking changes as necessary
- [x] I've prepared draft pull requests for clients and consumer
packages to resolve any breaking changes
@pull pull Bot locked and limited conversation to collaborators Sep 23, 2025
@pull pull Bot added the ⤵️ pull label Sep 23, 2025
@pull pull Bot merged commit 7d78f3d into dmrazzy:main Sep 23, 2025
0 of 4 checks passed
pull Bot pushed a commit that referenced this pull request Oct 16, 2025
`@metamask/network-controller` now contains an `RpcService` class. Using
this class not only allows us to remove a lot of code from this package,
as it incorporates the vast majority of logic contained in
`createFetchMiddleware`, including the retry logic, but it also allows
us to use the circuit breaker pattern and the exponential backoff
pattern to prevent too many retries if the network is unreliable, and
then automatically cut over to a failover node when the network truly
goes down.

Closes #356.
Closes #207.
Closes #209.
Closes #211.
Closes #166.
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants