{
  "prNumber": 44797,
  "prTitle": "release: 13.42.0",
  "generatedAt": "2026-07-24T17:29:39.713Z",
  "modelUsed": "gpt-5",
  "summary": {
    "totalFilesChanged": 1684,
    "totalCommitsInRelease": 127,
    "releaseRiskScore": "57/100",
    "highRiskScenarios": 7,
    "mediumRiskScenarios": 5
  },
  "testScenarios": {
    "cherryPickScenarios": [
      {
        "area": "Activity Transaction Details Width (responsive fix)",
        "riskLevel": "medium",
        "testSteps": [
          "1. Open Activity and expand details for a send, swap, and bridge entry; progressively narrow the extension window to small widths.",
          "2. Verify no horizontal scrollbars, clipped text, or off-screen buttons; links and CTAs remain accessible and readable.",
          "3. Switch between multiple detail entries rapidly and confirm the panel resizes correctly without overlapping content.",
          "4. Toggle between light/dark mode (if available) to ensure no contrast regressions with the new width behavior."
        ],
        "whyThisMatters": "Cherry-pick 44856 fixes a layout issue in transaction details; regressions here can make critical information (amounts, addresses, CTAs) inaccessible on small viewports."
      }
    ],
    "initialScenarios": [
      {
        "area": "State Migrations (217–219)",
        "riskLevel": "high",
        "testSteps": [
          "1. Start on 13.41.x with a profile that has: 2+ accounts, at least one custom network (e.g., Polygon), token detection ON, 1–2 custom (manually added) ERC-20s, and at least one NFT (ERC-721 or ERC-1155).",
          "2. Upgrade the same profile to 13.42.0 and unlock.",
          "3. Verify all accounts, custom networks, token visibility (including hidden tokens), and NFT collections persist with correct balances and images.",
          "4. Confirm user preferences (token/NFT autodetection, Show test networks, advanced gas settings) remain unchanged.",
          "5. Open Activity and Settings; ensure no migration error banners/toasts and no duplicated/missing assets."
        ],
        "whyThisMatters": "Migrations can corrupt or drop user data (accounts, networks, assets, preferences). Early detection prevents data loss and broken UX post-upgrade."
      },
      {
        "area": "Token Management (Assets Controller v11 upgrade)",
        "riskLevel": "high",
        "testSteps": [
          "1. On Mainnet with token detection ON, verify common tokens auto-appear with correct symbol/decimals/logo and accurate balances.",
          "2. Manually add a custom ERC-20 with unusual decimals; confirm balance math and fiat conversion are correct.",
          "3. Toggle token detection OFF; verify auto-detected tokens disappear while manually added tokens remain.",
          "4. Switch between Mainnet and a custom/test network; confirm token lists are chain-scoped and persist per network.",
          "5. Refresh/relaunch; ensure token logos/metadata remain stable and no duplicate entries appear."
        ],
        "whyThisMatters": "A major Assets Controller bump can affect detection, balances, metadata, and chain scoping—core wallet functionality users rely on daily."
      },
      {
        "area": "NFTs (Collectibles) Detection and Transfers",
        "riskLevel": "high",
        "testSteps": [
          "1. Enable NFT autodetection and import at least one ERC-721 and one ERC-1155 collection; confirm images/metadata load.",
          "2. Send an ERC-721 to another address; verify confirmation UI details and post-transaction the NFT is removed from the sender.",
          "3. Send a single unit of an ERC-1155 with quantity >1; confirm quantity decrements correctly.",
          "4. Hide/unhide an NFT; switch accounts and networks; verify visibility persists as expected.",
          "5. Check Activity entries for NFT sends have accurate titles, icons, and status."
        ],
        "whyThisMatters": "NFT logic depends on asset metadata and balances; controller or UI changes can break detection, display, and transfer accuracy."
      },
      {
        "area": "Network Enablement and Chain Switching",
        "riskLevel": "high",
        "testSteps": [
          "1. From a dapp, trigger wallet_addEthereumChain for a new chain; confirm the Add Network prompt shows accurate details/warnings and successfully adds/switches on approval.",
          "2. From the same or another dapp, trigger wallet_switchEthereumChain to both an added and a not-yet-added chain; verify correct prompts and outcomes (add + switch vs. switch only).",
          "3. Toggle Show test networks in Settings; ensure visibility updates in the network menu immediately.",
          "4. Remove a custom network and reattempt a dapp-initiated switch; verify correct prompts and error handling on deny.",
          "5. Confirm connected site permissions reflect the new network after switching."
        ],
        "whyThisMatters": "Network enablement gating and switching are core to cross-chain usage; regressions can strand users or cause incorrect chain interactions."
      },
      {
        "area": "Send Flow and EIP-1559 (Speed Up/Cancel)",
        "riskLevel": "high",
        "testSteps": [
          "1. Send native ETH with Advanced gas open; set custom Max fee/Max priority; submit and verify pending status in Activity.",
          "2. Use Speed Up; confirm replacement tx is created with higher gas and the original is replaced.",
          "3. For another pending tx, use Cancel; verify the cancel replacement is submitted and original tx no longer confirms.",
          "4. Confirm final statuses (Succeeded/Cancelled) and fee details are correct in Activity details.",
          "5. Validate error surfaces if custom gas selection is too low or invalid."
        ],
        "whyThisMatters": "Any regression in EIP-1559 or replacement flows can cause failed or stuck transactions and user fund risk."
      },
      {
        "area": "Dapp Transaction Confirmation and Typed Data Signing",
        "riskLevel": "high",
        "testSteps": [
          "1. Connect a test dapp; initiate a sendTransaction; verify confirmation UI (recipient, amount, gas) and successful submission.",
          "2. From the dapp, request eth_signTypedData_v4; inspect the structured data rendering; approve and verify the signature is returned correctly.",
          "3. Repeat typed data request and Reject; confirm the dapp receives a clear user-rejected error.",
          "4. Attempt both flows from an unconnected account and confirm proper connection prompts or unconnected warnings."
        ],
        "whyThisMatters": "Confirmation surfaces and typed data rendering must be accurate to prevent phishing or signing the wrong data."
      },
      {
        "area": "Bridge Flow (Bridge Controller update)",
        "riskLevel": "high",
        "testSteps": [
          "1. Open the Bridge feature; select source (e.g., Ethereum) and destination (e.g., Polygon) and a token; request a quote.",
          "2. If not on source chain, confirm a switch prompt appears; approve switching and proceed to allowance (if needed) and the bridge transaction.",
          "3. Submit the bridge transaction; verify clear pending status and subsequent completion (or failure) messaging.",
          "4. Inspect Activity details for the bridge entry: correct networks, token amounts, and status.",
          "5. Deny at each step (switch, allowance, bridge) once to ensure graceful error and no stuck UI."
        ],
        "whyThisMatters": "Bridge logic is multi-step and cross-chain; controller or UI regressions can create failed moves of funds or confusing states."
      },
      {
        "area": "Activity Feed and Transaction Details (general)",
        "riskLevel": "medium",
        "testSteps": [
          "1. Generate a mix of transactions (send, swap, bridge, NFT send); open each Activity details panel.",
          "2. Resize the extension to narrow widths and confirm details content remains readable (no clipping/overflow).",
          "3. Verify timestamps, fees, method labels, and links to block explorers are correct.",
          "4. Filter or search (if available) and ensure detail links still open the correct entry."
        ],
        "whyThisMatters": "Large UI updates can break detail rendering and discoverability, making it hard for users to audit transactions."
      },
      {
        "area": "Alerts System (Unconnected Account, Multiple Alerts)",
        "riskLevel": "medium",
        "testSteps": [
          "1. Connect Site A with Account 1; switch to Account 2 and return to Site A; verify the Unconnected Account alert appears with correct CTAs (Switch account / Connect).",
          "2. While on a wrong network for Site A, open Site A; verify Wrong Network and Unconnected Account alerts stack without blocking core actions.",
          "3. Use the alert CTAs to resolve (switch/connect or switch network) and confirm alerts dismiss correctly.",
          "4. Trigger a generic inline alert (e.g., low balance) and verify no conflicts with modal alerts."
        ],
        "whyThisMatters": "Alert presentation and CTA wiring guide users to safe states; regressions can lead to mistaken actions on the wrong account/network."
      },
      {
        "area": "API Error Handling (User-Facing Errors)",
        "riskLevel": "medium",
        "testSteps": [
          "1. Force a gas estimation failure (e.g., send a failing tx); confirm a clear, user-friendly error is shown and the flow is recoverable.",
          "2. Go offline during a quote or send step; verify network error messaging and retry guidance, not indefinite spinners.",
          "3. Submit a transaction that reverts on-chain; confirm the failure status and message appear in Activity details with an explorer link."
        ],
        "whyThisMatters": "Error copy and handling prevent user confusion and repeated failed attempts, especially after controller/UI refactors."
      },
      {
        "area": "Encryption Public Key and Decrypt (eth_getEncryptionPublicKey / eth_decrypt)",
        "riskLevel": "medium",
        "testSteps": [
          "1. From a dapp, request eth_getEncryptionPublicKey; verify a clear prompt and that approving returns a valid key string.",
          "2. Use that key to send an encrypted payload; request eth_decrypt; ensure the decryption prompt shows expected origin and approving returns plaintext.",
          "3. Attempt both calls while the wallet is locked and with an unconnected account; verify correct gating and prompts (no silent failures).",
          "4. Reject each prompt once; confirm the dapp receives a user-rejected error and no stale prompts remain."
        ],
        "whyThisMatters": "Even small changes here can break privacy-focused dapp features or expose confusing prompts that impact security-sensitive flows."
      }
    ]
  }
}