-
Notifications
You must be signed in to change notification settings - Fork 181
Release: v2.6.0 #678
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Release: v2.6.0 #678
Conversation
… into feat/create-backups-on-name-change
… into devop/update-timing
… into fix/nft-long-names
… into devop/backup-wallet-info
devop: add details in backup page
fix: cut names shorter, fix tooltip
devop: change timer to 30 days
…hange feat: create a back up on edit name
devop: simplehash switch
feat: extra word add ui
Fix/UI after collapse
fix: order networks
devop: release prep
WalkthroughThis update introduces support for an optional "extra word" in mnemonic-based wallet creation and recovery across the codebase. The mnemonic handling logic is refactored to use a new Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant UI
participant KeyRing
participant Signer
participant Storage
User->>UI: Start wallet onboarding/recovery
UI->>User: Prompt for mnemonic, password, (optional) extra word
User->>UI: Enter mnemonic, password, extra word
UI->>KeyRing: init({mnemonic, password, extraWord})
KeyRing->>Storage: Store encrypted mnemonic and extra word
UI->>KeyRing: getMnemonic(password)
KeyRing->>Storage: Retrieve and decrypt mnemonic and extra word
KeyRing-->>UI: Return {mnemonic, extraWord}
UI->>Signer: generate({mnemonic, extraWord}, path)
Signer-->>UI: Return keypair
sequenceDiagram
participant UI
participant NFTHandler (Goldrush/Helius/Unisat)
participant Network
UI->>NFTHandler: fetchNFTCollections(network, address)
NFTHandler->>Network API: Query NFTs for address
Network API-->>NFTHandler: Return NFT data
NFTHandler-->>UI: Return standardized NFTCollection[]
Possibly related PRs
Suggested reviewers
📜 Recent review detailsConfiguration used: .coderabbit.yaml 📒 Files selected for processing (2)
✅ Files skipped from review due to trivial changes (1)
🚧 Files skipped from review as they are similar to previous changes (1)
⏰ Context from checks skipped due to timeout of 90000ms (2)
✨ Finishing Touches
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
Documentation and Community
|
💼 Build Files |
Update develop
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 5
🔭 Outside diff range comments (2)
packages/signers/kadena/tests/sign.test.ts (1)
26-26
: 💡 Verification agent🧩 Analysis chain
Verify that all mnemonic usage is updated consistently.
The code has been updated to use the new MnemonicWithExtraWord object format, but we should verify that this is consistent across the codebase.
Also applies to: 38-38, 49-49
🏁 Script executed:
#!/bin/bash # Check other places where generate() is called with mnemonic rg -A 2 -B 2 "generate\(" --glob "*.ts" | grep -v "mnemonic:"Length of output: 21001
Ensure all
generate()
calls use the newMnemonicWithExtraWord
formatWe’ve updated
generate()
to accept a{ mnemonic: string; extraWord?: string }
object, but many call sites still pass a rawMNEMONIC
string. Please update these to the new object form. Key locations:
- packages/signers/polkadot/tests/sign.test.ts
- packages/signers/polkadot/tests/generate.test.ts
- packages/signers/ethereum/tests/generate.test.ts
- packages/signers/bitcoin/tests/generate.test.ts
- packages/signers/kadena/tests/sign.test.ts and generate.test.ts
- packages/keyring/src/index.ts (all
.generate(this.#mnemonic, …)
invocations)Example change:
- const keypair = await signer.generate(MNEMONIC, path, options); + const keypair = await signer.generate( + { mnemonic: MNEMONIC, extraWord: "" }, + path, + options + );packages/extension/src/libs/keyring/keyring.ts (1)
1-102
: 💡 Verification agent🧩 Analysis chain
Verify all callers of getMnemonic are updated.
The getMnemonic method now returns a structured object instead of a string, which is a breaking change. Make sure all code that calls this method has been updated to handle the new return type.
🏁 Script executed:
#!/bin/bash # Find all places where getMnemonic is called to verify they handle the new return type # Search for getMnemonic calls rg -A 3 "getMnemonic\(" --type ts --type vueLength of output: 74
🏁 Script executed:
#!/bin/bash # Re-run search for getMnemonic calls across all relevant file extensions rg -n "getMnemonic\(" -g "*.ts" -g "*.js" -g "*.tsx" -g "*.jsx" -g "*.vue" --context 3Length of output: 2772
Update getMnemonic Call Sites to Handle Structured Return
The
getMnemonic
method now returns aMnemonicWithExtraWord
object instead of a raw string. Any callers must be updated to destructure and handle both fields.• packages/extension/src/ui/action/views/modal-sign/index.vue (lines ~76–79)
Update the.then
callback to unpack the object:- keyring.getMnemonic(password.value) - .then(mnemonic => { - emit('action:recoveryPhrase', mnemonic); - }) + keyring.getMnemonic(password.value) + .then(({ mnemonic, extraWord }) => { + emit('action:recoveryPhrase', { mnemonic, extraWord }); + })Please review any other
getMnemonic
calls to ensure they handle the new return type.🧰 Tools
🪛 Biome (1.9.4)
[error] 86-86: The function should not return a value because its return type is void.
The function is here:
'void' signals the absence of value. The returned value is likely to be ignored by the caller.
(lint/correctness/noVoidTypeReturn)
🧹 Nitpick comments (15)
packages/extension/src/ui/onboard/App.vue (1)
112-112
: Confirm updated wrapper height & refactor magic value.The height of the
.onboard__wrap
container was increased from 600px to 650px to accommodate the extra word input. Please verify that:
- This matches the latest design specifications and doesn’t introduce unwanted scrollbars on smaller viewports.
- Any UI snapshot or visual regression tests are updated accordingly.
As an optional refactor, consider extracting these magic values into Less variables (e.g.
@onboard-wrap-height
,@onboard-wrap-auto-max-height
) for better maintainability and consistency:@import '@action/styles/theme.less'; + @onboard-wrap-height: 650px; + @onboard-wrap-auto-max-height: 600px; .onboard { &__wrap { width: 460px; - height: 650px; + height: @onboard-wrap-height; /* ... */ &--auto-height { - height: auto; - max-height: 600px; + height: auto; + max-height: @onboard-wrap-auto-max-height; } } }packages/name-resolution/package.json (1)
44-44
: Update repository URL placeholder.The repository URL still contains a placeholder
<FILL_IT>
which should be updated to the actual repository URL.- "url": "git+https://github.com/<FILL_IT>" + "url": "git+https://github.com/enkryptcom/enkrypt"packages/extension/src/providers/ethereum/networks/base.ts (1)
4-4
: Variable name doesn't match the new module source.The import source has changed from 'simplehash' to 'goldrush', but the variable name
shNFTHandler
still suggests it's from SimpleHash.-import shNFTHandler from '@/libs/nft-handlers/goldrush'; +import goldrushNFTHandler from '@/libs/nft-handlers/goldrush';And update line 23 accordingly:
- NFTHandler: shNFTHandler, + NFTHandler: goldrushNFTHandler,packages/signers/polkadot/tests/generate.test.ts (1)
41-43
: Improved test cases with explicit extra word property.The test cases now correctly separate the password from the URI string and use an explicit
extraword
property instead.For consistency, consider using camelCase (
extraWord
) instead of lowercase (extraword
) to match the property name used when calling the function.- extraword: "password", + extraWord: "password",Also applies to: 72-74
packages/extension/src/libs/nft-handlers/unisat-ordinals.ts (2)
20-26
: Consider handling NFTs without preview images.The code currently skips NFTs that don't have a preview image (line 25). This could result in some NFTs not being displayed to users.
Consider using a placeholder image for NFTs without previews:
- if (!item.preview) return; + const preview = item.preview || imgNotFound;Then use
preview
instead ofitem.preview
in the NFTItem construction.
56-57
: Consider adding pagination support for large collections.The current implementation processes all NFTs at once, which could potentially lead to performance issues if a user has a large number of NFTs.
Consider implementing pagination support or limiting the number of NFTs processed in a single batch.
packages/extension/src/ui/action/views/settings/views/settings-recovery/index.vue (1)
132-162
: Good styling for extra word section, but with duplicated properties.The CSS for the extra word section is well-structured, but contains duplicated style properties:
- Line 137 duplicates
font-weight: bold
from line 136- Line 141 duplicates
color: black
from line 142.title { font-style: normal; font-weight: bold; - font-weight: bold; font-size: 16px; line-height: 24px; color: @primaryLabel; - color: black; margin-bottom: 6px; }packages/extension/src/libs/nft-handlers/helius-solana.ts (3)
7-8
: Consider environment-specific API endpoints.The hardcoded Helius API endpoint might limit flexibility. Consider making this configurable through environment variables or network configuration to allow for easier switching between test/production environments.
-const HELIUS_ENDPOINT = 'https://nodes.mewapi.io/rpc/sol'; +const HELIUS_ENDPOINT = process.env.HELIUS_ENDPOINT || 'https://nodes.mewapi.io/rpc/sol';
58-61
: Filter NFTs with suitable error handling.The filtering checks are appropriate but consider adding more detailed logging or fallback options for NFTs that are filtered out.
allItems.forEach(item => { - if (!item.content.files.length || !item.content.files[0].cdn_uri) return; - if (item.interface !== 'V1_NFT') return; + if (!item.content.files.length || !item.content.files[0].cdn_uri) { + console.debug('Skipping NFT without valid file URI'); + return; + } + if (item.interface !== 'V1_NFT') { + console.debug(`Skipping NFT with unsupported interface: ${item.interface}`); + return; + }
73-93
: Consider extracting NFT item creation to a separate function.The NFT item object is created in two places with identical logic. Consider extracting this to a helper function to improve maintainability and reduce duplication.
+ const createNFTItem = (item: HeliusNFTType): NFTItem => { + return { + contract: item.id, + id: item.id, + image: item.content.files[0].cdn_uri, + name: item.content.metadata?.name || item.content.metadata?.symbol || 'Unnamed NFT', + url: `https://magiceden.io/item-details/${item.id}`, + type: item.compression.compressed + ? NFTType.SolanaBGUM + : NFTType.SolanaToken, + }; + }; if (collections[item.id]) { - const tItem: NFTItem = { - contract: item.id, - id: item.id, - image: item.content.files[0].cdn_uri, - name: item.content.metadata.name || item.content.metadata.symbol, - url: `https://magiceden.io/item-details/${item.id}`, - type: item.compression.compressed - ? NFTType.SolanaBGUM - : NFTType.SolanaToken, - }; + const tItem = createNFTItem(item); collections[item.id].items.push(tItem); } else { const ret: NFTCollection = { name: item.content.metadata.name || item.content.metadata.symbol, description: item.content.metadata.description, image: item.content.files[0].cdn_uri || imgNotFound, contract: item.id, - items: [ - { - contract: item.id, - id: item.id, - image: item.content.files[0].cdn_uri, - name: item.content.metadata.name || item.content.metadata.symbol, - url: `https://magiceden.io/item-details/${item.id}`, - type: item.compression.compressed - ? NFTType.SolanaBGUM - : NFTType.SolanaToken, - }, - ], + items: [createNFTItem(item)], };packages/extension/src/libs/nft-handlers/goldrush.ts (3)
7-8
: Consider configurable endpoint for flexibility.Similar to the Helius handler, consider making the Goldrush endpoint configurable rather than hardcoded, allowing for easier environment switching.
-const GR_ENDPOINT = 'https://partners.mewapi.io/nftsv2/'; +const GR_ENDPOINT = process.env.GOLDRUSH_ENDPOINT || 'https://partners.mewapi.io/nftsv2/';
65-71
: Improve NFT filtering logic robustness.The code filters NFTs looking for specific fields. Consider a more robust approach to handle variations in the data structure and provide fallbacks.
const firstNftWithInfo = item.nft_data.find( nft => !!nft.external_data && - !!nft.external_data.description && !!nft.external_data.image, ); -if (!firstNftWithInfo) return; +if (!firstNftWithInfo) { + console.debug(`Skipping NFT contract ${item.contract_address} due to missing metadata`); + return; +}
73-104
: Consider handling empty descriptions more gracefully.The code assumes that
firstNftWithInfo.external_data.description
exists, but it might be empty. Consider providing a fallback for missing descriptions.const ret: NFTCollection = { name: item.contract_name, - description: firstNftWithInfo.external_data.description, + description: firstNftWithInfo.external_data.description || null, image: firstNftWithInfo.external_data.image_512 || firstNftWithInfo.external_data.image_256 || firstNftWithInfo.external_data.image_1024 || firstNftWithInfo.external_data.image || imgNotFound, contract: item.contract_address, items: item.nft_data .filter(nft => nft.external_data) .map(nft => { return { contract: item.contract_address, id: nft.token_id, image: nft.external_data.image_512 || nft.external_data.image_256 || nft.external_data.image_1024 || nft.external_data.image || imgNotFound, - name: nft.external_data.name, + name: nft.external_data.name || 'Unnamed NFT', url: getExternalURL(network, item.contract_address, nft.token_id), type: item.supports_erc.includes('erc1155') ? NFTType.ERC1155 : NFTType.ERC721, }; }), };packages/keyring/src/index.ts (2)
69-72
: Improved error message needed for extra word check.The error message "ExtrawordExists" doesn't clearly communicate what the issue is. Consider a more descriptive error message.
assert( !(await this.#storage.get(configs.STORAGE_KEYS.ENCRYPTED_EXTRA_WORD)), - Errors.KeyringErrors.ExtrawordExists, + Errors.KeyringErrors.MnemonicWithExtraWordAlreadyExists, );
111-131
: Consider adding validation for the extra word.The code doesn't perform any validation on the format or contents of the extra word. Consider adding basic validation to ensure it meets security requirements.
if (encryptedExtraWord) { const decryptedExtraWord = await decrypt(encryptedExtraWord, password); + const extraWordStr = decryptedExtraWord.toString("utf8").trim(); + + // Optional: Add validation if needed + if (extraWordStr.length === 0) { + console.warn("Empty extra word detected"); + } + return { mnemonic: decryptedMnemonic, - extraWord: decryptedExtraWord.toString("utf8"), + extraWord: extraWordStr, }; }
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
yarn.lock
is excluded by!**/yarn.lock
,!**/*.lock
📒 Files selected for processing (95)
package.json
(1 hunks)packages/extension-bridge/package.json
(1 hunks)packages/extension/package.json
(5 hunks)packages/extension/src/libs/keyring/keyring.ts
(3 hunks)packages/extension/src/libs/nft-handlers/goldrush.ts
(1 hunks)packages/extension/src/libs/nft-handlers/helius-solana.ts
(1 hunks)packages/extension/src/libs/nft-handlers/mew.ts
(1 hunks)packages/extension/src/libs/nft-handlers/simplehash-ordinals.ts
(0 hunks)packages/extension/src/libs/nft-handlers/simplehash-solana.ts
(0 hunks)packages/extension/src/libs/nft-handlers/simplehash.ts
(0 hunks)packages/extension/src/libs/nft-handlers/types/goldrush.ts
(1 hunks)packages/extension/src/libs/nft-handlers/types/helius.ts
(1 hunks)packages/extension/src/libs/nft-handlers/types/simplehash.ts
(0 hunks)packages/extension/src/libs/nft-handlers/types/unisat.ts
(1 hunks)packages/extension/src/libs/nft-handlers/unisat-ordinals.ts
(1 hunks)packages/extension/src/libs/rate-state/index.ts
(2 hunks)packages/extension/src/libs/utils/initialize-wallet.ts
(1 hunks)packages/extension/src/providers/bitcoin/libs/filter-ordinals.ts
(1 hunks)packages/extension/src/providers/bitcoin/networks/bitcoin.ts
(1 hunks)packages/extension/src/providers/common/libs/new-features.ts
(1 hunks)packages/extension/src/providers/ethereum/networks/arb-nova.ts
(0 hunks)packages/extension/src/providers/ethereum/networks/arb.ts
(2 hunks)packages/extension/src/providers/ethereum/networks/avax.ts
(2 hunks)packages/extension/src/providers/ethereum/networks/base.ts
(1 hunks)packages/extension/src/providers/ethereum/networks/bera.ts
(2 hunks)packages/extension/src/providers/ethereum/networks/blast.ts
(0 hunks)packages/extension/src/providers/ethereum/networks/bsc.ts
(2 hunks)packages/extension/src/providers/ethereum/networks/eth.ts
(2 hunks)packages/extension/src/providers/ethereum/networks/forma.ts
(0 hunks)packages/extension/src/providers/ethereum/networks/gno.ts
(2 hunks)packages/extension/src/providers/ethereum/networks/godwoken.ts
(0 hunks)packages/extension/src/providers/ethereum/networks/immutable-zkevm.ts
(0 hunks)packages/extension/src/providers/ethereum/networks/linea.ts
(2 hunks)packages/extension/src/providers/ethereum/networks/manta-pacific.ts
(0 hunks)packages/extension/src/providers/ethereum/networks/matic.ts
(2 hunks)packages/extension/src/providers/ethereum/networks/maticzk.ts
(0 hunks)packages/extension/src/providers/ethereum/networks/mode.ts
(0 hunks)packages/extension/src/providers/ethereum/networks/op-bnb.ts
(0 hunks)packages/extension/src/providers/ethereum/networks/op.ts
(2 hunks)packages/extension/src/providers/ethereum/networks/palm.ts
(0 hunks)packages/extension/src/providers/ethereum/networks/pop-apex.ts
(0 hunks)packages/extension/src/providers/ethereum/networks/rari.ts
(0 hunks)packages/extension/src/providers/ethereum/networks/scroll.ts
(2 hunks)packages/extension/src/providers/ethereum/networks/unichain.ts
(2 hunks)packages/extension/src/providers/ethereum/networks/zkgoerli.ts
(0 hunks)packages/extension/src/providers/ethereum/networks/zksync.ts
(2 hunks)packages/extension/src/providers/ethereum/ui/send-transaction/index.vue
(4 hunks)packages/extension/src/providers/solana/networks/solana.ts
(2 hunks)packages/extension/src/ui/action/App.vue
(2 hunks)packages/extension/src/ui/action/components/app-dialog/index.vue
(1 hunks)packages/extension/src/ui/action/components/app-menu/index.vue
(1 hunks)packages/extension/src/ui/action/store/networks-store.ts
(1 hunks)packages/extension/src/ui/action/views/accounts/components/add-account-form.vue
(1 hunks)packages/extension/src/ui/action/views/accounts/components/rename-account-form.vue
(2 hunks)packages/extension/src/ui/action/views/lock-screen/index.vue
(2 hunks)packages/extension/src/ui/action/views/modal-rate/index.vue
(3 hunks)packages/extension/src/ui/action/views/modal-sign/index.vue
(1 hunks)packages/extension/src/ui/action/views/network-nfts/components/network-nfts-category.vue
(1 hunks)packages/extension/src/ui/action/views/network-nfts/components/network-nfts-item.vue
(0 hunks)packages/extension/src/ui/action/views/settings/index.vue
(3 hunks)packages/extension/src/ui/action/views/settings/views/settings-recovery/index.vue
(4 hunks)packages/extension/src/ui/action/views/updates/index.vue
(1 hunks)packages/extension/src/ui/onboard/App.vue
(1 hunks)packages/extension/src/ui/onboard/create-wallet/double-check-phrase.vue
(1 hunks)packages/extension/src/ui/onboard/create-wallet/wallet-ready.vue
(1 hunks)packages/extension/src/ui/onboard/restore-wallet/backup-detected.vue
(4 hunks)packages/extension/src/ui/onboard/restore-wallet/enter-recovery-phrase.vue
(2 hunks)packages/extension/src/ui/onboard/restore-wallet/store.ts
(1 hunks)packages/extension/src/ui/onboard/restore-wallet/type-password.vue
(1 hunks)packages/hw-wallets/package.json
(2 hunks)packages/keyring/package.json
(1 hunks)packages/keyring/src/configs.ts
(1 hunks)packages/keyring/src/index.ts
(5 hunks)packages/keyring/tests/generate.test.ts
(7 hunks)packages/name-resolution/package.json
(1 hunks)packages/request/package.json
(1 hunks)packages/signers/bitcoin/package.json
(2 hunks)packages/signers/bitcoin/src/index.ts
(1 hunks)packages/signers/bitcoin/tests/generate.test.ts
(2 hunks)packages/signers/ethereum/package.json
(1 hunks)packages/signers/ethereum/src/index.ts
(2 hunks)packages/signers/ethereum/tests/generate.test.ts
(2 hunks)packages/signers/kadena/package.json
(1 hunks)packages/signers/kadena/src/index.ts
(1 hunks)packages/signers/kadena/tests/generate.test.ts
(2 hunks)packages/signers/kadena/tests/sign.test.ts
(1 hunks)packages/signers/polkadot/package.json
(1 hunks)packages/signers/polkadot/src/index.ts
(2 hunks)packages/signers/polkadot/tests/generate.test.ts
(5 hunks)packages/signers/polkadot/tests/sign.test.ts
(1 hunks)packages/storage/package.json
(1 hunks)packages/swap/package.json
(1 hunks)packages/types/package.json
(1 hunks)packages/types/src/index.ts
(4 hunks)packages/utils/package.json
(2 hunks)
💤 Files with no reviewable changes (18)
- packages/extension/src/providers/ethereum/networks/manta-pacific.ts
- packages/extension/src/providers/ethereum/networks/zkgoerli.ts
- packages/extension/src/providers/ethereum/networks/mode.ts
- packages/extension/src/providers/ethereum/networks/forma.ts
- packages/extension/src/providers/ethereum/networks/maticzk.ts
- packages/extension/src/providers/ethereum/networks/rari.ts
- packages/extension/src/providers/ethereum/networks/op-bnb.ts
- packages/extension/src/providers/ethereum/networks/palm.ts
- packages/extension/src/ui/action/views/network-nfts/components/network-nfts-item.vue
- packages/extension/src/providers/ethereum/networks/blast.ts
- packages/extension/src/providers/ethereum/networks/pop-apex.ts
- packages/extension/src/providers/ethereum/networks/arb-nova.ts
- packages/extension/src/providers/ethereum/networks/godwoken.ts
- packages/extension/src/providers/ethereum/networks/immutable-zkevm.ts
- packages/extension/src/libs/nft-handlers/simplehash.ts
- packages/extension/src/libs/nft-handlers/simplehash-solana.ts
- packages/extension/src/libs/nft-handlers/types/simplehash.ts
- packages/extension/src/libs/nft-handlers/simplehash-ordinals.ts
🧰 Additional context used
🧬 Code Graph Analysis (12)
packages/signers/kadena/tests/generate.test.ts (1)
packages/signers/kadena/src/index.ts (1)
KadenaSigner
(11-50)
packages/signers/bitcoin/tests/generate.test.ts (1)
packages/signers/bitcoin/src/index.ts (1)
BitcoinSigner
(12-58)
packages/signers/polkadot/src/index.ts (1)
packages/types/src/index.ts (2)
MnemonicWithExtraWord
(204-204)SignOptions
(198-198)
packages/signers/kadena/src/index.ts (2)
packages/types/src/index.ts (3)
SignerInterface
(186-186)MnemonicWithExtraWord
(204-204)KeyPair
(190-190)packages/utils/src/index.ts (1)
bufferToHex
(38-38)
packages/keyring/tests/generate.test.ts (4)
packages/utils/src/index.ts (1)
MemoryStorage
(43-43)packages/storage/src/index.ts (1)
Storage
(5-44)packages/keyring/src/index.ts (1)
password
(111-131)packages/types/src/index.ts (2)
KeyRecordAdd
(189-189)SignerType
(187-187)
packages/signers/ethereum/src/index.ts (1)
packages/types/src/index.ts (2)
MnemonicWithExtraWord
(204-204)KeyPair
(190-190)
packages/extension/src/libs/keyring/keyring.ts (2)
packages/keyring/src/index.ts (1)
password
(111-131)packages/types/src/index.ts (1)
MnemonicWithExtraWord
(204-204)
packages/extension/src/libs/nft-handlers/helius-solana.ts (3)
packages/extension/src/types/provider.ts (1)
NodeType
(189-208)packages/extension/src/types/nft.ts (2)
NFTCollection
(17-23)NFTItem
(9-16)packages/extension/src/libs/nft-handlers/types/helius.ts (2)
HeliusNFTType
(1-19)HeliusResponse
(21-26)
packages/extension/src/ui/onboard/restore-wallet/store.ts (1)
packages/keyring/src/index.ts (1)
password
(111-131)
packages/signers/polkadot/tests/generate.test.ts (2)
packages/signers/polkadot/src/index.ts (2)
PolkadotSigner
(32-149)SignerType
(30-30)packages/types/src/index.ts (1)
SignerType
(187-187)
packages/signers/bitcoin/src/index.ts (1)
packages/types/src/index.ts (3)
SignerInterface
(186-186)MnemonicWithExtraWord
(204-204)KeyPair
(190-190)
packages/extension/src/libs/nft-handlers/goldrush.ts (3)
packages/extension/src/types/provider.ts (1)
NodeType
(189-208)packages/extension/src/types/nft.ts (1)
NFTCollection
(17-23)packages/extension/src/libs/nft-handlers/types/goldrush.ts (2)
GRNFTType
(1-23)GRResponse
(25-29)
⏰ Context from checks skipped due to timeout of 90000ms (2)
- GitHub Check: buildAll
- GitHub Check: test
🔇 Additional comments (156)
packages/extension/src/ui/action/views/updates/index.vue (1)
46-47
: Branding text update approvedThe release message has been updated from “With love from Kosala and the entire team.” to “With love from MEW Team.” This is a purely textual change with no impact on functionality. Everything looks good here.
packages/extension/src/libs/rate-state/index.ts (2)
5-5
: Improved user experience by extending the rating popup interval.The popup timing has been increased from 2 weeks to 30 days, which reduces the frequency of interruptions for users and creates a better experience.
35-35
: Good clarification comment.The added comment clearly explains this initialization block's purpose, improving code readability and maintainability.
packages/extension/src/ui/action/components/app-dialog/index.vue (1)
40-40
: Documentation improvement enhances clarity for component usage.This JSDoc example update helpfully demonstrates the proper implementation of the
close:dialog
event handler, matching the component's emit definition on line 63-65. This makes it easier for developers to understand how to correctly integrate this dialog component.packages/extension/src/ui/action/App.vue (2)
2-2
: Simplified class binding improves code readability.The class binding for the root element has been streamlined by removing conditional classes for expanded/collapsed states, keeping only what's necessary (the locked state check and the static 'app' class).
68-68
: Modal component usage updated to follow best practices.The
modal-rate
component implementation has been improved by switching from conditional rendering with a close event handler to usingv-model
binding for visibility control. This aligns with Vue's recommended patterns for component state management and matches the refactored implementation of the modal-rate component.packages/extension/src/ui/action/views/lock-screen/index.vue (1)
117-117
: UI simplification eliminates unnecessary conditional styles.Setting the container width to 100% rather than using dynamic width toggling based on expanded/collapsed states reduces complexity in the UI and aligns with the broader UI simplification efforts across the extension.
packages/extension/src/ui/action/views/modal-rate/index.vue (6)
2-16
: Refactored to use centralized dialog component.The modal implementation has been improved by leveraging the reusable
app-dialog
component instead of custom overlay and container structures. This reduces code duplication and ensures consistent modal behavior across the application.
20-20
: Added import for dialog component.Correctly added the import for the
app-dialog
component that's now being used.
25-25
: Using defineModel for two-way binding.Switched to using Vue 3's
defineModel
for creating a reactive model variable that enables clean two-way binding with the parent component. This is a modern approach that replaces the older prop+emit pattern.
30-31
: Dialog closing logic updated.The close function now directly manipulates the model's value instead of emitting events, aligning with the new dialog management approach using
v-model
.
36-37
: Consistent dialog closing pattern in goToFeedback function.The function now closes the dialog using the same pattern as the main close function, maintaining consistency throughout the component.
66-67
: Added proper dialog closing to goToRate function.The dialog is now properly closed after opening the rating page, ensuring a smooth user experience.
package.json (1)
37-37
: Dependency version bump looks good.This minor version update to
@swc/core
from 1.11.9 to 1.11.21 is part of a coordinated dependency update across the project. It's a good practice to keep dependencies current for security fixes and performance improvements.packages/extension/src/libs/nft-handlers/mew.ts (1)
10-10
:❓ Verification inconclusive
Verify if switching to a development endpoint is intentional.
The MEW API endpoint has been changed from a production URL (
mainnet.mewwallet.dev
) to a development URL (development.mewwallet.dev
). This could potentially impact NFT data reliability and availability.
🏁 Script executed:
#!/bin/bash # Check if the MEW handler is still being actively used in network configurations echo "Checking for references to mew NFT handler in network configurations..." rg -i "mewNFTHandler" packages/extension/src/providers/Length of output: 208
🏁 Script executed:
#!/bin/bash # Search for definitions and usages of the MEW endpoint and handler echo "1) Searching for MEW_ENDPOINT definition and references…" rg -n "MEW_ENDPOINT" . echo echo "2) Searching for 'development.mewwallet.dev' occurrences…" rg -n "development.mewwallet.dev" . echo echo "3) Checking for imports of the MEW NFT handler (mew.ts)…" rg -n "nft-handlers/mew" -n packages/extension/srcLength of output: 853
Confirm use of the development MEW API endpoint
It looks like
MEW_ENDPOINT
inpackages/extension/src/libs/nft-handlers/mew.ts
was changed from the production host (mainnet.mewwallet.dev
) to the development host (development.mewwallet.dev
). Additionally, this handler isn’t imported anywhere else inpackages/extension/src
, suggesting it may not be active in your current configuration.Please verify:
- Is switching to the development endpoint intentional?
- Should this URL be driven by an environment variable or config flag (dev vs. prod)?
- If the handler isn’t in use, remove or register it appropriately.
packages/extension/src/ui/action/views/network-nfts/components/network-nfts-category.vue (2)
7-7
: Improved tooltip positioning with teleport.Replacing
is-top-right
withteleport-to-app
likely leverages Vue's teleport feature to render the tooltip at the app root level, which can improve positioning and prevent clipping issues when near screen edges.
10-10
: NFT collection name truncation shortened.The truncation length for collection names has been reduced from 40 to 25 characters. While this creates a more consistent UI appearance, verify that this shorter length still provides enough context for users to identify their NFT collections.
Consider whether 25 characters is sufficient for typical NFT collection names. For reference, many NFT collections have descriptive names that might be cut off with this shorter limit.
packages/name-resolution/package.json (1)
25-40
:❓ Verification inconclusive
Development dependencies significantly updated.
Multiple dependencies have received major version updates:
@types/node
: 20.x → 22.x- TypeScript ESLint packages: 6.x → 8.x
eslint
: 8.x → 9.xtypescript
: 5.3.x → 5.8.xvitest
: 1.x → 3.xThese updates align with similar changes across other packages in the project and represent significant modernization of the development toolchain.
🏁 Script executed:
#!/bin/bash # Verify that the project still builds and tests pass with these updated dependencies echo "Checking TypeScript version compatibility..." cd packages/name-resolution npx tsc --version echo "Running a sample build to verify compatibility..." yarn buildLength of output: 1116
Manual build and test verification required
The development dependencies in packages/name-resolution/package.json (lines 25–40) have been bumped to more recent major versions:
@types/node
: 20.x → 22.x@typescript-eslint/eslint-plugin
&parser
: 6.x → 8.xeslint
: 8.x → 9.xtypescript
: 5.3.x → 5.8.xvitest
: 1.x → 3.xThese align with updates across other packages in the repo, but automated checks in the sandbox failed due to missing installs. Please verify locally that the compiler and build still succeed:
cd packages/name-resolution yarn install npx tsc --version # should report TypeScript 5.8.3 yarn build # confirm no errorspackages/utils/package.json (3)
27-27
: Approve dependency bump for @polkadot/util-crypto
The upgrade from^13.4.3
to^13.4.4
is consistent with other packages and should include any minor fixes or improvements.
33-38
: Approve devDependencies upgrade: Node types & ESLint plugins
Bumping@types/node
,@typescript-eslint/eslint-plugin
,@typescript-eslint/parser
,eslint
, andeslint-config-prettier
aligns your linting and type-checking toolchain.
47-50
: Approve TypeScript, ESLint CLI & Vitest upgrades
Updatingtypescript
,typescript-eslint
, andvitest
ensures you’re on the latest stable test and compile toolset.packages/signers/ethereum/package.json (3)
35-38
: Approve devDependencies bump: Node types & ESLint plugins
Versions of@types/node
,@typescript-eslint/eslint-plugin
,@typescript-eslint/parser
, andeslint
have been aligned with the monorepo standard.
40-40
: Approve ESLint Prettier config upgrade
eslint-config-prettier
updated to^10.1.2
, matching the rest of the repo.
48-50
: Approve TypeScript, ESLint CLI & Vitest upgrades
Upgradingtypescript
,typescript-eslint
, andvitest
keeps the package in sync with the latest developer tooling.packages/storage/package.json (3)
30-33
: Approve devDependencies bump: Node types & ESLint plugins
The updates to@types/node
,@typescript-eslint/eslint-plugin
,@typescript-eslint/parser
, andeslint
align your linting and typing tools with the monorepo.
35-35
: Approve ESLint Prettier config upgrade
Bumpingeslint-config-prettier
to^10.1.2
ensures consistent formatting rules.
43-45
: Approve TypeScript, ESLint CLI & Vitest upgrades
Keepingtypescript
,typescript-eslint
, andvitest
in lockstep with the repo helps reduce version drift.packages/keyring/package.json (4)
32-32
: Approve dependency bump for @polkadot/util
Upgrading from^13.4.3
to^13.4.4
matches other packages and includes latest maintenance patches.
37-40
: Approve devDependencies bump: Node types & ESLint plugins
The@types/node
,@typescript-eslint/eslint-plugin
,@typescript-eslint/parser
, andeslint
upgrades keep your linting and typing tools current.
42-42
: Approve ESLint Prettier config upgrade
eslint-config-prettier
bumped to^10.1.2
for consistent formatting across the repo.
50-52
: Approve TypeScript, ESLint CLI & Vitest upgrades
This ensurestypescript
,typescript-eslint
, andvitest
match the monorepo’s tooling versions.packages/swap/package.json (5)
29-29
: Approve bump of bignumber.js
Updating from9.1.2
to9.2.1
should include important numeric fixes—looks good.
34-34
: Approve bump of rango-sdk-basic
Upgrading from0.1.64
to0.1.65
aligns with minor improvements noted upstream.
42-45
: Approve devDependencies bump: Node types & ESLint plugins
These updates ensure your developer tooling (types, parsers, and linters) stays current.
47-47
: Approve ESLint Prettier config upgrade
Moving toeslint-config-prettier@^10.1.2
maintains consistent formatting rules.
55-57
: Approve TypeScript, ESLint CLI & Vitest upgrades
Syncingtypescript
,typescript-eslint
, andvitest
maintains consistency across all packages.packages/request/package.json (1)
34-39
: Consistent development tooling version alignment
All key TypeScript and ESLint tooling packages (@types/node
,@typescript-eslint/*
,eslint
,eslint-config-prettier
,typescript
,typescript-eslint
, andvitest
) have been bumped to match the monorepo’s unified versions. This ensures consistent linting, type checking, and testing across packages.Also applies to: 47-49
packages/types/package.json (1)
27-32
: Synchronized devDependencies across the monorepo
Development dependencies (@types/node
,@typescript-eslint/*
,eslint
,eslint-config-prettier
,typescript
, andtypescript-eslint
) have been updated to the same versions used in other packages to maintain consistency in build and lint workflows.Also applies to: 40-41
packages/signers/bitcoin/package.json (2)
26-26
: Patch upgrade of noble-secp256k1
The@noble/secp256k1
runtime dependency has been bumped from1.7.1
to1.7.2
, bringing in the latest minor patch improvements and security fixes.
35-40
: DevDependencies brought in line with monorepo standards
TypeScript and ESLint tooling (@types/node
,@typescript-eslint/*
,eslint
,eslint-config-prettier
,typescript
,typescript-eslint
, andvitest
) have been aligned to the same versions used across other signer packages.Also applies to: 48-50
packages/extension/package.json (3)
3-3
: Release version bump to v2.6.0
The package version has been updated from2.5.1
to2.6.0
to mark this release.
26-26
: Runtime dependency updates
Various runtime dependencies have been upgraded to their latest minor/patch versions, including analytics, Metaplex, Polkadot, Solana helpers, bignumber.js, and Pinia. These updates ensure compatibility with upstream changes and bring in bug fixes and performance improvements.Also applies to: 43-53, 55-55, 61-61, 76-76
100-102
: DevDependencies aligned with monorepo
All key developer tooling (@tsconfig/node20
, type definitions, Vite and Rollup plugins, ESLint/Vue plugins,jsdom
,less
,rollup
,typescript
,vite
, andvitest
) have been synchronized to the versions used across other packages, guaranteeing a uniform development experience.Also applies to: 108-108, 114-114, 118-118, 120-121, 123-124, 129-129, 134-134, 136-136, 139-139
packages/signers/kadena/package.json (3)
31-31
: Upgrade Polkadot crypto utility
The@polkadot/util-crypto
dependency has been bumped from^13.4.3
to^13.4.4
, incorporating the latest patch fixes and improvements.
33-38
: Core devDependencies update
Key tooling (@types/node
,@typescript-eslint/*
,eslint
, andeslint-config-prettier
) have been aligned to the monorepo’s standard versions to maintain consistency in linting and type checking.
46-48
: TypeScript and testing dependencies synchronized
The TypeScript compiler, ESLint TypeScript plugin, and Vitest test runner have been updated to the same versions used across other packages, ensuring uniform build and test environments.packages/extension-bridge/package.json (1)
47-64
: Dependency version updates look good.All development dependencies have been updated to newer versions, which is good for security patches and new features. The changes are consistent with the updates across other packages in the monorepo.
packages/hw-wallets/package.json (2)
25-40
: Development dependency updates look good.All development dependencies have been updated to newer versions, consistent with other packages in the monorepo.
55-64
:❓ Verification inconclusive
Hardware wallet library updates should be verified with devices.
The updates to Ledger, Polkadot, and Trezor libraries could potentially affect hardware wallet connectivity.
🏁 Script executed:
#!/bin/bash # Check for breaking changes in changelogs rg -F "BREAKING" -A 5 -B 5 $(find . -name "yarn.lock" -o -name "package-lock.json")Length of output: 91
Verify hardware wallet library updates
Please ensure these dependency bumps haven’t introduced breaking changes by:
Testing connectivity end-to-end with actual Ledger, Polkadot, and Trezor devices.
Reviewing each package’s upstream CHANGELOG for “BREAKING” entries between the previous and new versions.
You can automate this check with a script like:#!/usr/bin/env bash for pkg in \ @ledgerhq/hw-app-btc \ @ledgerhq/hw-app-eth \ @ledgerhq/hw-app-solana \ @ledgerhq/hw-transport \ @ledgerhq/hw-transport-webusb \ @ledgerhq/live-common \ @polkadot/types \ @polkadot/util \ @trezor/connect \ @trezor/connect-webextension; do # Derive repository URL and fetch CHANGELOG.md repo=$(npm view "$pkg" repository.url \ | sed -e 's/^git+//' -e 's/\.git$//') echo "Checking BREAKING changes in $pkg → $repo" curl -s "$repo/raw/master/CHANGELOG.md" \ | grep -Hn "BREAKING" || echo " • No BREAKING entries found" doneManually inspect any flagged entries and confirm device workflows still function as expected.
packages/signers/kadena/tests/sign.test.ts (1)
7-10
: Mnemonic format updated correctly for new MnemonicWithExtraWord type.The test has been properly updated to use the new object format that supports an optional extra word. This change aligns with the broader enhancement across signer packages to support extra words for additional security.
packages/extension/src/ui/action/views/accounts/components/add-account-form.vue (1)
164-164
: Good UI refinement for better header containment.Setting a max-width for the heading ensures that longer network names don't cause layout issues in the form, improving the visual consistency and preventing text overflow.
packages/signers/polkadot/tests/sign.test.ts (1)
10-13
: Mnemonic format updated to support optional extra word.This change aligns with the broader implementation of the
MnemonicWithExtraWord
type across the codebase, allowing for an optional extra word to be included with the mnemonic phrase.The mnemonic is now passed as an object with a
mnemonic
property rather than a plain string. Make sure the corresponding implementation in the Polkadot signer has been updated to handle this new format correctly.packages/keyring/src/configs.ts (1)
5-5
: Added storage key for the new extra word feature.This addition supports the new feature of securely storing an optional extra mnemonic word alongside the main mnemonic phrase, following the existing pattern for storage keys.
The
ENCRYPTED_EXTRA_WORD
storage key will be used by the KeyRing implementation to persist the encrypted extra word independently from the main mnemonic.packages/extension/src/providers/ethereum/networks/arb.ts (1)
7-7
: NFT handler changed from simplehash to goldrushThe NFT handler has been updated from SimpleHash to Goldrush as part of the NFT handling refactor mentioned in the PR description. This change aligns with similar updates across other network configuration files.
Also applies to: 24-24
packages/extension/src/ui/onboard/create-wallet/double-check-phrase.vue (1)
60-63
: Function call updated to support the new mnemonic with extra word formatThe function call signature to
onboardInitializeWallets
has been updated to use a named parameter object pattern, matching the refactoring to support the optional "extra word" feature. This allows the function to handle the extra word parameter even though it's not used in this particular flow.packages/extension/src/providers/bitcoin/libs/filter-ordinals.ts (1)
14-16
:❓ Verification inconclusive
Interface extended to support new Unisat Ordinals handler
The
OridnalType
interface has been enhanced with additional properties needed by the new Unisat Ordinals handler, replacing the previous SimpleHash implementation. These new fields will provide richer metadata for Bitcoin Ordinals NFTs.However, I notice that while the interface has been extended, the actual implementation in this file doesn't yet utilize these new properties. Make sure they're properly populated when fetching ordinals data.
🏁 Script executed:
#!/bin/bash # Check if the new fields are populated in the ordinals API response curl -s "${OrdinalsEndpoint}bitcoin/ordinals/inscriptions?address=bc1qexample&cursor=0&size=1" | jq '.data.list[0] | {preview, inscriptionNumber, location}'Length of output: 139
🏁 Script executed:
#!/bin/bash # Display the contents of the filter-ordinals.ts file to verify usage of the new fields cat packages/extension/src/providers/bitcoin/libs/filter-ordinals.tsLength of output: 1900
Verify and populate new
OridnalType
fieldsThe
OridnalType
interface now includespreview
,inscriptionNumber
, andlocation
, but the current implementation merely casts the API response and never maps or uses these properties. Please:
- Confirm the ordinals API actually returns
preview
,inscriptionNumber
, andlocation
(e.g., call the full endpoint with a real address and inspect the JSON keys).- Add explicit mapping in
getAllOrdinals
to extract and assign those fields if the API response uses different property names.- Update downstream logic (e.g.,
filterOutOrdinals
or UI layers) to leverage the new metadata where needed.packages/extension/src/providers/ethereum/networks/scroll.ts (1)
7-7
: NFT handler changed from simplehash to goldrushThe NFT handler has been updated from SimpleHash to Goldrush as part of the broader NFT handling refactor mentioned in the PR description. This change is consistent with the updates in other network configuration files.
Also applies to: 21-21
packages/extension/src/providers/ethereum/networks/gno.ts (1)
7-7
: NFT handler migration from SimpleHash to Goldrush looks goodThe migration from SimpleHash to the new Goldrush NFT handler aligns with the broader refactoring of NFT handling throughout the codebase as mentioned in the PR summary.
Also applies to: 24-24
packages/extension/src/ui/onboard/restore-wallet/type-password.vue (1)
45-49
: API update for extraWord support looks goodThe update to pass an object with
mnemonic
,password
, andextraWord
properties properly implements the new wallet initialization API that supports the optional extra word feature.packages/extension/src/providers/solana/networks/solana.ts (1)
5-5
: NFT handler migration from SimpleHash to Helius looks goodThe migration from SimpleHash-Solana to the new Helius Solana NFT handler aligns with the broader refactoring of NFT handling throughout the codebase as mentioned in the PR summary.
Also applies to: 24-24
packages/extension/src/providers/ethereum/networks/bera.ts (1)
5-5
: NFT handler correctly migrated from SimpleHash to GoldrushThe change to use the Goldrush NFT handler instead of SimpleHash aligns with the overall migration pattern in this PR. This update maintains the same functionality while transitioning to the new handler implementation.
Also applies to: 22-22
packages/extension/src/providers/ethereum/networks/op.ts (1)
7-7
: NFT handler correctly migrated from SimpleHash to GoldrushThe change to use the Goldrush NFT handler instead of SimpleHash is consistent with the overall migration pattern in this PR. This update maintains the same functionality while transitioning to the new handler implementation.
Also applies to: 24-24
packages/extension/src/providers/ethereum/networks/avax.ts (1)
7-7
: NFT handler correctly migrated from SimpleHash to GoldrushThe change to use the Goldrush NFT handler instead of SimpleHash follows the same pattern as other Ethereum-compatible networks in this PR. This update maintains the same functionality while transitioning to the new handler implementation.
Also applies to: 24-24
packages/signers/ethereum/tests/generate.test.ts (2)
5-8
: LGTM: Updated test to use the new mnemonic object formatThe test has been properly updated to use the new
MnemonicWithExtraWord
format, which supports the new optional extra word feature while maintaining backward compatibility.
30-55
: Well-structured test suite for the new extra word functionalityThe new test suite thoroughly verifies that Ethereum addresses are correctly generated when using an extra word alongside the mnemonic. The tests cover multiple derivation paths, ensuring comprehensive test coverage of this new feature. The test cases and expected addresses appear well-defined.
packages/extension/src/providers/ethereum/networks/matic.ts (1)
5-5
: NFT handler migration implemented successfullyThe update from SimpleHash to Goldrush for NFT handling has been correctly implemented. This change aligns with the broader migration effort mentioned in the PR summary.
Also applies to: 23-23
packages/extension/src/providers/ethereum/networks/unichain.ts (1)
4-4
: NFT handler migration implemented successfullyThe update to use the Goldrush NFT handler has been correctly implemented for the Unichain network. This change matches the consistent pattern applied across all Ethereum-based networks.
Also applies to: 21-21
packages/extension/src/providers/ethereum/networks/eth.ts (1)
5-5
: NFT handler standardization implemented correctlyThe main Ethereum network has been successfully updated to use the Goldrush NFT handler. This is a positive standardization, as the network previously used a different handler (mewNFTHandler) compared to other networks that used SimpleHash.
Also applies to: 23-23
packages/extension/src/providers/ethereum/networks/linea.ts (1)
4-4
: NFT handler migration implemented successfullyThe Linea network configuration has been correctly updated to use the Goldrush NFT handler, consistent with the changes made to other Ethereum-based networks in this PR.
Also applies to: 22-22
packages/extension/src/ui/onboard/restore-wallet/store.ts (3)
7-7
: Added new state variable for extra word support.The addition of the
extraWord
state supports the feature for optional extra word in mnemonic-based wallet creation and recovery, which aligns with the PR objectives.
15-17
: Added setter function for the extra word.This setter function follows the same pattern as the existing setters for mnemonic and password, maintaining consistency in the codebase.
19-19
: Updated return to expose the new extraWord state and setter.The store now correctly exposes both the extraWord state and its setter function alongside the existing properties.
packages/extension/src/providers/ethereum/networks/zksync.ts (2)
7-7
: NFT handler import updated from SimpleHash to Goldrush.This change aligns with the PR objective of replacing legacy SimpleHash-based handlers with new handlers. The Goldrush handler is now used for zkSync NFT functionality.
23-23
: Updated NFTHandler assignment in network options.The zkSyncOptions now uses the imported Goldrush NFT handler, completing the migration from SimpleHash to Goldrush for zkSync network.
packages/signers/kadena/tests/generate.test.ts (2)
5-8
: Updated mnemonic format to use the new object structure.The MNEMONIC constant has been updated to use the new object format containing a
mnemonic
property instead of a direct string, conforming to the newMnemonicWithExtraWord
type expected by the KadenaSigner.
40-75
: Added test suite for extra word functionality.This new test suite verifies that address generation works correctly with an extra word provided. It tests multiple derivation paths and ensures the expected addresses are generated, providing good test coverage for the new feature.
The test follows the same structure as the original test suite, maintaining consistency while adding coverage for the new functionality.
packages/extension/src/ui/action/views/modal-sign/index.vue (2)
44-44
: Added import for MnemonicWithExtraWord type.The import of the new type supports the changes in the emit signature, ensuring type safety when emitting recovery phrases.
49-49
: Updated emit signature to use MnemonicWithExtraWord type.The emit signature for 'action:recoveryPhrase' now uses the structured MnemonicWithExtraWord type instead of a plain string, ensuring that both the mnemonic phrase and optional extra word can be properly passed through the event system.
This change aligns with the modifications in the KeyRing class (seen in the relevant code snippets) where the getMnemonic method now returns a MnemonicWithExtraWord object.
packages/extension/src/ui/action/views/accounts/components/rename-account-form.vue (1)
57-57
: Good implementation of asynchronous backup after account renameThe addition of the BackupState import and the asynchronous backup after successful account renaming ensures the state is properly persisted without blocking the UI flow.
However, consider improving the error handling by at least adding more context to the error message instead of just "Failed to backup":
- backupState.backup(false).catch(() => { - console.error('Failed to backup'); + backupState.backup(false).catch((error) => { + console.error('Failed to backup after account rename:', error);Also applies to: 107-110
packages/extension/src/providers/ethereum/networks/bsc.ts (1)
6-6
: Successfully migrated from simplehash to goldrush NFT handlerThe change appropriately switches the BSC network from using the deprecated simplehash NFT handler to the new goldrush NFT handler, which is consistent with the broader migration across Ethereum-based networks.
Also applies to: 23-23
packages/extension/src/providers/common/libs/new-features.ts (1)
3-3
: Cleared the newNetworks arrayThe networks previously marked as "new" have been removed from the array, indicating they are now considered established networks in the system and don't need special highlighting.
Consider adding a comment explaining why the array was cleared to provide context for future developers:
- const newNetworks: NetworkNames[] = []; + // Networks are no longer marked as "new" after their initial introduction period + const newNetworks: NetworkNames[] = [];packages/signers/polkadot/package.json (1)
27-28
:❓ Verification inconclusive
Dependency versions have been updated
The updates to @PolkaDot packages and dev dependencies keep the package aligned with the rest of the monorepo.
The jump from ESLint v8 to v9 (line 37) is a major version update that could introduce breaking changes. Verify that your ESLint configuration is compatible with v9:
Also applies to: 34-38, 47-49
🏁 Script executed:
#!/bin/bash # Check if there are any ESLint configuration files that might need updates echo "Checking for ESLint configuration files:" find . -name ".eslintrc*" -o -name "eslint.config.js" | grep -v "node_modules" # Check ESLint version compatibility echo "Checking ESLint version compatibility:" npm list eslintLength of output: 806
🏁 Script executed:
#!/bin/bash # Extract the ESLint version from devDependencies in the Polkadot signer package echo "ESLint version in packages/signers/polkadot/package.json:" jq '.devDependencies.eslint' packages/signers/polkadot/package.jsonLength of output: 202
Verify ESLint v9 compatibility
We’ve bumped ESLint in
packages/signers/polkadot
to^9.24.0
. Before approving, please ensure your configs still work under ESLint v9:• packages/signers/polkadot/.eslintrc.json
• Any other packages with updated ESLint (find all.eslintrc*.json
underpackages/
)Confirm that all
extends
, plugins and parserOptions remain valid in ESLint v9 and run a full lint pass (eslint --version
+npm run lint
) to catch any breaking changes.packages/signers/bitcoin/tests/generate.test.ts (2)
4-8
: Good fix: Test suite description now accurately reflects the Bitcoin functionality being tested.The correction of the suite name from "Ethreum address generate" to "bitcoin address generate" improves clarity and accuracy of the test suite. The MNEMONIC structure has been properly updated to use an object with a
mnemonic
property, aligning with the newMnemonicWithExtraWord
type changes.
30-55
: Well-structured test suite for the new extra word functionality.This new test suite comprehensively tests Bitcoin address generation with the extra word parameter. I appreciate the thorough testing of multiple derivation paths (m/44', m/49') with different indices, ensuring compatibility with the new mnemonic format across various derivation scenarios.
packages/extension/src/ui/action/store/networks-store.ts (1)
43-53
: Improved implementation preserves network order and handles missing networks.The refactored
pinnedNetworks
computed property now maps overpinnedNetworkNames
first, which preserves the exact order of networks as defined in the pinned list. It also gracefully handles the case where a network might be inpinnedNetworkNames
but not found inallNetworks
by filtering out nulls, making the code more robust.packages/signers/kadena/src/index.ts (2)
1-5
: Correctly updated imports to include the new MnemonicWithExtraWord type.The addition of the
MnemonicWithExtraWord
type import from@enkryptcom/types
is necessary to support the parameter type change in thegenerate
method.
12-19
: Successfully implemented extra word support in the KadenaSigner.The
generate
method has been properly updated to:
- Accept a
MnemonicWithExtraWord
object instead of a plain string- Pass both the mnemonic and optional extra word to
mnemonicToSeedSync
This change aligns with the consistent pattern being implemented across all signers and maintains the original functionality while adding support for the extra security feature.
packages/extension/src/ui/action/components/app-menu/index.vue (1)
228-230
: Type enhancement ensures proper network type determination.The function parameter type now explicitly requires the
isCustomNetwork
boolean property, which is correctly used in the network type determination logic at line 245. This type enhancement ensures that the necessary property is available when the network type needs to be determined and passed to tracking functions.packages/extension/src/libs/nft-handlers/types/goldrush.ts (2)
1-23
: Well-structured NFT type definition with comprehensive fieldsThe
GRNFTType
interface provides a clear and complete structure for NFT data, including contract information, token details, ownership information, and multiple image resolution options.
25-29
: Clean response wrapper interfaceThe
GRResponse
interface provides a simple and clean wrapper for the NFT data collection.packages/extension/src/providers/ethereum/ui/send-transaction/index.vue (4)
327-327
: Good security practice: normalizing recipient addressConverting the address to lowercase ensures consistent handling of Ethereum addresses, which are case-insensitive for comparison but not for checksum validation.
352-352
: Good security practice: normalizing transaction destination addressConsistently applying lowercase normalization to the transaction destination address.
523-525
: Enhanced error logging for transaction fee estimationAdding error logging improves debugging capabilities for transaction fee estimation failures.
807-819
: Improved NFT type detection using on-chain interface verificationThis enhancement dynamically determines the NFT type by directly checking if the contract supports the ERC-1155 interface standard, providing more accurate type detection compared to relying on pre-determined metadata.
packages/extension/src/ui/onboard/restore-wallet/backup-detected.vue (4)
30-31
: Fixed v-for key bindingUsing a dynamic key that combines multiple values ensures uniqueness in the loading state loop, which is a Vue best practice.
53-62
: Improved user experience with explanatory informationAdding clear information about how Enkrypt handles backups improves transparency and helps users understand what data is being stored.
181-181
: Refined heading marginThis minor UI adjustment improves the visual spacing between elements.
192-206
: Well-structured styles for new information sectionThe CSS styling for the new details section is consistent with the application's design system and properly defines all necessary visual properties.
packages/signers/bitcoin/src/index.ts (2)
2-7
: Updated imports to support extra word featureCorrectly added the import for the
MnemonicWithExtraWord
type to implement the extra word support for the Bitcoin signer.
13-17
: Enhanced security with extra word support for mnemonic seedsThe Bitcoin signer now accepts an optional extra word (passphrase) alongside the mnemonic, which adds an additional layer of security for generated wallets. This change aligns with similar updates across other signers in the codebase.
packages/signers/polkadot/src/index.ts (2)
7-7
: Import updated to include new type.The
MnemonicWithExtraWord
type has been correctly imported from@enkryptcom/types
.
39-48
: Well-implemented support for extra word in mnemonic.The update to the
generate
method correctly implements support for an optional extra word alongside the mnemonic phrase. The URI string construction properly handles both cases (with and without an extra word) using the standard Polkadot triple slash separator (///
) for the extra word.packages/signers/ethereum/src/index.ts (2)
10-15
: Imports reorganized to include new type.The imports from
@enkryptcom/types
have been properly restructured to include theMnemonicWithExtraWord
type.
28-33
: Proper implementation of extra word support in Ethereum signer.The
generate
method has been correctly updated to use theMnemonicWithExtraWord
type, passing both the mnemonic phrase and the optional extra word to BIP39'smnemonicToSeed
function. This follows the standard BIP39 approach where the extra word serves as additional entropy (password parameter).packages/signers/polkadot/tests/generate.test.ts (3)
9-12
: MNEMONIC constant updated to new format.The
MNEMONIC
constant has been correctly updated from a string to an object with amnemonic
property to match the new parameter type.
83-92
: Updated function call to match new signature.The call to
signer.generate
now correctly passes an object withmnemonic
andextraWord
properties.
101-103
: Test cases updated to use object format for the mnemonic.All test cases have been properly updated to use the new object format for the mnemonic parameter.
Also applies to: 107-109, 113-115, 124-126, 130-132, 136-138
packages/extension/src/libs/nft-handlers/types/helius.ts (2)
1-19
: Well-structured interface for Helius NFT data.The
HeliusNFTType
interface provides a comprehensive type definition for Solana NFTs returned by the Helius API, covering key properties like content files, metadata, and compression status.
21-26
: Clean API response interface with error handling.The
HeliusResponse
interface properly models the Helius API response structure, including an optional error field and the result containing NFT items. This will enable type-safe interaction with the Helius API.packages/extension/src/libs/nft-handlers/types/unisat.ts (2)
1-7
: Interface definition for UnisatNFTType looks good.The interface properly defines the structure for Unisat NFTs with all necessary properties for Bitcoin Ordinals. The properties align well with the Ordinals metadata format, particularly the inscriptionId, preview, and inscriptionNumber fields that will be used for display and linking.
9-14
: Response interface is well structured.The UnisatResponse interface correctly models the API response format with a code field and a data structure containing a list of UnisatNFTType objects. This allows for proper type checking when processing API responses.
packages/extension/src/libs/utils/initialize-wallet.ts (2)
62-66
: Parameter refactoring looks good.The function signature has been updated to use a structured options object instead of individual parameters, which is a good practice for maintaining backward compatibility as new optional parameters are added.
69-70
: Good implementation of destructuring and options passing.The implementation correctly destructures the options object and passes the values to the KeyRing's init method in the expected format. This aligns with the wider refactoring to support the optional extraWord parameter.
packages/extension/src/libs/nft-handlers/unisat-ordinals.ts (2)
1-19
: NFT handler initialization and network validation look good.The function properly imports necessary types, validates that the network is supported (only Bitcoin in this case), and calls the getAllOrdinals function with appropriate parameters. The error handling for unsupported networks is clear and explicit.
27-55
: Collection and item construction looks good.The implementation correctly organizes all NFTs into a single "Ordinals" collection with the appropriate metadata structure. The URL formatting for each NFT linking to ordinals.com is particularly useful for users.
packages/extension/src/libs/keyring/keyring.ts (3)
9-9
: Good addition of MnemonicWithExtraWord import.The import has been correctly added to support the updated return type of the getMnemonic method.
20-28
: Well-structured options object for init method.The refactoring to use an options object for the init method is a good practice, especially when adding optional parameters like extraWord. The implementation correctly passes the structured data to the underlying keyring implementation.
88-88
: Return type updated to MnemonicWithExtraWord.The getMnemonic method's return type has been correctly updated to reflect the new capability to include an optional extra word alongside the mnemonic phrase. This aligns with the changes in the underlying keyring implementation.
packages/types/src/index.ts (4)
34-34
: Valid addition to the error enum.This new error type correctly handles the scenario where an extra word already exists in the system.
95-98
: Well-structured interface for mnemonic with an optional extra word.The interface is well-defined with a required mnemonic string and an optional extraWord property, following TypeScript's best practices.
113-113
: Appropriate signature update for the generate method.The generate method's signature has been properly updated to accept the new MnemonicWithExtraWord type instead of a simple string, maintaining consistency with the new feature.
204-204
: Correctly exported new interface.The MnemonicWithExtraWord interface is properly exported, making it available for use in other modules.
packages/keyring/tests/generate.test.ts (7)
11-11
: Good constant definition for reuse.The EXTRA_WORD constant is defined at the top level for reuse across multiple tests, following DRY principles.
37-64
: Comprehensive test for ed25519kda keys with extra word.The test properly verifies that adding an extra word to a mnemonic produces a different address while maintaining the correct signer type and path index. The test follows the established pattern and includes proper cleanup.
89-115
: Comprehensive test for secp256k1btc keys with extra word.This test correctly verifies Bitcoin key generation with an extra word, using the same mnemonic as other tests but producing a different address due to the extra word inclusion. The test maintains consistency with the test suite structure.
116-142
: Well-structured test for sr25519 keys with extra word.The test properly initializes the keyring with both mnemonic and extra word, verifies correct key generation with the expected address, and follows the same pattern as other tests in the suite.
183-208
: Comprehensive test for ecdsa keys with extra word.The test appropriately verifies that ecdsa keys are generated correctly with an extra word, ensuring the produced address differs from the one without an extra word.
229-254
: Well-implemented test for ed25519 keys with extra word.This test correctly verifies ed25519 key generation with an extra word, maintaining consistency with the test suite structure and properly validating the generated address.
274-307
: Thorough test for Ethereum keys with extra word.This test covers not only key generation but also additional functionality like renaming accounts and verifying that mnemonic-based accounts cannot be deleted. The test is comprehensive and follows the existing patterns.
packages/extension/src/ui/action/views/settings/index.vue (4)
61-61
: Proper import of the new type.The MnemonicWithExtraWord type is correctly imported from the types package.
70-70
: Correct typing of the mnemonic ref.The mnemonic ref is properly typed as MnemonicWithExtraWord with appropriate default values for both the mnemonic and extraWord properties.
86-86
: Proper reset logic for the mnemonic object.The reset function correctly initializes both the mnemonic and extraWord properties to empty strings.
88-92
: Updated function signature and implementation for extra word support.The recoveryPhraseAction function now correctly accepts a MnemonicWithExtraWord object instead of a string, maintaining consistency with the new data structure.
packages/extension/src/ui/action/views/settings/views/settings-recovery/index.vue (6)
6-9
: Well-formatted warning message.The warning message about security is appropriately styled and positioned.
32-35
: Good conditional rendering for extra word display.The extra word section is only displayed when an extra word exists, following Vue's best practices for conditional rendering.
42-43
: Proper imports for types and Vue functions.The necessary imports for MnemonicWithExtraWord type and Vue's computed function are correctly included.
47-49
: Correctly updated prop type definition.The mnemonic prop is now properly defined as an Object with PropType of MnemonicWithExtraWord, with appropriate default values.
53-59
: Updated computed properties to handle the new data structure.The computed properties correctly access the mnemonic phrase via props.mnemonic.mnemonic, adapting to the new object structure.
61-63
: Good computed property for conditional rendering.The hasExtraWord computed property efficiently determines whether to show the extra word section based on the presence of a non-empty extraWord value.
packages/extension/src/libs/nft-handlers/helius-solana.ts (3)
1-6
: Clear and well-organized imports.The imports are well structured, with types imported first, followed by utilities and static assets. Good separation between internal and external dependencies.
9-18
: Appropriate network validation.Good practice to validate the network before proceeding with the API call, preventing unnecessary requests for unsupported networks.
19-54
: Well-implemented pagination with proper caching.The recursive pagination implementation with
fetchAll
is clean and handles large collections appropriately. The caching mechanism withCACHE_TTL
is a good optimization to reduce API calls.packages/extension/src/ui/onboard/restore-wallet/enter-recovery-phrase.vue (5)
4-7
: Position change for phrase length text improves visibility.Moving the informational text about acceptable phrase lengths to the top of the component ensures users see this important information before entering their phrase. Good UX improvement.
13-32
: Well-structured UI for extra word support.The extra word toggle and input field are well-designed with clear labeling. The conditional rendering based on the toggle state is correctly implemented.
41-41
: Added Switch component import.Import is correctly added for the new Switch component used in the extra word toggle.
52-60
: Clean reactive state management for extra word feature.Good use of Vue's reactive refs and computed properties for managing the extra word state.
142-185
: Well-styled extra word section.The CSS for the extra word section is well-organized and consistent with the existing styles. The inputs are styled to match the recovery phrase input for visual consistency.
packages/extension/src/libs/nft-handlers/goldrush.ts (2)
1-6
: Clear and consistent imports organization.The imports are well-structured, following the same pattern as the Helius handler for consistency.
9-19
: Comprehensive marketplace URL mapping.Good implementation of marketplace URL mapping for different networks. This provides users with appropriate marketplace links based on the network.
packages/keyring/src/index.ts (7)
13-13
: Added MnemonicWithExtraWord type import.The import is correctly added to support the new extra word feature.
17-17
: Updated utils import for extra word handling.The import is expanded to include necessary utilities for extra word encryption/decryption.
33-33
: Changed mnemonic property type to support extra word.The private member variable type is correctly updated from string to MnemonicWithExtraWord to accommodate the new structure.
57-64
: Added extraWord parameter to init method.The init method is properly updated to accept an optional extraWord parameter as part of the options object.
77-86
: Secure storage of the extra word.The implementation correctly encrypts and stores the extra word securely. The use of UTF-8 to hex conversion ensures proper handling of special characters.
111-131
: Updated getMnemonic method to handle extra word.The private getMnemonic method is properly updated to decrypt and return both the mnemonic phrase and optional extra word in the new structure.
146-148
: Updated public getMnemonic method to return typed object.The public method signature is correctly updated to return the MnemonicWithExtraWord type.
Summary by CodeRabbit
New Features
Improvements
Bug Fixes
Dependency Updates
Tests
Documentation