Skip to content

[pull] main from MetaMask:main#330

Merged
pull[bot] merged 12 commits into
Reality2byte:mainfrom
MetaMask:main
Nov 17, 2025
Merged

[pull] main from MetaMask:main#330
pull[bot] merged 12 commits into
Reality2byte:mainfrom
MetaMask:main

Conversation

@pull
Copy link
Copy Markdown

@pull pull Bot commented Nov 17, 2025

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

OGPoyraz and others added 12 commits November 17, 2025 11:37
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->

After recent changes on keypad component keypad component was
overflowing and not letting users to click "0" button.

This PR aims to fix layout in send flow amount page.

## **Changelog**

<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`

If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`

(This helps the Release Engineer do their job more quickly and
accurately)
-->

CHANGELOG entry: null

## **Related issues**

Fixes: #22702

## **Manual testing steps**

```gherkin
Feature: my feature name

  Scenario: user [verb for user action]
    Given [describe expected initial app state]

    When user [verb for user action]
    Then [describe expected outcome]
```

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**



https://github.com/user-attachments/assets/3396b9d5-1dab-45d5-aa77-489c4cef4e65



### **After**

Small devices: 

<img width="517" height="1019" alt="after 6"
src="https://github.com/user-attachments/assets/f84a6a1d-3962-4e9b-8663-2c1b03d556fb"
/>

<img width="517" height="1019" alt="after2"
src="https://github.com/user-attachments/assets/973a1ac6-2ae1-4404-8ccb-e35e46b23451"
/>

<img width="561" height="1063" alt="after 3"
src="https://github.com/user-attachments/assets/86a8bd4c-6bce-4f84-9e62-a543cecaac71"
/>

Larger devices: 

<img width="559" height="1062" alt="after 5"
src="https://github.com/user-attachments/assets/56c42edd-f46e-43c0-bb11-950f000312d0"
/>

<img width="559" height="1062" alt="after1"
src="https://github.com/user-attachments/assets/7e682ab4-bd70-40a8-87ed-8f662816f8b4"
/>

<img width="515" height="1018" alt="after 4"
src="https://github.com/user-attachments/assets/d3cb8197-b576-43d5-9c62-48ef1ccdbc1e"
/>


## **Pre-merge author checklist**

- [X] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [X] I've completed the PR template to the best of my ability
- [X] I’ve included tests if applicable
- [X] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [X] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.


<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Refactors the send amount screen layout to center content, move
balance display and keyboard, and remove NFT-specific spacing in styles.
> 
> - **Send Amount UI** (`amount.tsx`):
> - Reorganize layout: wrap header content in `topSection` and move
`AmountKeyboard` outside it.
> - Display `balanceDisplayValue` using new `styles.balanceText` within
the top section.
>   - Stop passing `isNFT` to styles.
> - **Styles** (`amount.styles.ts`):
> - Replace `balanceSection` with `balanceText`; remove NFT-dependent
margins and input offsets.
> - Make `topSection` flexible (`flex: 1`) and center content; remove
vertical padding.
> - Keep input sizing via `getFontSizeForInputLength` but simplify
layout by removing unused spacing.
> - Remove `marginTop` from `nftImageWrapper`; drop conditional
`inputSection` margin.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
c2ea882. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
…22724)

<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**
This PR focuses on restructuring the whole trending feature so that
developers can add sections dynamically just by modifying a single file.
This PR is a continuation of
[this](#22700) one. Here
is a summary of the components that get dynamically created based on a
centralized configuration:

Quick Action Buttons - 🟢
Search Sections - 🟢 
Actual sections - 🟢

Now the developer will have a section created just by modifying
[this](https://github.com/MetaMask/metamask-mobile/blob/23f99a5d7ac7f02f8aa48174560a3e94b122725e/app/components/Views/TrendingView/config/sections.config.tsx)
file
<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->

## **Changelog**

<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`

If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`

(This helps the Release Engineer do their job more quickly and
accurately)
-->

CHANGELOG entry: dynamically create sections for trending

## **Related issues**

Fixes: 

## **Manual testing steps**

```gherkin
Feature: my feature name

  Scenario: user [verb for user action]
    Given [describe expected initial app state]

    When user [verb for user action]
    Then [describe expected outcome]
```

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

### **After**
<img width="516" height="626" alt="image"
src="https://github.com/user-attachments/assets/ca06ccec-f12b-4c7d-9d8e-8c6a215b0a0b"
/>

<img width="441" height="510" alt="image"
src="https://github.com/user-attachments/assets/a6131d5f-8221-4d5a-8496-167e79e7cd50"
/>


<!-- [screenshots/recordings] -->

## **Pre-merge author checklist**

- [ ] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [ ] I've completed the PR template to the best of my ability
- [ ] I’ve included tests if applicable
- [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [ ] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Replaces hardcoded Trending sections with a centralized config-driven
system powering feed, quick actions, search, and navigation.
> 
> - **Architecture**:
> - Introduces centralized `SECTIONS_CONFIG` with `renderRowItem`,
`viewAllAction`, `renderSection`, and `useSectionData` plus
`HOME_SECTIONS_ARRAY`/`SECTIONS_ARRAY`.
>   - Adds `useSectionsData` to fetch all section data generically.
> - **Search**:
> - `ExploreSearchResults` now renders items via `section.renderRowItem`
and keys via `section.keyExtractor`.
> - `useExploreSearch` debounces and filters using `SECTIONS_ARRAY` +
`useSectionsData`.
> - **UI Components**:
> - New `SectionCard` (list-style sections) and `SectionCarrousel`
(carousel-style, with dots) used by sections.
>   - `QuickActions` and `SectionHeader` use `section.viewAllAction`.
> - **Trending Feed**:
> - `TrendingView` renders sections from `HOME_SECTIONS_ARRAY` and adds
Predict routes (`PredictScreenStack`, details, buy/sell previews).
> - **Removed Legacy**:
> - Deletes `PerpsSection` and `PredictionSection` (and related
styles/tests) in favor of config-driven rendering.
> - **Tests**:
> - Adds `SectionCarrousel` tests; minor test cleanup in
`TrendingTokenRowItem.test`.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
23f99a5. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**
Rerouting to webView is crashing the app.
It is root caused due to infinity useEffect loop

Jira Link : https://consensyssoftware.atlassian.net/browse/SL-298

<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->

## **Changelog**

<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`

If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`

(This helps the Release Engineer do their job more quickly and
accurately)
-->

CHANGELOG entry: null

## **Related issues**

Fixes:
#22548 
## **Manual testing steps**

```gherkin
Feature: fix useEffect infinity loop

  Scenario: user check term of use
    Given installed the app

    When user click on create new wallet
    Then user click on the terms of use link
```

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->


https://github.com/user-attachments/assets/f81b1e83-699b-401c-b01d-6ee63178ec00


### **After**

<!-- [screenshots/recordings] -->


https://github.com/user-attachments/assets/89512f44-33f8-4736-8be0-0e20fc347650






## **Pre-merge author checklist**

- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.



<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Separates navbar options and param dispatch updates into two effects
to prevent an update loop in `SimpleWebView`.
> 
> - **SimpleWebView (`app/components/Views/SimpleWebview/index.tsx`)**:
> - Decouples navbar options from param dispatch updates by splitting
into two `useEffect` hooks.
> - `navigation.setOptions(getWebviewNavbar(...))` now depends on
`navigation`, `route`, `colors`.
> - `navigation.setParams({ dispatch: share })` now depends on
`navigation`, `share`.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
019a4ae. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
## **Description**

Remove rewards feature flag, this is now always enabled.

## **Changelog**

CHANGELOG entry: null

## **Pre-merge author checklist**

- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [x] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [x] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.



<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Removes the rewards feature flag across app, always enables Rewards
UI/flows, updates navigation, hooks, controller logic, selectors, and
tests/e2e accordingly.
> 
> - **Navigation/UI**:
> - Always render and navigate to `Routes.REWARDS_VIEW`; remove
`selectRewardsEnabledFlag` checks in `TabBar`, `MainNavigator`, and
tests/snapshots.
> - Navbar: always show hamburger menu button;
`getSettingsNavigationOptions` always renders a close button and no
longer accepts rewards flag; update Wallet/Settings to stop passing it.
> - **Perps**:
> - Replace `navigateToRewardsOrSettings` with `navigateToRewards`;
remove rewards flag usage in `usePerpsNavigation`, `usePerpsOrderFees`,
and `usePerpsRewards`, enabling rewards-related calls unconditionally;
update related tests.
> - **Rewards onboarding**:
> - `useRewardsIntroModal` no longer depends on rewards-enabled flag;
continues to use announcement flag and subscription checks.
> - **Controller**:
> - `RewardsController` no longer reads Redux feature flag;
`isRewardsFeatureEnabled` now only respects `isDisabled` callback;
update tests to reflect new gating.
> - **Selectors**:
> - Remove `selectRewardsEnabledFlag` and related tests; keep other
rewards selectors (e.g., announcement modal) with defaults.
> - **E2E**:
> - Settings access updated to use wallet hamburger menu and new close
button; adjust tests to close drawer before proceeding.
> - **Tests/Snapshots**:
> - Widespread updates to unit tests and snapshots to remove rewards
flag conditions and assert Rewards tab/button presence.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
43da35a. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

---------

Co-authored-by: Priya Narayanaswamy <priya.narayanaswamy@consensys.net>
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**
This PR fixes amount truncating for swaps withing the Activity tab. It
also fixes incorrect title for "Received Tokens" transaction type
(previously it was incorrectly set to "Sent Tokens).
<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->

## **Changelog**

<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`

If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`

(This helps the Release Engineer do their job more quickly and
accurately)
-->

CHANGELOG entry: Fixes amount truncating for swaps withing the Activity
tab. It also fixes incorrect icon for "Received Tokens" transaction type
(previously it was incorrectly set to "Sent Tokens").

## **Related issues**

Fixes: #20358
https://consensyssoftware.atlassian.net/browse/TMCU-89

## **Manual testing steps**

```gherkin
Feature: List EVM swap transactions

  Scenario: user lists swap transactions
    Given user have swap transaction on EVM in their activity with amount lower than 0.00001 of selected token

    When user navigates to Activity tab
    Then they should see "< 0.00001" in the amount row
```

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**
<img width="394" height="839" alt="Screenshot 2025-11-14 at 12 21 17"
src="https://github.com/user-attachments/assets/9e76ef99-25e8-44ce-964e-df5b00be87cf"
/>
<img width="388" height="327" alt="Screenshot 2025-11-14 at 13 45 23"
src="https://github.com/user-attachments/assets/3de177a0-587b-432c-a4c2-e6f3bcd65abb"
/>

<!-- [screenshots/recordings] -->

### **After**
<img width="393" height="837" alt="Screenshot 2025-11-14 at 14 48 11"
src="https://github.com/user-attachments/assets/ff4d91dd-e3e3-4f77-b50e-c2be58be036b"
/>
<img width="382" height="268" alt="Screenshot 2025-11-14 at 13 44 53"
src="https://github.com/user-attachments/assets/77245d12-80cf-4ffc-ab14-cf64003ee6f1"
/>

<!-- [screenshots/recordings] -->

## **Pre-merge author checklist**

- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Formats swap/bridge amounts with a display threshold and fixes token
transfer direction/action keys; updates UI/tests and i18n accordingly.
> 
> - **Number formatting**:
> - Add `formatAmountWithThreshold` and `MINIMUM_DISPLAY_THRESHOLD` in
`app/util/number`, capping to 5 decimals and showing `< 0.00001` for
tiny values.
> - Use in `app/components/UI/Bridge/utils/transaction-history.ts` and
`app/components/UI/MultichainBridgeTransactionListItem/MultichainBridgeTransactionListItem.tsx`
to render amounts.
> - **Swaps/Bridge display**:
> - `decodeSwapsTx` and UI now show source amounts without trailing
zeros (e.g., `5 USDC`) and use raw amounts for summaries.
> - `decodeBridgeTx` applies threshold formatting (e.g., `-0.00099 ETH`)
and sets `notificationKey` to `undefined`.
> - **Transaction direction logic**:
> - In `app/components/UI/TransactionElement/utils.js`, compute `isSent`
via lowercase `from` vs `selectedAddress` and set `transactionType`
using `isIncoming`.
> - In `app/util/transactions/index.js`, update `getActionKey` for
`SEND_TOKEN_ACTION_KEY` to return
`sent_tokens`/`received_tokens`/`self_sent_tokens`; leave ETH logic
consistent.
> - Add i18n key `transactions.received_tokens` in
`locales/languages/en.json`.
> - **Tests**:
> - Update tests in `transaction-history.test.ts` and
`MultichainBridgeTransactionListItem.test.tsx` to expect new amount
formats and threshold behaviors.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
e50052d. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

Reenable the autocreate release PR after automating getting build number
in create-release-pr workflow in previous
[PR](#21687)

Testing:
https://github.com/consensys-test/metamask-mobile-test-workflow/actions/runs/19174950933/job/54817224179

## **Changelog**

<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`

If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`

(This helps the Release Engineer do their job more quickly and
accurately)
-->

CHANGELOG entry: None

## **Related issues**

Fixes:

## **Manual testing steps**

```gherkin
Feature: my feature name

  Scenario: user [verb for user action]
    Given [describe expected initial app state]

    When user [verb for user action]
    Then [describe expected outcome]
```

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

### **After**

<!-- [screenshots/recordings] -->

## **Pre-merge author checklist**

- [ ] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [ ] I've completed the PR template to the best of my ability
- [ ] I’ve included tests if applicable
- [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [ ] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Adds a workflow to auto-create release PRs by extracting semver from
`release/*` branches and invoking the reusable release PR workflow.
> 
> - **CI**:
>   - **New workflow** `/.github/workflows/auto-create-release-pr.yml`:
>     - Triggers on repo `create` events for `release/*` branches.
>     - Extracts `semver` via `.github/scripts/extract-semver.sh`.
> - Invokes reusable `create-release-pr.yml` with `semver-version` and
required secrets (`PR_TOKEN`, `GCP_RLS_SHEET_ACCOUNT_BASE64`).
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
690dcc6. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->

## **Changelog**

<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`

If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`

(This helps the Release Engineer do their job more quickly and
accurately)
-->

CHANGELOG entry:

## **Related issues**

Fixes:

## **Manual testing steps**

```gherkin
Feature: my feature name

  Scenario: user [verb for user action]
    Given [describe expected initial app state]

    When user [verb for user action]
    Then [describe expected outcome]
```

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

### **After**

<!-- [screenshots/recordings] -->

## **Pre-merge author checklist**

- [ ] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [ ] I've completed the PR template to the best of my ability
- [ ] I’ve included tests if applicable
- [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [ ] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Rename prediction market smoke test suite names in Android/iOS E2E
workflows from underscore to hyphen format.
> 
> - **CI / Workflows**:
> - Rename `test-suite-name` for prediction market smoke tests to
hyphenated form:
> - Android (`.github/workflows/run-e2e-smoke-tests-android.yml`):
`prediction_market_android_smoke-*` →
`prediction-market-android-smoke-*`.
> - iOS (`.github/workflows/run-e2e-smoke-tests-ios.yml`):
`prediction_market_ios_smoke-*` → `prediction-market-ios-smoke-*`.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
dc56721. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
….0 (#22791)

<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

This PR refactors the Return on Equity (ROE) calculation logic in the
usePerpsLivePositions hook to use the centralized calculateRoEForPrice
utility function instead of the previous manual calculation.


## **Changelog**

CHANGELOG entry: Fixed a bug where the PnL was showing incorrect values
in the position card

## **Related issues**

Fixes: https://consensyssoftware.atlassian.net/browse/TAT-2080
Fixes #22790

## **Manual testing steps**

```gherkin
Feature: Live ROE calculation for Perps positions

  Scenario: user views live positions with updated ROE
    Given user has open perpetual positions
    And the positions are being streamed with live price updates

    When the market price changes
    Then the ROE percentage should update in real-time
    And the ROE should be calculated consistently with TP/SL ROE calculations
    And the ROE should properly reflect the position direction (long/short)
    And the ROE should account for the position's leverage
```

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

PnL on the list is not matching the PnL on the position card 

https://github.com/user-attachments/assets/72729f8d-080f-45a5-bcd0-ce3776f2efde



### **After**
PnL in the position card is matching the PnL from the list

<img width="1170" height="2532" alt="Simulator Screenshot - iPhone 16e -
2025-11-17 at 13 14 10"
src="https://github.com/user-attachments/assets/bc82bdff-3579-4bc0-91f4-a6ceb8518b5e"
/>
<img width="1170" height="2532" alt="Simulator Screenshot - iPhone 16e -
2025-11-17 at 13 14 02"
src="https://github.com/user-attachments/assets/4dd7c44b-8b58-4389-b083-0110e2af6007"
/>

## **Pre-merge author checklist**

- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Reworks live PnL/ROE to use centralized ROE utility, prefer `price`
over `markPrice`, and handle leverage when margin is invalid, with
corresponding test updates.
> 
> - **Perps Live Positions Hook (`usePerpsLivePositions.ts`)**:
>   - Use centralized `calculateRoEForPrice` for `returnOnEquity`.
> - Prefer `price` over `markPrice` for live calculations; validate
positive numeric `currentPrice`.
> - Compute PnL as `(currentPrice - entryPrice) * size`; infer direction
from `size` (supports shorts).
> - Derive ROE from leverage (fallback when `marginUsed` invalid);
ignore invalid `entryPrice`/`size`/price.
> - **Tests (`useLivePositions.test.ts`)**:
> - Update expectations to reflect `price` precedence and centralized
ROE calc.
> - Add coverage for short positions and leverage-based ROE when
`marginUsed` is NaN.
> - Maintain behavior when price data missing/empty and multiple
position scenarios.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
75a749f. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
## **Description**

Minor design fixes for Predict deposit confirmation.

- Increase height of confirm button.
- Update keyboard done label.
- Hide alert banner.

## **Changelog**

CHANGELOG entry: null

## **Related issues**

Fixes: #22726 #22731 #22761

## **Manual testing steps**

## **Screenshots/Recordings**

### **Before**

### **After**

## **Pre-merge author checklist**

- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.



<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Hides the alert banner for predict/perps flows, enlarges the confirm
button, renames the keyboard “Done” action to “Continue,” and updates
tests/i18n accordingly.
> 
> - **Confirmations UI**:
> - Extend `AlertBanner` ignore list to `perpsDeposit`,
`predictDeposit`, `predictWithdraw`.
> - Centralize scroll disabling via `TRANSACTION_TYPES_DISABLE_SCROLL`;
apply to `ScrollView`.
> - **Custom Amount / Keyboard**:
> - Keyboard done label now uses `strings('confirm.edit_amount_done')`
(text changed to “Continue”).
>   - Confirm button set to `ButtonSize.Lg`.
> - **Tests & i18n**:
>   - Update tests to reference `strings('confirm.edit_amount_done')`.
> - Update `locales/languages/en.json`: `confirm.edit_amount_done` →
"Continue".
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
dd2677c. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

Upgrade Tron to `1.8.0`
https://github.com/MetaMask/snap-tron-wallet/releases/tag/v1.8.0

* Confirmation UI (MetaMask/snap-tron-wallet#86)
(MetaMask/snap-tron-wallet#86)
* Transactions analytics
(MetaMask/snap-tron-wallet#90)
* Add `from` and `to` to confirmation
(MetaMask/snap-tron-wallet#88)

<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->

## **Changelog**

<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`

If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`

(This helps the Release Engineer do their job more quickly and
accurately)
-->

CHANGELOG entry: feat: Tron send confirmation UI

## **Related issues**

Fixes:

## **Manual testing steps**

```gherkin
Feature: my feature name

  Scenario: user [verb for user action]
    Given [describe expected initial app state]

    When user [verb for user action]
    Then [describe expected outcome]
```

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

### **After**

<!-- [screenshots/recordings] -->

## **Pre-merge author checklist**

- [ ] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [ ] I've completed the PR template to the best of my ability
- [ ] I’ve included tests if applicable
- [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [ ] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Upgrade dependency `@metamask/tron-wallet-snap` from `^1.7.2` to
`^1.8.0` and update lockfile.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
4dae798. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->
Updates bitcoin to 1.6.0, which updates from and to fields in the
confirmation modal.

## **Changelog**

<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`

If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`

(This helps the Release Engineer do their job more quickly and
accurately)
-->

CHANGELOG entry: Adds `from` and `to` to Bitcoin confirmation UI

## **Related issues**

Fixes: MetaMask/metamask-extension#37845

## **Manual testing steps**

```gherkin
Feature: my feature name

  Scenario: user [verb for user action]
    Given [describe expected initial app state]

    When user [verb for user action]
    Then [describe expected outcome]
```

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

### **After**

<!-- [screenshots/recordings] -->

## **Pre-merge author checklist**

- [ ] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [ ] I've completed the PR template to the best of my ability
- [ ] I’ve included tests if applicable
- [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [ ] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Updates dependency `@metamask/bitcoin-wallet-snap` from `^1.5.0` to
`^1.6.0`.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
9010905. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
## **Description**

This PR allows users to add an account to their rewards program, logic
is like this:

- GIVEN I have an active subscription but the current address is not
opted in
- AND the current address is eligible to be added (not a Bitcoin / Tron
/ hardware wallet / Snap account)
- I can add the current address in one click / tap and then see the
estimated points

then users will see the rewards row but with a cta that allows them to
add the active account address to the active subscription.

## **Changelog**

CHANGELOG entry: allow add account in swap flow

## **Related issues**

Fixes: https://consensyssoftware.atlassian.net/browse/RWDS-799

## **Screenshots/Recordings**

### **After**

<img width="461" height="45" alt="Screenshot-79"
src="https://github.com/user-attachments/assets/973c8bb9-e2da-4aca-a880-405a04fed5d1"
/>

---

<img width="476" height="100" alt="Screenshot-82"
src="https://github.com/user-attachments/assets/413aa101-6514-4d5e-b2fb-348dfcf7afd6"
/>

## **Pre-merge author checklist**

- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [x] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [x] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.


<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Adds a Rewards “Add account” CTA to the Bridge quote details,
introduces a linking hook/component, updates rewards logic, and adds
comprehensive tests, assets, and strings.
> 
> - **Bridge | UI**:
> - `QuoteDetailsCard`: Shows Rewards row; when not opted-in displays
`AddRewardsAccount` CTA, otherwise renders `RewardPointsAnimation`. Adds
`bridge-rewards-row` test ID and uses fade-in image mock.
> - **Rewards**:
> - New `useLinkAccountAddress` hook (metrics, toasts) and
`AddRewardsAccount` component to link current account to Rewards.
> - `useRewards`: gates by `getFirstSubscriptionId`, exposes
`accountOptedIn`, shows row if opt-in is supported, subscribes to
`RewardsController:accountLinked`, refines deps.
> - **Tests**:
> - New/expanded tests for `QuoteDetailsCard`, `useRewards`,
`AddRewardsAccount`, and `useLinkAccountAddress`; updates BridgeView
tests/mocks (adds `controllerMessenger.subscribe/unsubscribe`, image
mocks).
> - **Assets/Locales**:
> - Adds rewards points SVG icon and
`rewards.link_account_group.link_account_address_error` string.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
bfa1421. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
@pull pull Bot locked and limited conversation to collaborators Nov 17, 2025
@pull pull Bot added the ⤵️ pull label Nov 17, 2025
@pull pull Bot merged commit f25b4ba into Reality2byte:main Nov 17, 2025
12 of 51 checks passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.