Skip to content

feat(wallet)!: wire PermissionController and SubjectMetadataController into default initialization - #9300

Open
sirtimid wants to merge 6 commits into
mainfrom
sirtimid/wire-permission-and-subject-metadata-controllers
Open

feat(wallet)!: wire PermissionController and SubjectMetadataController into default initialization#9300
sirtimid wants to merge 6 commits into
mainfrom
sirtimid/wire-permission-and-subject-metadata-controllers

Conversation

@sirtimid

@sirtimid sirtimid commented Jun 29, 2026

Copy link
Copy Markdown
Member

Explanation

@metamask/wallet is the shared controller-integration layer adopted by extension, mobile, and other clients. Values that differ between clients are injectable instanceOptions with platform-agnostic defaults rather than hardcoded.

This PR wires PermissionController and SubjectMetadataController (both from @metamask/permission-controller) into the default initialization. They reference each other's messenger actions, so they are wired together as a pair, and PermissionController also consumes the already-wired ApprovalController request actions.

The permission/caveat specifications and the unrestricted-method list vary substantially between clients (CAIP-25 account permissions, Snaps endowments, different method sets), so they are injected via instanceOptions.permissionController and each defaults to an empty set. subjectCacheLimit defaults to 100, the value both clients use.

Per-environment options

Option Extension Mobile Default
permissionController.caveatSpecifications CAIP-25 + Snaps specs CAIP-25 + Snaps specs {}
permissionController.permissionSpecifications EVM + Snaps specs EVM + Snaps specs {}
permissionController.unrestrictedMethods 103 methods 98 methods (70 outside the Snaps codefence) []
subjectMetadataController.subjectCacheLimit 100 100 100

Construction order

SubjectMetadataController trims persisted metadata in its constructor by calling PermissionController:hasPermissions, so PermissionController must be constructed first. Two options were available: make the dependency explicit in initialize, or make SubjectMetadataController order-agnostic upstream (the approach taken for GasFeeController). The upstream fix is substantially larger here because the trim happens inside the constructor, so this PR relies on order instead: initialize builds defaults in the order instances/index.ts exports them, and now slots an overriding configuration into its default's position so an override cannot break that.

Note this ordering rests on the export order of instances/index.ts, not on a language guarantee — the ESM build sorts namespace keys per spec, but the CommonJS build preserves declaration order. instances/index.ts carries a comment saying so, and initialization.test.ts asserts the two controllers' relative order.

References

Extension:

Mobile:

Jira: 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, highlighting breaking changes as necessary
  • I've prepared draft pull requests for clients and consumer packages to resolve any breaking changes (follow-up extension + mobile adoption PRs)

Note

High Risk
Touches permission gating and wallet bootstrap with multiple breaking consumer contracts (duplicate controllers, state keys, override ordering). Incorrect construction order or client migration could break dapp permission flows.

Overview
Breaking: @metamask/wallet now builds PermissionController and SubjectMetadataController by default, with messenger wiring to ApprovalController and each other. Clients that already register either controller must drop their own wiring to avoid duplicate messenger actions.

New optional instanceOptions: permissionController (empty specs/methods until injected) and subjectMetadataController.subjectCacheLimit (default 100). Persisted wallet state must include both controller keys when restoring subject metadata.

initialize behavior changes: overrides in initializationConfigurations slot into each default’s position (so PermissionController still runs before SubjectMetadataController), additive configs still run first, and duplicate configuration name values throw. InitializationConfiguration is exported for custom overrides (e.g. Snaps specs needing a wider messenger allowlist).

Supporting updates: @metamask/permission-controller dependency, initialization modules/tests, CODEOWNERS for both instance paths, README dependency graph.

Reviewed by Cursor Bugbot for commit 8eb2c7f. Bugbot is set up for automated code reviews on this repo. Configure here.

sirtimid added a commit that referenced this pull request Jun 29, 2026
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@sirtimid
sirtimid marked this pull request as ready for review June 29, 2026 11:08
@sirtimid
sirtimid requested a review from a team as a code owner June 29, 2026 11:08
@sirtimid
sirtimid temporarily deployed to default-branch June 29, 2026 11:08 — with GitHub Actions Inactive

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 1762832. Configure here.

sirtimid added a commit that referenced this pull request Jun 29, 2026
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@sirtimid
sirtimid force-pushed the sirtimid/wire-permission-and-subject-metadata-controllers branch from 1762832 to 0b8cac1 Compare June 29, 2026 16:07
@sirtimid

Copy link
Copy Markdown
Member Author

@metamaskbot publish-previews

@github-actions

Copy link
Copy Markdown
Contributor

Preview builds have been published. Learn how to use preview builds in other projects.

Expand for full list of packages and versions.
@metamask-previews/account-tree-controller@7.5.3-preview-0b8cac1b5
@metamask-previews/accounts-controller@39.0.3-preview-0b8cac1b5
@metamask-previews/address-book-controller@7.1.2-preview-0b8cac1b5
@metamask-previews/ai-controllers@0.7.0-preview-0b8cac1b5
@metamask-previews/analytics-controller@1.2.1-preview-0b8cac1b5
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-0b8cac1b5
@metamask-previews/announcement-controller@8.1.0-preview-0b8cac1b5
@metamask-previews/app-metadata-controller@2.0.1-preview-0b8cac1b5
@metamask-previews/approval-controller@9.0.2-preview-0b8cac1b5
@metamask-previews/assets-controller@9.1.0-preview-0b8cac1b5
@metamask-previews/assets-controllers@109.2.2-preview-0b8cac1b5
@metamask-previews/authenticated-user-storage@2.1.0-preview-0b8cac1b5
@metamask-previews/base-controller@9.1.0-preview-0b8cac1b5
@metamask-previews/base-data-service@0.1.3-preview-0b8cac1b5
@metamask-previews/bitcoin-regtest-up@0.0.0-preview-0b8cac1b5
@metamask-previews/bridge-controller@77.1.0-preview-0b8cac1b5
@metamask-previews/bridge-status-controller@73.1.0-preview-0b8cac1b5
@metamask-previews/build-utils@3.0.4-preview-0b8cac1b5
@metamask-previews/chain-agnostic-permission@1.6.2-preview-0b8cac1b5
@metamask-previews/chomp-api-service@3.1.0-preview-0b8cac1b5
@metamask-previews/claims-controller@0.5.3-preview-0b8cac1b5
@metamask-previews/client-controller@1.0.1-preview-0b8cac1b5
@metamask-previews/compliance-controller@2.1.0-preview-0b8cac1b5
@metamask-previews/composable-controller@12.0.1-preview-0b8cac1b5
@metamask-previews/config-registry-controller@0.4.1-preview-0b8cac1b5
@metamask-previews/connectivity-controller@0.2.0-preview-0b8cac1b5
@metamask-previews/controller-utils@12.3.0-preview-0b8cac1b5
@metamask-previews/core-backend@6.3.3-preview-0b8cac1b5
@metamask-previews/delegation-controller@3.0.2-preview-0b8cac1b5
@metamask-previews/earn-controller@12.2.1-preview-0b8cac1b5
@metamask-previews/eip-5792-middleware@3.0.4-preview-0b8cac1b5
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.1-preview-0b8cac1b5
@metamask-previews/eip1193-permission-middleware@2.0.1-preview-0b8cac1b5
@metamask-previews/ens-controller@19.1.4-preview-0b8cac1b5
@metamask-previews/eth-block-tracker@15.0.1-preview-0b8cac1b5
@metamask-previews/eth-json-rpc-middleware@23.1.3-preview-0b8cac1b5
@metamask-previews/eth-json-rpc-provider@6.0.1-preview-0b8cac1b5
@metamask-previews/foundryup@1.0.1-preview-0b8cac1b5
@metamask-previews/gas-fee-controller@26.2.3-preview-0b8cac1b5
@metamask-previews/gator-permissions-controller@4.2.1-preview-0b8cac1b5
@metamask-previews/geolocation-controller@0.1.3-preview-0b8cac1b5
@metamask-previews/java-tron-up@0.0.0-preview-0b8cac1b5
@metamask-previews/json-rpc-engine@10.5.0-preview-0b8cac1b5
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-0b8cac1b5
@metamask-previews/keyring-controller@27.1.0-preview-0b8cac1b5
@metamask-previews/local-node-utils@0.0.0-preview-0b8cac1b5
@metamask-previews/logging-controller@8.0.2-preview-0b8cac1b5
@metamask-previews/message-manager@14.1.2-preview-0b8cac1b5
@metamask-previews/messenger@1.2.0-preview-0b8cac1b5
@metamask-previews/messenger-cli@0.2.0-preview-0b8cac1b5
@metamask-previews/money-account-balance-service@2.1.1-preview-0b8cac1b5
@metamask-previews/money-account-controller@0.3.3-preview-0b8cac1b5
@metamask-previews/money-account-upgrade-controller@2.1.0-preview-0b8cac1b5
@metamask-previews/multichain-account-service@11.1.0-preview-0b8cac1b5
@metamask-previews/multichain-api-middleware@3.1.5-preview-0b8cac1b5
@metamask-previews/multichain-network-controller@3.2.0-preview-0b8cac1b5
@metamask-previews/multichain-transactions-controller@7.1.1-preview-0b8cac1b5
@metamask-previews/name-controller@9.1.2-preview-0b8cac1b5
@metamask-previews/network-controller@33.0.0-preview-0b8cac1b5
@metamask-previews/network-enablement-controller@5.4.0-preview-0b8cac1b5
@metamask-previews/notification-services-controller@24.2.0-preview-0b8cac1b5
@metamask-previews/passkey-controller@2.0.1-preview-0b8cac1b5
@metamask-previews/permission-controller@13.1.1-preview-0b8cac1b5
@metamask-previews/permission-log-controller@5.1.0-preview-0b8cac1b5
@metamask-previews/perps-controller@9.0.0-preview-0b8cac1b5
@metamask-previews/phishing-controller@17.2.0-preview-0b8cac1b5
@metamask-previews/polling-controller@16.0.7-preview-0b8cac1b5
@metamask-previews/preferences-controller@23.1.0-preview-0b8cac1b5
@metamask-previews/profile-metrics-controller@4.0.0-preview-0b8cac1b5
@metamask-previews/profile-sync-controller@28.2.0-preview-0b8cac1b5
@metamask-previews/ramps-controller@15.0.0-preview-0b8cac1b5
@metamask-previews/rate-limit-controller@7.0.1-preview-0b8cac1b5
@metamask-previews/react-data-query@0.2.1-preview-0b8cac1b5
@metamask-previews/remote-feature-flag-controller@4.2.2-preview-0b8cac1b5
@metamask-previews/sample-controllers@5.0.2-preview-0b8cac1b5
@metamask-previews/seedless-onboarding-controller@10.0.3-preview-0b8cac1b5
@metamask-previews/selected-network-controller@26.1.4-preview-0b8cac1b5
@metamask-previews/shield-controller@5.1.2-preview-0b8cac1b5
@metamask-previews/signature-controller@39.2.6-preview-0b8cac1b5
@metamask-previews/smart-transactions-controller@24.2.3-preview-0b8cac1b5
@metamask-previews/snap-account-service@1.0.0-preview-0b8cac1b5
@metamask-previews/social-controllers@2.3.1-preview-0b8cac1b5
@metamask-previews/solana-test-validator-up@0.0.0-preview-0b8cac1b5
@metamask-previews/stellar-quickstart-up@0.0.0-preview-0b8cac1b5
@metamask-previews/storage-service@1.0.2-preview-0b8cac1b5
@metamask-previews/subscription-controller@6.2.0-preview-0b8cac1b5
@metamask-previews/transaction-controller@68.2.0-preview-0b8cac1b5
@metamask-previews/transaction-pay-controller@23.17.1-preview-0b8cac1b5
@metamask-previews/user-operation-controller@41.2.5-preview-0b8cac1b5
@metamask-previews/wallet@5.0.0-preview-0b8cac1b5
@metamask-previews/wallet-cli@0.0.0-preview-0b8cac1b5

sirtimid and others added 5 commits August 3, 2026 17:09
…ller` into default initialization

Wire `PermissionController` and `SubjectMetadataController` (both from
`@metamask/permission-controller`) into the default wallet initialization.
The two reference each other's messenger actions and are wired as a pair;
`PermissionController` also consumes the already-wired `ApprovalController`
request actions.

Client-varying values are injectable `instanceOptions` with platform-agnostic
defaults: `permissionController.{caveatSpecifications,permissionSpecifications,
unrestrictedMethods}` (each defaulting to an empty set) and
`subjectMetadataController.subjectCacheLimit` (defaulting to 100).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…view

- Add `Wallet.test.ts` integration coverage: both controllers are reachable on
  the assembled wallet, and persisted subject metadata hydrates without throwing
  (proving the default wiring initializes `PermissionController` before
  `SubjectMetadataController`, which calls `PermissionController:hasPermissions`
  during hydration).
- Verify `PermissionController` can reach its delegated `ApprovalController` and
  `SubjectMetadataController` actions, so a dropped allowlist entry now fails.
- Prove the injected permission specifications are forwarded (via `grantPermissions`)
  rather than only exercising the empty default.
- Replace the weak "defaults to 100" test with a boundary test (100 retained,
  101st evicts the oldest) and add coverage for retaining subjects that hold
  permissions past the cache limit.
- Document the construction-order dependency and soften cross-repo comments.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…position

`initialize` concatenated consumer-supplied `initializationConfigurations`
ahead of the defaults, so a configuration overriding a default ran before the
other defaults. A custom `SubjectMetadataController` with persisted state would
then call `PermissionController:hasPermissions` during hydration before the
default `PermissionController` registered that handler, throwing on
construction.

Overrides now occupy their default's position, preserving construction-order
dependencies between defaults. Configurations that don't match a default remain
additive and are initialized first.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Rebasing #9300 onto `main` after five weeks of drift required these
adjustments, none of which change the feature being wired:

- `codeowners.ts` is now the source of truth for `.github/CODEOWNERS`,
  which is generated. `initializationPath` accepts an array so
  `permission-controller` can claim both of the instance directories it
  supplies, and rules are sorted by pattern so the generated section stays
  alphabetical.
- `Wallet` tests pass the `gasFeeController` instance option, required
  since #9527.
- Regenerate `README.md` and both `tsconfig`s via their fixers.
- Repair the `[6.0.0]` changelog section, which a conflict resolution had
  left with duplicated content.
- Spell out the client-facing consequences of the wiring in the changelog:
  the duplicate-registration collision for consumers passing their own
  messenger, and the fact that permission specifications with side effects
  (the Snaps specifications reach `SnapController:*`) need a wider
  delegation allowlist than the default configuration provides.
- Cover `caveatSpecifications` injection, the one instance option without a
  behavioural assertion.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@sirtimid
sirtimid force-pushed the sirtimid/wire-permission-and-subject-metadata-controllers branch from 0b8cac1 to 3e7952b Compare August 3, 2026 15:42
sirtimid added a commit that referenced this pull request Aug 3, 2026
Correct the construction-order rationale, harden `initialize` against
ambiguous configuration lists, and close the documentation and test gaps
found while reviewing #9300.

- The ordering comment claimed a module namespace object sorts its keys
  regardless of declaration order. That holds only for the ESM build; the
  CommonJS build — what Jest runs and what `require` consumers load —
  preserves declaration order. Record the real invariant on
  `instances/index.ts` and assert the two controllers' relative order.
- `initialize` now throws on duplicate names in
  `initializationConfigurations` instead of silently keeping the last,
  which could drop an override carrying a wider allowlist.
- Mark the override-ordering change `**BREAKING:**`: it applies to any
  overridden default, not just the two controllers wired here.
- Correct the changelog claim that the default `PermissionController`
  "gates nothing" — with no specifications and no unrestricted methods it
  is maximally restrictive — and document that subject metadata is
  retained only for origins present in `PermissionController` state.
- Export `InitializationConfiguration`, which a consumer needs to write
  the override the Snaps guidance calls for, and state what that override
  actually costs.
- Document that `subjectCacheLimit` must be a positive integer, drop the
  `ConstructorParameters` indirection that resolved to `number`, and
  cover all five delegated actions plus the reversed-override ordering.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@sirtimid
sirtimid requested a review from a team as a code owner August 3, 2026 16:49
sirtimid added a commit that referenced this pull request Aug 3, 2026
Correct the construction-order rationale, harden `initialize` against
ambiguous configuration lists, and close the documentation and test gaps
found while reviewing #9300.

- The ordering comment claimed a module namespace object sorts its keys
  regardless of declaration order. That holds only for the ESM build; the
  CommonJS build — what Jest runs and what `require` consumers load —
  preserves declaration order. Record the real invariant on
  `instances/index.ts` and assert the two controllers' relative order.
- `initialize` now throws on duplicate names in
  `initializationConfigurations` instead of silently keeping the last,
  which could drop an override carrying a wider allowlist.
- Mark the override-ordering change `**BREAKING:**`: it applies to any
  overridden default, not just the two controllers wired here.
- Correct the changelog claim that the default `PermissionController`
  "gates nothing" — with no specifications and no unrestricted methods it
  is maximally restrictive — and document that subject metadata is
  retained only for origins present in `PermissionController` state.
- Export `InitializationConfiguration`, which a consumer needs to write
  the override the Snaps guidance calls for, and state what that override
  actually costs.
- Document that `subjectCacheLimit` must be a positive integer, drop the
  `ConstructorParameters` indirection that resolved to `number`, and
  cover all five delegated actions plus the reversed-override ordering.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@sirtimid
sirtimid force-pushed the sirtimid/wire-permission-and-subject-metadata-controllers branch from 8c322dc to 14956e2 Compare August 3, 2026 16:58
Correct the construction-order rationale, harden `initialize` against
ambiguous configuration lists, and close the documentation and test gaps
found while reviewing #9300.

- The ordering comment claimed a module namespace object sorts its keys
  regardless of declaration order. That holds only for the ESM build; the
  CommonJS build — what Jest runs and what `require` consumers load —
  preserves declaration order. Record the real invariant on
  `instances/index.ts` and assert the two controllers' relative order.
- `initialize` now throws on duplicate names in
  `initializationConfigurations` instead of silently keeping the last,
  which could drop an override carrying a wider allowlist.
- Mark the override-ordering change `**BREAKING:**`: it applies to any
  overridden default, not just the two controllers wired here.
- Correct the changelog claim that the default `PermissionController`
  "gates nothing" — with no specifications and no unrestricted methods it
  is maximally restrictive — and document that subject metadata is
  retained only for origins present in `PermissionController` state.
- Export `InitializationConfiguration`, which a consumer needs to write
  the override the Snaps guidance calls for, and state what that override
  actually costs.
- Document that `subjectCacheLimit` must be a positive integer, drop the
  `ConstructorParameters` indirection that resolved to `number`, and
  cover all five delegated actions plus the reversed-override ordering.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@sirtimid
sirtimid force-pushed the sirtimid/wire-permission-and-subject-metadata-controllers branch from 14956e2 to 8eb2c7f Compare August 3, 2026 17:03
@sirtimid

sirtimid commented Aug 3, 2026

Copy link
Copy Markdown
Member Author

@metamaskbot publish-previews

@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Preview builds have been published. Learn how to use preview builds in other projects.

Expand for full list of packages and versions.
@metamask-previews/account-tree-controller@7.5.5-preview-8eb2c7f6e
@metamask-previews/accounts-controller@39.0.6-preview-8eb2c7f6e
@metamask-previews/address-book-controller@7.1.2-preview-8eb2c7f6e
@metamask-previews/ai-controllers@0.8.0-preview-8eb2c7f6e
@metamask-previews/analytics-controller@2.0.0-preview-8eb2c7f6e
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-8eb2c7f6e
@metamask-previews/announcement-controller@8.1.0-preview-8eb2c7f6e
@metamask-previews/app-metadata-controller@2.0.1-preview-8eb2c7f6e
@metamask-previews/approval-controller@9.0.2-preview-8eb2c7f6e
@metamask-previews/assets-controller@13.1.0-preview-8eb2c7f6e
@metamask-previews/assets-controllers@110.1.0-preview-8eb2c7f6e
@metamask-previews/authenticated-user-storage@3.0.1-preview-8eb2c7f6e
@metamask-previews/base-controller@9.1.0-preview-8eb2c7f6e
@metamask-previews/base-data-service@0.1.3-preview-8eb2c7f6e
@metamask-previews/bitcoin-regtest-up@1.0.0-preview-8eb2c7f6e
@metamask-previews/bridge-controller@78.0.3-preview-8eb2c7f6e
@metamask-previews/bridge-status-controller@74.6.1-preview-8eb2c7f6e
@metamask-previews/build-utils@3.0.4-preview-8eb2c7f6e
@metamask-previews/chain-agnostic-permission@1.7.0-preview-8eb2c7f6e
@metamask-previews/chomp-api-service@4.0.0-preview-8eb2c7f6e
@metamask-previews/claims-controller@0.5.3-preview-8eb2c7f6e
@metamask-previews/client-controller@1.0.1-preview-8eb2c7f6e
@metamask-previews/client-utils@1.5.0-preview-8eb2c7f6e
@metamask-previews/compliance-controller@2.1.0-preview-8eb2c7f6e
@metamask-previews/composable-controller@12.0.1-preview-8eb2c7f6e
@metamask-previews/config-registry-controller@2.0.0-preview-8eb2c7f6e
@metamask-previews/connectivity-controller@0.3.0-preview-8eb2c7f6e
@metamask-previews/controller-utils@12.3.0-preview-8eb2c7f6e
@metamask-previews/core-backend@8.1.0-preview-8eb2c7f6e
@metamask-previews/delegation-controller@3.0.2-preview-8eb2c7f6e
@metamask-previews/earn-controller@12.2.3-preview-8eb2c7f6e
@metamask-previews/eip-5792-middleware@3.0.5-preview-8eb2c7f6e
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.1-preview-8eb2c7f6e
@metamask-previews/eip1193-permission-middleware@2.0.1-preview-8eb2c7f6e
@metamask-previews/ens-controller@19.1.6-preview-8eb2c7f6e
@metamask-previews/eth-block-tracker@15.0.1-preview-8eb2c7f6e
@metamask-previews/eth-json-rpc-middleware@24.0.0-preview-8eb2c7f6e
@metamask-previews/eth-json-rpc-provider@6.0.1-preview-8eb2c7f6e
@metamask-previews/foundryup@1.0.1-preview-8eb2c7f6e
@metamask-previews/gas-fee-controller@26.3.1-preview-8eb2c7f6e
@metamask-previews/gator-permissions-controller@5.0.1-preview-8eb2c7f6e
@metamask-previews/geolocation-controller@1.0.0-preview-8eb2c7f6e
@metamask-previews/java-tron-up@1.0.0-preview-8eb2c7f6e
@metamask-previews/json-rpc-engine@10.5.0-preview-8eb2c7f6e
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-8eb2c7f6e
@metamask-previews/keyring-controller@27.1.0-preview-8eb2c7f6e
@metamask-previews/local-node-utils@1.0.0-preview-8eb2c7f6e
@metamask-previews/logging-controller@8.0.2-preview-8eb2c7f6e
@metamask-previews/message-manager@14.1.2-preview-8eb2c7f6e
@metamask-previews/messenger@2.0.0-preview-8eb2c7f6e
@metamask-previews/messenger-cli@0.2.0-preview-8eb2c7f6e
@metamask-previews/money-account-api-data-service@0.4.0-preview-8eb2c7f6e
@metamask-previews/money-account-balance-service@2.4.1-preview-8eb2c7f6e
@metamask-previews/money-account-controller@0.3.3-preview-8eb2c7f6e
@metamask-previews/money-account-upgrade-controller@3.0.1-preview-8eb2c7f6e
@metamask-previews/money-account-utils@1.1.0-preview-8eb2c7f6e
@metamask-previews/multichain-account-service@13.0.0-preview-8eb2c7f6e
@metamask-previews/multichain-api-middleware@4.0.2-preview-8eb2c7f6e
@metamask-previews/multichain-network-controller@3.2.2-preview-8eb2c7f6e
@metamask-previews/multichain-transactions-controller@7.1.1-preview-8eb2c7f6e
@metamask-previews/name-controller@9.1.2-preview-8eb2c7f6e
@metamask-previews/network-connection-banner-controller@0.1.2-preview-8eb2c7f6e
@metamask-previews/network-controller@35.0.1-preview-8eb2c7f6e
@metamask-previews/network-enablement-controller@6.0.2-preview-8eb2c7f6e
@metamask-previews/notification-services-controller@26.0.0-preview-8eb2c7f6e
@metamask-previews/passkey-controller@3.0.0-preview-8eb2c7f6e
@metamask-previews/permission-controller@13.1.1-preview-8eb2c7f6e
@metamask-previews/permission-log-controller@5.1.0-preview-8eb2c7f6e
@metamask-previews/perps-controller@10.0.0-preview-8eb2c7f6e
@metamask-previews/phishing-controller@17.3.1-preview-8eb2c7f6e
@metamask-previews/platform-api-docs@0.0.0-preview-8eb2c7f6e
@metamask-previews/polling-controller@16.0.9-preview-8eb2c7f6e
@metamask-previews/preferences-controller@23.1.0-preview-8eb2c7f6e
@metamask-previews/profile-metrics-controller@4.0.2-preview-8eb2c7f6e
@metamask-previews/profile-sync-controller@28.3.0-preview-8eb2c7f6e
@metamask-previews/ramps-controller@18.0.1-preview-8eb2c7f6e
@metamask-previews/rate-limit-controller@7.0.1-preview-8eb2c7f6e
@metamask-previews/react-data-query@0.2.2-preview-8eb2c7f6e
@metamask-previews/remote-feature-flag-controller@5.0.0-preview-8eb2c7f6e
@metamask-previews/sample-controllers@5.0.4-preview-8eb2c7f6e
@metamask-previews/seedless-onboarding-controller@10.1.0-preview-8eb2c7f6e
@metamask-previews/selected-network-controller@26.1.6-preview-8eb2c7f6e
@metamask-previews/sentinel-api-service@1.0.0-preview-8eb2c7f6e
@metamask-previews/shield-controller@5.1.3-preview-8eb2c7f6e
@metamask-previews/signature-controller@39.2.9-preview-8eb2c7f6e
@metamask-previews/smart-transactions-controller@25.0.2-preview-8eb2c7f6e
@metamask-previews/snap-account-service@2.1.1-preview-8eb2c7f6e
@metamask-previews/social-controllers@2.7.0-preview-8eb2c7f6e
@metamask-previews/solana-test-validator-up@1.0.0-preview-8eb2c7f6e
@metamask-previews/stellar-quickstart-up@0.0.0-preview-8eb2c7f6e
@metamask-previews/storage-service@1.0.2-preview-8eb2c7f6e
@metamask-previews/subscription-controller@6.2.1-preview-8eb2c7f6e
@metamask-previews/transaction-controller@69.4.0-preview-8eb2c7f6e
@metamask-previews/transaction-pay-controller@26.2.0-preview-8eb2c7f6e
@metamask-previews/user-operation-controller@41.2.8-preview-8eb2c7f6e
@metamask-previews/wallet@9.0.0-preview-8eb2c7f6e
@metamask-previews/wallet-cli@0.0.0-preview-8eb2c7f6e

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant