Skip to content

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

Merged
merged 47 commits into from
Apr 28, 2025
Merged

Release: v2.6.0 #678

merged 47 commits into from
Apr 28, 2025

Conversation

kvhnuke
Copy link
Contributor

@kvhnuke kvhnuke commented Apr 28, 2025

Summary by CodeRabbit

  • New Features

    • Added support for an optional "extra word" during wallet creation and restoration, improving recovery options.
    • Recovery phrase interfaces and flows updated to display and handle the extra word.
    • Introduced new NFT handlers for Bitcoin Ordinals and Solana using updated APIs.
    • NFT collection fetching on Ethereum and other EVM networks switched to a new API for improved reliability.
  • Improvements

    • UI enhancements for recovery phrase entry, backup detection screens, and modal dialogs.
    • Pinned networks now preserve user-defined order.
    • Tooltip positioning and collection name truncation improved in NFT views.
    • Simplified lock screen and app container layouts for consistency.
    • Lowercased recipient addresses in transaction UI for uniformity.
  • Bug Fixes

    • Fixed key bindings in backup detection and other UI components.
    • Enhanced error handling and secure management of extra word during wallet onboarding and restoration.
  • Dependency Updates

    • Upgraded numerous dependencies and development tools across packages for better performance and security.
  • Tests

    • Added extensive tests covering wallet generation and address derivation with extra word support.
  • Documentation

    • Improved component usage examples and added instructional text in UI components.

kvhnuke and others added 30 commits March 26, 2025 14:23
fix: cut names shorter, fix tooltip
…hange

feat: create a back up on edit name
Copy link

coderabbitai bot commented Apr 28, 2025

Walkthrough

This 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 MnemonicWithExtraWord type, affecting keyring initialization, mnemonic retrieval, and all supported signers (Ethereum, Bitcoin, Kadena, Polkadot). The onboarding and recovery UI flows are updated to allow users to enter and display an extra word alongside the mnemonic. NFT handler modules are overhauled: legacy SimpleHash-based handlers are removed and replaced with new handlers (Goldrush, Helius for Solana, Unisat for Bitcoin Ordinals), and network configurations are updated accordingly. Numerous dependency versions are also bumped across packages.

Changes

File(s) / Path(s) Change Summary
packages/types/src/index.ts Added MnemonicWithExtraWord type, updated SignerInterface.generate to use it, added ExtrawordExists error.
packages/keyring/src/index.ts, packages/keyring/src/configs.ts KeyRing now supports storing/retrieving an optional extra word with the mnemonic; new storage key added.
packages/keyring/tests/generate.test.ts Added tests for key generation with extra word for all supported signers.
packages/signers/*/src/index.ts (Ethereum, Bitcoin, Kadena, Polkadot) generate method now accepts MnemonicWithExtraWord instead of string.
packages/signers/*/tests/generate.test.ts, sign.test.ts (all signers) Tests updated to use mnemonic object and test extra word support.
packages/extension/src/libs/keyring/keyring.ts, initialize-wallet.ts Keyring and wallet initialization methods refactored to accept options object with mnemonic, password, and optional extraWord.
packages/extension/src/ui/onboard/restore-wallet/enter-recovery-phrase.vue, store.ts, type-password.vue Recovery phrase UI updated to support extra word input, store, and flow.
packages/extension/src/ui/onboard/create-wallet/double-check-phrase.vue Wallet creation flow updated to use new wallet initialization signature.
packages/extension/src/ui/onboard/create-wallet/wallet-ready.vue Securely clears and sets extra word in store on mount.
packages/extension/src/ui/onboard/restore-wallet/backup-detected.vue UI and style improvements to backup info section.
packages/extension/src/ui/action/views/settings/index.vue, settings-recovery/index.vue Recovery phrase state and display updated to handle extra word.
packages/extension/src/ui/action/views/modal-sign/index.vue Event for recovery phrase now emits MnemonicWithExtraWord type.
packages/extension/src/ui/action/views/accounts/components/rename-account-form.vue Triggers backup after account rename.
packages/extension/src/ui/action/views/network-nfts/components/network-nfts-category.vue Tooltip prop and truncation length adjusted.
packages/extension/src/ui/action/views/network-nfts/components/network-nfts-item.vue Removed custom link opening logic.
packages/extension/src/ui/action/views/modal-rate/index.vue, App.vue, lock-screen/index.vue Modal and lock screen refactored for simpler state and dialog handling.
packages/extension/src/ui/action/store/networks-store.ts Pinned networks computation now preserves order and filters nulls.
packages/extension/src/ui/action/components/app-menu/index.vue setNetwork now requires isCustomNetwork property.
packages/extension/src/libs/rate-state/index.ts Popup time increased from 2 weeks to 30 days.
packages/extension/src/libs/nft-handlers/ (multiple files) Removed SimpleHash NFT handlers and types; added Goldrush, Helius, Unisat handlers and types.
packages/extension/src/providers/ethereum/networks/*.ts, bitcoin/networks/bitcoin.ts, solana/networks/solana.ts NFT handler assignments switched from SimpleHash to new handlers (Goldrush, Helius, Unisat) per network.
packages/extension/src/providers/ethereum/ui/send-transaction/index.vue NFT type detection improved with ERC-1155 interface check.
packages/extension/src/providers/common/libs/new-features.ts newNetworks array cleared.
package.json, packages/*/package.json Dependency and devDependency versions bumped across all packages.

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
Loading
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[]
Loading

Possibly related PRs

Suggested reviewers

  • gamalielhere
  • NickKelly1
  • olgakup

📜 Recent review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 5cb87e5 and ef577dc.

📒 Files selected for processing (2)
  • packages/extension/src/providers/bitcoin/networks/bitcoin.ts (2 hunks)
  • packages/extension/src/ui/onboard/create-wallet/wallet-ready.vue (1 hunks)
✅ Files skipped from review due to trivial changes (1)
  • packages/extension/src/providers/bitcoin/networks/bitcoin.ts
🚧 Files skipped from review as they are similar to previous changes (1)
  • packages/extension/src/ui/onboard/create-wallet/wallet-ready.vue
⏰ Context from checks skipped due to timeout of 90000ms (2)
  • GitHub Check: buildAll
  • GitHub Check: test
✨ Finishing Touches
  • 📝 Generate Docstrings

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.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

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)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

github-actions bot commented Apr 28, 2025

💼 Build Files
chrome: enkrypt-chrome-ef577dcd.zip
firefox: enkrypt-firefox-ef577dcd.zip

💉 Virus total analysis
chrome: ef577dcd
firefox: ef577dcd

Copy link

@coderabbitai coderabbitai bot left a 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 new MnemonicWithExtraWord format

We’ve updated generate() to accept a { mnemonic: string; extraWord?: string } object, but many call sites still pass a raw MNEMONIC 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 vue

Length 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 3

Length of output: 2772


Update getMnemonic Call Sites to Handle Structured Return

The getMnemonic method now returns a MnemonicWithExtraWord 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:

  1. This matches the latest design specifications and doesn’t introduce unwanted scrollbars on smaller viewports.
  2. 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 of item.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

📥 Commits

Reviewing files that changed from the base of the PR and between 6094148 and 5cb87e5.

⛔ 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 approved

The 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 using v-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/src

Length of output: 853


Confirm use of the development MEW API endpoint

It looks like MEW_ENDPOINT in packages/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 in packages/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 with teleport-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.x
  • typescript: 5.3.x → 5.8.x
  • vitest: 1.x → 3.x

These 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 build

Length 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.x
  • eslint: 8.x → 9.x
  • typescript: 5.3.x → 5.8.x
  • vitest: 1.x → 3.x

These 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 errors
packages/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, and eslint-config-prettier aligns your linting and type-checking toolchain.


47-50: Approve TypeScript, ESLint CLI & Vitest upgrades
Updating typescript, typescript-eslint, and vitest 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, and eslint 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
Upgrading typescript, typescript-eslint, and vitest 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, and eslint align your linting and typing tools with the monorepo.


35-35: Approve ESLint Prettier config upgrade
Bumping eslint-config-prettier to ^10.1.2 ensures consistent formatting rules.


43-45: Approve TypeScript, ESLint CLI & Vitest upgrades
Keeping typescript, typescript-eslint, and vitest 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, and eslint 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 ensures typescript, typescript-eslint, and vitest match the monorepo’s tooling versions.

packages/swap/package.json (5)

29-29: Approve bump of bignumber.js
Updating from 9.1.2 to 9.2.1 should include important numeric fixes—looks good.


34-34: Approve bump of rango-sdk-basic
Upgrading from 0.1.64 to 0.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 to eslint-config-prettier@^10.1.2 maintains consistent formatting rules.


55-57: Approve TypeScript, ESLint CLI & Vitest upgrades
Syncing typescript, typescript-eslint, and vitest 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, and vitest) 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, and typescript-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 from 1.7.1 to 1.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, and vitest) 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 from 2.5.1 to 2.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, and vitest) 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, and eslint-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"
    done
  • Manually 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 goldrush

The 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 format

The 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.ts

Length of output: 1900


Verify and populate new OridnalType fields

The OridnalType interface now includes preview, inscriptionNumber, and location, 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, and location (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 goldrush

The 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 good

The 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 good

The update to pass an object with mnemonic, password, and extraWord 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 good

The 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 Goldrush

The 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 Goldrush

The 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 Goldrush

The 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 format

The 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 functionality

The 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 successfully

The 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 successfully

The 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 correctly

The 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 successfully

The 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 new MnemonicWithExtraWord 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 rename

The 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 handler

The 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 array

The 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 eslint

Length 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.json

Length 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 under packages/)

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 new MnemonicWithExtraWord 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 over pinnedNetworkNames 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 in pinnedNetworkNames but not found in allNetworks 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 the generate method.


12-19: Successfully implemented extra word support in the KadenaSigner.

The generate method has been properly updated to:

  1. Accept a MnemonicWithExtraWord object instead of a plain string
  2. 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 fields

The 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 interface

The 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 address

Converting 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 address

Consistently applying lowercase normalization to the transaction destination address.


523-525: Enhanced error logging for transaction fee estimation

Adding error logging improves debugging capabilities for transaction fee estimation failures.


807-819: Improved NFT type detection using on-chain interface verification

This 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 binding

Using 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 information

Adding clear information about how Enkrypt handles backups improves transparency and helps users understand what data is being stored.


181-181: Refined heading margin

This minor UI adjustment improves the visual spacing between elements.


192-206: Well-structured styles for new information section

The 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 feature

Correctly 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 seeds

The 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 the MnemonicWithExtraWord type.


28-33: Proper implementation of extra word support in Ethereum signer.

The generate method has been correctly updated to use the MnemonicWithExtraWord type, passing both the mnemonic phrase and the optional extra word to BIP39's mnemonicToSeed 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 a mnemonic 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 with mnemonic and extraWord 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 with CACHE_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.

@kvhnuke kvhnuke merged commit c6d81f2 into main Apr 28, 2025
4 of 5 checks passed
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.

3 participants