Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
7a62a6b
chore: move solana-wallet-snap into packages/
Battambang Jul 30, 2026
21a87f7
chore: align solana-wallet-snap package fields with yarn constraints
Battambang Jul 30, 2026
4d47487
chore: align solana shared dependency ranges with other snaps
Battambang Jul 30, 2026
65b284e
chore: merge main into solana integrate-packages branch
Battambang Jul 30, 2026
4ee514c
chore: pin solana snaps-sdk and jest-transform-stub ranges
Battambang Jul 30, 2026
4d16e2b
chore: align root @types/lodash with solana-wallet-snap
Battambang Jul 30, 2026
89d83b8
chore: bump root and sample rimraf to match solana
Battambang Jul 30, 2026
5e2df88
chore: align solana snaps-cli range with other snaps
Battambang Jul 30, 2026
9baaecd
chore: merge main into solana integrate-packages branch
Battambang Jul 30, 2026
5fa6bb9
chore: align solana deps with post-keyring-v2 monorepo ranges
Battambang Jul 30, 2026
053e021
chore: bump solana key-tree to match other snaps
Battambang Jul 30, 2026
929ea67
chore: add eslint suppressions for solana-wallet-snap
Battambang Jul 30, 2026
84d06f6
chore: add solana-wallet-snap to CODEOWNERS
Battambang Jul 30, 2026
b39965b
chore: add solana-wallet-snap to root README package list
Battambang Jul 30, 2026
f47f850
chore: dedupe yarn.lock dependencies
Battambang Jul 30, 2026
f92f679
chore: link solana migration changelog entry to PR #72
Battambang Jul 30, 2026
1bfebbf
Merge branch 'main' into chore/solana-wallet-snap-integrate-packages
Battambang Jul 30, 2026
a62a583
chore: wire solana CI env as secrets and vars
Battambang Jul 30, 2026
ae35424
chore: refresh snap.manifest shasums after solana integration
Battambang Jul 30, 2026
46658f7
fix: run solana jest tests in band
Battambang Jul 30, 2026
fecb49a
fix: serialize solana jest via maxWorkers
Battambang Jul 30, 2026
35865d1
Merge branch 'main' into chore/solana-wallet-snap-integrate-packages
Battambang Jul 30, 2026
5391a0e
chore: dual-license solana-wallet-snap (MIT OR Apache-2.0)
Battambang Jul 30, 2026
cb80c6e
fix: build solana tests with ENVIRONMENT=test
Battambang Jul 30, 2026
0f89516
chore: document bitcoin snap.manifest shasum refresh in changelog
Battambang Jul 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,4 @@

packages/bitcoin-wallet-snap @MetaMask/networks
packages/tron-wallet-snap @MetaMask/networks
packages/solana-wallet-snap @MetaMask/networks
24 changes: 24 additions & 0 deletions .github/workflows/lint-build-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,14 @@ on:
required: false
TRON_HTTP_BASE_URL_MAINNET:
required: false
RPC_URL_MAINNET_LIST:
required: false
RPC_URL_DEVNET_LIST:
required: false
RPC_WEB_SOCKET_URL_MAINNET:
required: false
RPC_WEB_SOCKET_URL_DEVNET:
required: false

env:
ENVIRONMENT: production
Expand All @@ -30,6 +38,15 @@ env:
TRON_HTTP_BASE_URL_MAINNET: ${{ secrets.TRON_HTTP_BASE_URL_MAINNET }}
TRON_HTTP_BASE_URL_NILE: ${{ vars.TRON_HTTP_BASE_URL_NILE }}
TRON_HTTP_BASE_URL_SHASTA: ${{ vars.TRON_HTTP_BASE_URL_SHASTA }}
RPC_URL_MAINNET_LIST: ${{ secrets.RPC_URL_MAINNET_LIST }}
RPC_URL_DEVNET_LIST: ${{ secrets.RPC_URL_DEVNET_LIST }}
RPC_URL_TESTNET_LIST: ${{ vars.RPC_URL_TESTNET_LIST }}
RPC_URL_LOCALNET_LIST: ${{ vars.RPC_URL_LOCALNET_LIST }}
RPC_WEB_SOCKET_URL_MAINNET: ${{ secrets.RPC_WEB_SOCKET_URL_MAINNET }}
RPC_WEB_SOCKET_URL_DEVNET: ${{ secrets.RPC_WEB_SOCKET_URL_DEVNET }}
RPC_WEB_SOCKET_URL_TESTNET: ${{ vars.RPC_WEB_SOCKET_URL_TESTNET }}
RPC_WEB_SOCKET_URL_LOCALNET: ${{ vars.RPC_WEB_SOCKET_URL_LOCALNET }}
EXPLORER_BASE_URL: ${{ vars.EXPLORER_BASE_URL }}

jobs:
prepare:
Expand Down Expand Up @@ -177,7 +194,14 @@ jobs:
node-version: ${{ matrix.node-version }}
- name: Build for tests
run: yarn workspace ${{ matrix.package-name }} build
env:
ENVIRONMENT: ${{ matrix.package-name == '@metamask/solana-wallet-snap' && 'test' || 'production' }}
- run: yarn workspace ${{ matrix.package-name }} run test
env:
ENVIRONMENT: ${{ matrix.package-name == '@metamask/solana-wallet-snap' && 'test' || 'production' }}
- name: Restore solana snap.manifest after test build
if: matrix.package-name == '@metamask/solana-wallet-snap'
run: git checkout -- packages/solana-wallet-snap/snap.manifest.json
Comment on lines +197 to +204

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

The Test job overrides ENVIRONMENT only for @metamask/solana-wallet-snap:

  • Build + test steps: test for Solana, production for other snaps
  • Then restore packages/solana-wallet-snap/snap.manifest.json so the dirty-tree check still passes (test builds change the shasum; the dedicated Build job still validates the production shasum)

Why Solana needs this (Bitcoin/Tron do not in this CI path)
Solana feature tests (snaps-jest / installSnap) call the snap as a localhost dapp (http://localhost:3000) and exercise send/confirmation RPCs. Solana’s permissions.ts allowlists that origin and those methods only when the baked-in environment is local or test. With production, dapp permissions are empty → CI fails with Permission denied (4100).

ENVIRONMENT is injected at snap build time, so the Test job must rebuild Solana with ENVIRONMENT=test. Matching the source snap-solana-wallet CI Test job.

Bitcoin: no ENVIRONMENT-gated origin allowlist.

Tron: has a similar gate, but its suites in this workflow mostly don’t depend on localhost dapp permissions the way Solana’s feature UI tests do (often unit tests or metamask origin, which stays allowed in production).

- name: Require clean working directory
shell: bash
run: |
Expand Down
8 changes: 8 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,10 @@ jobs:
RPC_URL_LIST_MAINNET: ${{ secrets.RPC_URL_LIST_MAINNET }}
TRONGRID_BASE_URL_MAINNET: ${{ secrets.TRONGRID_BASE_URL_MAINNET }}
TRON_HTTP_BASE_URL_MAINNET: ${{ secrets.TRON_HTTP_BASE_URL_MAINNET }}
RPC_URL_MAINNET_LIST: ${{ secrets.RPC_URL_MAINNET_LIST }}
RPC_URL_DEVNET_LIST: ${{ secrets.RPC_URL_DEVNET_LIST }}
RPC_WEB_SOCKET_URL_MAINNET: ${{ secrets.RPC_WEB_SOCKET_URL_MAINNET }}
RPC_WEB_SOCKET_URL_DEVNET: ${{ secrets.RPC_WEB_SOCKET_URL_DEVNET }}

check-release:
name: Check release
Expand Down Expand Up @@ -132,6 +136,10 @@ jobs:
RPC_URL_LIST_MAINNET: ${{ secrets.RPC_URL_LIST_MAINNET }}
TRONGRID_BASE_URL_MAINNET: ${{ secrets.TRONGRID_BASE_URL_MAINNET }}
TRON_HTTP_BASE_URL_MAINNET: ${{ secrets.TRON_HTTP_BASE_URL_MAINNET }}
RPC_URL_MAINNET_LIST: ${{ secrets.RPC_URL_MAINNET_LIST }}
RPC_URL_DEVNET_LIST: ${{ secrets.RPC_URL_DEVNET_LIST }}
RPC_WEB_SOCKET_URL_MAINNET: ${{ secrets.RPC_WEB_SOCKET_URL_MAINNET }}
RPC_WEB_SOCKET_URL_DEVNET: ${{ secrets.RPC_WEB_SOCKET_URL_DEVNET }}

all-jobs-complete:
name: All jobs complete
Expand Down
11 changes: 10 additions & 1 deletion .github/workflows/publish-preview.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,5 +46,14 @@ jobs:
"TRONGRID_BASE_URL_SHASTA": "${{ vars.TRONGRID_BASE_URL_SHASTA }}",
"TRON_HTTP_BASE_URL_MAINNET": "${{ secrets.TRON_HTTP_BASE_URL_MAINNET }}",
"TRON_HTTP_BASE_URL_NILE": "${{ vars.TRON_HTTP_BASE_URL_NILE }}",
"TRON_HTTP_BASE_URL_SHASTA": "${{ vars.TRON_HTTP_BASE_URL_SHASTA }}"
"TRON_HTTP_BASE_URL_SHASTA": "${{ vars.TRON_HTTP_BASE_URL_SHASTA }}",
"RPC_URL_MAINNET_LIST": "${{ secrets.RPC_URL_MAINNET_LIST }}",
"RPC_URL_DEVNET_LIST": "${{ secrets.RPC_URL_DEVNET_LIST }}",
"RPC_URL_TESTNET_LIST": "${{ vars.RPC_URL_TESTNET_LIST }}",
"RPC_URL_LOCALNET_LIST": "${{ vars.RPC_URL_LOCALNET_LIST }}",
"RPC_WEB_SOCKET_URL_MAINNET": "${{ secrets.RPC_WEB_SOCKET_URL_MAINNET }}",
"RPC_WEB_SOCKET_URL_DEVNET": "${{ secrets.RPC_WEB_SOCKET_URL_DEVNET }}",
"RPC_WEB_SOCKET_URL_TESTNET": "${{ vars.RPC_WEB_SOCKET_URL_TESTNET }}",
"RPC_WEB_SOCKET_URL_LOCALNET": "${{ vars.RPC_WEB_SOCKET_URL_LOCALNET }}",
"EXPLORER_BASE_URL": "${{ vars.EXPLORER_BASE_URL }}"
}
17 changes: 17 additions & 0 deletions .github/workflows/publish-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,14 @@ on:
required: false
TRON_HTTP_BASE_URL_MAINNET:
required: false
RPC_URL_MAINNET_LIST:
required: false
RPC_URL_DEVNET_LIST:
required: false
RPC_WEB_SOCKET_URL_MAINNET:
required: false
RPC_WEB_SOCKET_URL_DEVNET:
required: false

permissions:
contents: read
Expand Down Expand Up @@ -80,6 +88,15 @@ jobs:
TRON_HTTP_BASE_URL_MAINNET: ${{ secrets.TRON_HTTP_BASE_URL_MAINNET }}
TRON_HTTP_BASE_URL_NILE: ${{ vars.TRON_HTTP_BASE_URL_NILE }}
TRON_HTTP_BASE_URL_SHASTA: ${{ vars.TRON_HTTP_BASE_URL_SHASTA }}
RPC_URL_MAINNET_LIST: ${{ secrets.RPC_URL_MAINNET_LIST }}
RPC_URL_DEVNET_LIST: ${{ secrets.RPC_URL_DEVNET_LIST }}
RPC_URL_TESTNET_LIST: ${{ vars.RPC_URL_TESTNET_LIST }}
RPC_URL_LOCALNET_LIST: ${{ vars.RPC_URL_LOCALNET_LIST }}
RPC_WEB_SOCKET_URL_MAINNET: ${{ secrets.RPC_WEB_SOCKET_URL_MAINNET }}
RPC_WEB_SOCKET_URL_DEVNET: ${{ secrets.RPC_WEB_SOCKET_URL_DEVNET }}
RPC_WEB_SOCKET_URL_TESTNET: ${{ vars.RPC_WEB_SOCKET_URL_TESTNET }}
RPC_WEB_SOCKET_URL_LOCALNET: ${{ vars.RPC_WEB_SOCKET_URL_LOCALNET }}
EXPLORER_BASE_URL: ${{ vars.EXPLORER_BASE_URL }}
- name: Upload build artifacts
uses: actions/upload-artifact@v6
with:
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ Each snap in this repository has its own README with installation and usage inst
<!-- start package list -->

- [`@metamask/bitcoin-wallet-snap`](packages/bitcoin-wallet-snap)
- [`@metamask/solana-wallet-snap`](packages/solana-wallet-snap)
- [`@metamask/tron-wallet-snap`](packages/tron-wallet-snap)

<!-- end package list -->
Loading
Loading