Skip to content

Feature/contact book UI#2612

Open
piyalbasu wants to merge 44 commits intofeature/contact-listsfrom
feature/contact-book-ui
Open

Feature/contact book UI#2612
piyalbasu wants to merge 44 commits intofeature/contact-listsfrom
feature/contact-book-ui

Conversation

@piyalbasu
Copy link
Contributor

@piyalbasu piyalbasu commented Feb 23, 2026

Closes #2581

This PR just implements the UI portion of the contact list. Subsequent PR's will add the storage functionality and integration with the Send flow, etc.

Important notes:

  • This UI allows saving a G, C, M, or federated address
  • This uses shadCn's Toast component. I've updated some styles to make it closer to the Figma design, but it's not a 1:1 match with the design. @sdfcharles Let's chat about this and decide if we'd rather default to shadCn's implementation or try to customize their implementation a bit more

See below comment for updated video after design changes

PR Summary

This pull request introduces the new Contact Book feature to the extension, including routing, metrics tracking, feature flag control, and localization support. It also improves the toast notification component with enhanced styling and usability. Below are the most important changes:

Contact Book Feature Integration

  • Added the ContactBook view to the router and defined its route in ROUTES, enabling navigation to the Contact Book screen. [1] [2] [3]
  • Registered a metric for tracking when the Contact Book screen is loaded and integrated it into the route-to-event mapping. [1] [2]
  • Introduced a feature flag isContactListEnabled to control the availability of the Contact Book functionality.

Localization and Messaging

Toast Notification Improvements

  • Enhanced the toast component by adding a close button, improved icon support (including a success icon), and updated styling for better appearance and accessibility. [1] [2]

aristidesstaffieri and others added 17 commits February 13, 2026 12:08
* Bump axios from 1.11.0 to 1.13.2 (#2368)

Bumps [axios](https://github.com/axios/axios) from 1.11.0 to 1.13.2.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](axios/axios@v1.11.0...v1.13.2)

---
updated-dependencies:
- dependency-name: axios
  dependency-version: 1.13.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump webpack-dev-server from 5.1.0 to 5.2.1 (#2367)

Bumps [webpack-dev-server](https://github.com/webpack/webpack-dev-server) from 5.1.0 to 5.2.1.
- [Release notes](https://github.com/webpack/webpack-dev-server/releases)
- [Changelog](https://github.com/webpack/webpack-dev-server/blob/main/CHANGELOG.md)
- [Commits](webpack/webpack-dev-server@v5.1.0...v5.2.1)

---
updated-dependencies:
- dependency-name: webpack-dev-server
  dependency-version: 5.2.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump js-yaml from 4.1.0 to 4.1.1 (#2384)

Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 4.1.0 to 4.1.1.
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](nodeca/js-yaml@4.1.0...4.1.1)

---
updated-dependencies:
- dependency-name: js-yaml
  dependency-version: 4.1.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Feature/collectibles home tab (#2405)

* Feature/move icons to own hook (#2308)

* move get icons out of critical path; rely on background's cache

* add tests and comments

* add comment

* add comment

* only dispatch if we have cached icons

* PR comments

* [FEATURE] adds send and swap buttons to asset detail view (#2351)

* adds send and swap buttons to asset detail view

* uses secondary button styles

* removes run snapshots job (#2355)

* release/5.35.4 (#2354)

* upgrade to ledger-hq/hw-transport-webhid (#2350)

* upgrade to ledger-hq/hw-transport-webhid

* add tests

* add ledger support for new trustline flow (#2352)

* upgrade to ledger-hq/hw-transport-webhid

* add ledger support for new trustline flow

* only re-fetch balances if we were successful

* test for fetching balances on success

* add reset spys

* adjust spacing at top of hw wallet modal

* Now that `Done` button properly shows, click it in tests (#2356)

* skip flakey test

* skip flakey test

* renames local vars to follow convention

* adds tests for LP share and tweaks LP title

* adds links with query params for asset detail CTAs

---------

Co-authored-by: Piyal Basu <pbasu235@gmail.com>

* first pass at showing collectibles in UI

* add metadata fetching

* add tests for metadata

* check for owner of collectibles and test

* add empty placeholder and add comments; rm placeholder values

* rm captureException

* rm duplicated tests added by rebase

* pr comments

* make non-square nft's cover; only show `collectibles` tab on non-custom network

* attempt to clean up flakey e2e tests

* rollback parallel testing

* removing testing data

* update tests

---------

Co-authored-by: aristides <aristides.staffieri@stellar.org>

* Feature/add collectibles (#2423)

* Add Collectible UI

* add localstorage and caching; add tests

* add clipboardRead access for extension

* rm consoles and add screenshot

* rm console log

* PR comments

* fix conflict from rebase

* fix typo; rm console.log

* rename ManageCollectibles to AddCollectibles; finish `collectibleContractAddress` rename

* fix tests

* fix e2e test

* update placeholder string

* [BUG] fixes settings state persistence for asset selection in send and swap flows (#2420)

* fixes settings state persistence for asset selection in send and swap flows

* simplifies selection logic in e2e tests

* tweaks role selector for test btn

* adds mocks to new send payment tests for common api paths

* uses correct login method for new test cases

* fixes back button locators across all new tests, tweaks selector for final default state assertions

* resets asset selection only on exit of send flow

* adjust send payment settings e2e tests for correct state after asset navigation

* Add memo-required flows for Dapp + Normal send (#2400)

* Feature/move history fetch to bg (#2273)

* upgrade to yarn 2 and use resolutions to block vulnerable package versions (#2239)

* upgrade to yarn 2 and use resolutions to block vulnerable package versions

* rm deprecated .yarnrc

* rm yarnpath

* try committing yarn binary to repo

* try corepack enable for gha

* update run tests cmd

* rm yarnpath

* rm npm i yarn

* update all pipelines

* rm superfluous history types

* ensure invoke host function tx shows contract parameters (#2243)

* ensure invoke host function tx shows contract parameters

* add test for fallback if contract spec retrieval fails

* Bugfix/rm auth param names (#2244)

* ensure invoke host function tx shows contract parameters

* add test for fallback if contract spec retrieval fails

* do not show contract parameters for authorizations

* add tests for create contract v1 and invoke contract

* add issuer for changeTrust op (#2246)

* add issuer for changeTrust op

* programmatically disable overflow:hidden when copying a value

* Revert "add issuer for changeTrust op (#2246)" (#2247)

This reverts commit 19c8a68.

* Bugfix/add issuer for changetrust (#2249)

* ensure invoke host function tx shows contract parameters

* add test for fallback if contract spec retrieval fails

* do not show contract parameters for authorizations

* add tests for create contract v1 and invoke contract

* add issuer for changeTrust op

* programmatically disable overflow:hidden when copying a value

* cache account balances and poll for updates

* fix CI tests

* rm `force:true` which was causing action to happen too fast

* do a fresh balance fetch on account/network change

* first pass at async history

* pr comments

* allow for history caching

* add more sentry tracking for Account and Wallets views (#2268)

* add more sentry tracking for Account and Wallets views

* adding more sentry reporting

* gracefully degrade on errors from Blockaid (#2269)

* gracefully degrade on errors from Blockaid

* should not be necessary to skip dapp scanning on custom network

* rm extra dep

* add a test for persisting configurations in the send flow (#2271)

* add a test for persisting configurations in the send flow

* rm logs and update muxed acct; lower xlm payment

* rm slow loading simulation

* handle missing scan-tx result; add disabled state for Confirm Anyway (#2272)

* handle missing scan-tx result; add disabled state for Confirm Anyway

* assertions to show correct confirm button on Blockaid error

* add cache for balances to ensure we do a fresh lookup when needed (#2275)

* add cache for balances to ensure we do a fresh lookup when needed

* add try...catch to token-prices polling

* rm log

* only dispatch saveBalancesForAccount when fresh data has been fetched

* adjust test to wait for UI change

* replace yarn setup with just yarn

* rm unnecessary return

* clear token details on redux clear action

* make history row construction async and check for redux state for updates

* add tests for assetdetails

* increase timeout for flakey test

* pr comments

* refresh account history every time account balances refresh

* check for updated appdata before showing password modal (#2300)

* check for updated appdata before showing password modal

* update error msg

* rm unused redirect logic

* stringify errors rather than using `cause` (#2302)

* Feature/move icons to own hook (#2308)

* move get icons out of critical path; rely on background's cache

* add tests and comments

* add comment

* add comment

* only dispatch if we have cached icons

* PR comments

* skip blockaid scan on first fetch of account-balances (#2310)

* skip blockaid scan on first fetch of account-balances

* rm stub change

* rm more stubs

* rm log

* add comments and update boolean naming

* Dropdown menu option to copy wallet address (#2316)

* add button to copy address from dropdown

* Added translations

* revert translation file changes

* revert translation file changes

* Added translations

* revert changes to translation files

* move copy address button to first dropdown position

* scroll on long strings; pretty print json (#2320)

* scroll on long strings; pretty print json

* rm log

* add correct snapshot for json message

* rm log

* finish comment

* add error case for JSON

* don't use carat for lib

* update yarn.lock

* move scrollbar to btm of container; reduce json font size

* update snapshot

* re-searching so should abort any in flight API requests (#2323)

* re-searching so should abort any in flight API requests

* add comment

* fix test name

* make test more reliable

* add check for correct search results

* fix jest locator

* [FEATURE] new send/swap navigation flow (#2353)

* adds SelectionTile and AddressTile, updates nav flows to match updates. Adds query parameter for default values in send flow

* Added translations

* adds address tile and uses it in swap flow, tweaks selection tile styles

* adds unit tests for new tile components

* Added translations

* updates swap navigation flow to match updates, updates tests flows to match

* updates back icon for send and swap steps, fixes bad test references

* tweaks locator in address tile tests

* adds store state to asset tile tests, removes asset icon mock

* updates SelectionTile prop name, adds isSuspicious prop for AssetTile

* adds placeholder value in TokenList for missing token USD value

* uses real IdenticonImg in address tile unit tests

* adds query param validation for send and swap flow

* Update extension/src/popup/views/SendPayment/index.tsx

Co-authored-by: Cássio Marcos Goulart <3228151+CassioMG@users.noreply.github.com>

* adds missing import

* adds class for tile icon

---------

Co-authored-by: Cássio Marcos Goulart <3228151+CassioMG@users.noreply.github.com>

* [FEATURE] adds send and swap buttons to asset detail view (#2351)

* adds send and swap buttons to asset detail view

* uses secondary button styles

* removes run snapshots job (#2355)

* release/5.35.4 (#2354)

* upgrade to ledger-hq/hw-transport-webhid (#2350)

* upgrade to ledger-hq/hw-transport-webhid

* add tests

* add ledger support for new trustline flow (#2352)

* upgrade to ledger-hq/hw-transport-webhid

* add ledger support for new trustline flow

* only re-fetch balances if we were successful

* test for fetching balances on success

* add reset spys

* adjust spacing at top of hw wallet modal

* Now that `Done` button properly shows, click it in tests (#2356)

* skip flakey test

* skip flakey test

* renames local vars to follow convention

* adds tests for LP share and tweaks LP title

* adds links with query params for asset detail CTAs

---------

Co-authored-by: Piyal Basu <pbasu235@gmail.com>

* only fetch asset list data if needed (#2369)

* only fetch asset list data if needed

* correctly show icon loading state

* [BUG] SAC token management improvements (#2374)

* adds SAC detection when changing trust in the add and remove token flows

* updates arg signature for isAssetSac

* Feature/cache token prices (#2373)

* cache token prices and batch loading wallets

* use similar methodology for token price and account balance caching

* fix loading state trigger

* fix tests

* use helper for cache clearing

* set isFetchingTokenPrices to false in catch handler

* rollback error change

* load backend settings async on Account view (#2381)

* load backend settings async on Account view

* rm console.logs

* Feature/use ledger key for home domains (#2363)

* use ledger-key/accounts endpoint for home domains

* fix tests

* create generic ledger key account helper; add tests

* rm unneeded data-test prop

* rm unused import

* [CHORE] git process updates (#2361)

* moves the add translations hook to the pre commit stage, removes standalone translations commit

* adds script to update app version, removes version update from submit production action, adds update version step to test run action for release branches

* removes version input, now uses package version

* fetch asset domains in one calls

* fix tests

* cache home domains while iterating over account history rows

* fitler non-G keys

* rm .only

* fix test param

* PR comments

---------

Co-authored-by: aristides <aristides.staffieri@stellar.org>

* update version numbers for release

* rm unnecessary calls to make flows even faster (#2391)

* makes send swap buttons stay in the container in full screen mode (#2392)

* makes send swap buttons stay in the container in full screen mode

* add a pause to make sure flakey e2e test has time to save changes

* add v1 of memo-required flow for transaction confirmation

* adjust memo required flow for dapp and tx rebuild

* add memo max bytes error handling

* update transaction loose text strings

* update transaction loose text strings

* update tranlation with uppercase

* fix transaction fee setting

* adjust memo required on revalidation and add a container for message

* update memo-required flow to slide from right

* update translation keys and memo required panes

* use redux selector for allAccounts to properly update rename (#2403)

* use redux selector for allAccounts to properly update rename

* add longer timeout for flakey btn

* fix unit tests

* revert test case change

* adjust sending user back to review sheet on add memo only

* add e2e tests for memo required flows

* fix add memo back and forth test

* simplify comments and logic for memo required check

---------

Co-authored-by: Piyal Basu <pbasu235@gmail.com>
Co-authored-by: aristides <aristides.staffieri@stellar.org>
Co-authored-by: Cássio Marcos Goulart <3228151+CassioMG@users.noreply.github.com>

* Update PT Translations and usage (#2404)

* Feature/move history fetch to bg (#2273)

* upgrade to yarn 2 and use resolutions to block vulnerable package versions (#2239)

* upgrade to yarn 2 and use resolutions to block vulnerable package versions

* rm deprecated .yarnrc

* rm yarnpath

* try committing yarn binary to repo

* try corepack enable for gha

* update run tests cmd

* rm yarnpath

* rm npm i yarn

* update all pipelines

* rm superfluous history types

* ensure invoke host function tx shows contract parameters (#2243)

* ensure invoke host function tx shows contract parameters

* add test for fallback if contract spec retrieval fails

* Bugfix/rm auth param names (#2244)

* ensure invoke host function tx shows contract parameters

* add test for fallback if contract spec retrieval fails

* do not show contract parameters for authorizations

* add tests for create contract v1 and invoke contract

* add issuer for changeTrust op (#2246)

* add issuer for changeTrust op

* programmatically disable overflow:hidden when copying a value

* Revert "add issuer for changeTrust op (#2246)" (#2247)

This reverts commit 19c8a68.

* Bugfix/add issuer for changetrust (#2249)

* ensure invoke host function tx shows contract parameters

* add test for fallback if contract spec retrieval fails

* do not show contract parameters for authorizations

* add tests for create contract v1 and invoke contract

* add issuer for changeTrust op

* programmatically disable overflow:hidden when copying a value

* cache account balances and poll for updates

* fix CI tests

* rm `force:true` which was causing action to happen too fast

* do a fresh balance fetch on account/network change

* first pass at async history

* pr comments

* allow for history caching

* add more sentry tracking for Account and Wallets views (#2268)

* add more sentry tracking for Account and Wallets views

* adding more sentry reporting

* gracefully degrade on errors from Blockaid (#2269)

* gracefully degrade on errors from Blockaid

* should not be necessary to skip dapp scanning on custom network

* rm extra dep

* add a test for persisting configurations in the send flow (#2271)

* add a test for persisting configurations in the send flow

* rm logs and update muxed acct; lower xlm payment

* rm slow loading simulation

* handle missing scan-tx result; add disabled state for Confirm Anyway (#2272)

* handle missing scan-tx result; add disabled state for Confirm Anyway

* assertions to show correct confirm button on Blockaid error

* add cache for balances to ensure we do a fresh lookup when needed (#2275)

* add cache for balances to ensure we do a fresh lookup when needed

* add try...catch to token-prices polling

* rm log

* only dispatch saveBalancesForAccount when fresh data has been fetched

* adjust test to wait for UI change

* replace yarn setup with just yarn

* rm unnecessary return

* clear token details on redux clear action

* make history row construction async and check for redux state for updates

* add tests for assetdetails

* increase timeout for flakey test

* pr comments

* refresh account history every time account balances refresh

* check for updated appdata before showing password modal (#2300)

* check for updated appdata before showing password modal

* update error msg

* rm unused redirect logic

* stringify errors rather than using `cause` (#2302)

* Feature/move icons to own hook (#2308)

* move get icons out of critical path; rely on background's cache

* add tests and comments

* add comment

* add comment

* only dispatch if we have cached icons

* PR comments

* skip blockaid scan on first fetch of account-balances (#2310)

* skip blockaid scan on first fetch of account-balances

* rm stub change

* rm more stubs

* rm log

* add comments and update boolean naming

* Dropdown menu option to copy wallet address (#2316)

* add button to copy address from dropdown

* Added translations

* revert translation file changes

* revert translation file changes

* Added translations

* revert changes to translation files

* move copy address button to first dropdown position

* scroll on long strings; pretty print json (#2320)

* scroll on long strings; pretty print json

* rm log

* add correct snapshot for json message

* rm log

* finish comment

* add error case for JSON

* don't use carat for lib

* update yarn.lock

* move scrollbar to btm of container; reduce json font size

* update snapshot

* re-searching so should abort any in flight API requests (#2323)

* re-searching so should abort any in flight API requests

* add comment

* fix test name

* make test more reliable

* add check for correct search results

* fix jest locator

* [FEATURE] new send/swap navigation flow (#2353)

* adds SelectionTile and AddressTile, updates nav flows to match updates. Adds query parameter for default values in send flow

* Added translations

* adds address tile and uses it in swap flow, tweaks selection tile styles

* adds unit tests for new tile components

* Added translations

* updates swap navigation flow to match updates, updates tests flows to match

* updates back icon for send and swap steps, fixes bad test references

* tweaks locator in address tile tests

* adds store state to asset tile tests, removes asset icon mock

* updates SelectionTile prop name, adds isSuspicious prop for AssetTile

* adds placeholder value in TokenList for missing token USD value

* uses real IdenticonImg in address tile unit tests

* adds query param validation for send and swap flow

* Update extension/src/popup/views/SendPayment/index.tsx

Co-authored-by: Cássio Marcos Goulart <3228151+CassioMG@users.noreply.github.com>

* adds missing import

* adds class for tile icon

---------

Co-authored-by: Cássio Marcos Goulart <3228151+CassioMG@users.noreply.github.com>

* [FEATURE] adds send and swap buttons to asset detail view (#2351)

* adds send and swap buttons to asset detail view

* uses secondary button styles

* removes run snapshots job (#2355)

* release/5.35.4 (#2354)

* upgrade to ledger-hq/hw-transport-webhid (#2350)

* upgrade to ledger-hq/hw-transport-webhid

* add tests

* add ledger support for new trustline flow (#2352)

* upgrade to ledger-hq/hw-transport-webhid

* add ledger support for new trustline flow

* only re-fetch balances if we were successful

* test for fetching balances on success

* add reset spys

* adjust spacing at top of hw wallet modal

* Now that `Done` button properly shows, click it in tests (#2356)

* skip flakey test

* skip flakey test

* renames local vars to follow convention

* adds tests for LP share and tweaks LP title

* adds links with query params for asset detail CTAs

---------

Co-authored-by: Piyal Basu <pbasu235@gmail.com>

* only fetch asset list data if needed (#2369)

* only fetch asset list data if needed

* correctly show icon loading state

* [BUG] SAC token management improvements (#2374)

* adds SAC detection when changing trust in the add and remove token flows

* updates arg signature for isAssetSac

* Feature/cache token prices (#2373)

* cache token prices and batch loading wallets

* use similar methodology for token price and account balance caching

* fix loading state trigger

* fix tests

* use helper for cache clearing

* set isFetchingTokenPrices to false in catch handler

* rollback error change

* load backend settings async on Account view (#2381)

* load backend settings async on Account view

* rm console.logs

* Feature/use ledger key for home domains (#2363)

* use ledger-key/accounts endpoint for home domains

* fix tests

* create generic ledger key account helper; add tests

* rm unneeded data-test prop

* rm unused import

* [CHORE] git process updates (#2361)

* moves the add translations hook to the pre commit stage, removes standalone translations commit

* adds script to update app version, removes version update from submit production action, adds update version step to test run action for release branches

* removes version input, now uses package version

* fetch asset domains in one calls

* fix tests

* cache home domains while iterating over account history rows

* fitler non-G keys

* rm .only

* fix test param

* PR comments

---------

Co-authored-by: aristides <aristides.staffieri@stellar.org>

* update version numbers for release

* rm unnecessary calls to make flows even faster (#2391)

* makes send swap buttons stay in the container in full screen mode (#2392)

* makes send swap buttons stay in the container in full screen mode

* add a pause to make sure flakey e2e test has time to save changes

* add v1 of memo-required flow for transaction confirmation

* adjust memo required flow for dapp and tx rebuild

* add memo max bytes error handling

* update transaction loose text strings

* update transaction loose text strings

* update tranlation with uppercase

* fix transaction fee setting

* adjust memo required on revalidation and add a container for message

* update memo-required flow to slide from right

* update translation keys and memo required panes

* use redux selector for allAccounts to properly update rename (#2403)

* use redux selector for allAccounts to properly update rename

* add longer timeout for flakey btn

* add portuguese missing translations

* adjust still missing PT translations

* update last mismatching translation keys

* add one more set of missing translations

* extra set of missing function translations

* extra set of missing function translations

* extra set of missing function translations

* fix unit tests

* update e2e tests

* delete unused files

* add one more set of missing translations

* add hwconnect, soroban and error translations

* replace usage of curly quotes with normal quotes

* break down long translation keys

* remove pending duoplicate keys

* fix nested translation keys

* add translation for congestion

* remove nested translation keys

* remove nested translation keys

* remove nested translation keys

* adjust nested files and revert prettier config

* adjust nested files and revert prettier config

* adjust missing fee translation

* remove duplicated keys

* prevent webpack from removing translations

* prevent webpack from removing translations

* replace strings with interpolation

* add back memo flow and update missing string interpolations

* remove Address.json and interpolate keys

* remove address.json

* preserve translation namespaces

* remove auto creation of address.json

* prevent address namespace creation

* fix failing tests cases

* revert changes to sendPayment flow

* adjust language setting on test fixtures

* update account unfunded flaky test

* revert test case change

* adjust sending user back to review sheet on add memo only

* add e2e tests for memo required flows

* fix add memo back and forth test

* merge base into branch

* partial revert changes to tests

* revert changes unrelated to translation on tests

* revert changes unrelated to translations

* remove custom logic from i18n webpack

* remove interpolated forced spacing

* simplify interpolated strings

* add missing PT translations and smoke tests

* adjust casing for unified translations

* revert quotes back to curly quotes

* simplify test fixtures for PT lang

* revert quotes back to curly quotes

* replace string concatenations with interpolation

* revert strings to old forms with translation

---------

Co-authored-by: Piyal Basu <pbasu235@gmail.com>
Co-authored-by: aristides <aristides.staffieri@stellar.org>
Co-authored-by: Cássio Marcos Goulart <3228151+CassioMG@users.noreply.github.com>

* Feature/collectible detail (#2451)

* add CollectibleDetail UI

* add popover and tests

* adds additional testing

* fetch only the metadata for the current detail

* use state from hook

* fix missing translations helpers

* rm log

* fix tests

* test failing due to copy change

* rm empty dir and fix test due to copy change

* add shadcn sheet and use on asset/collectible detail (#2463)

* Bump mdast-util-to-hast from 13.2.0 to 13.2.1 (#2421)

Bumps [mdast-util-to-hast](https://github.com/syntax-tree/mdast-util-to-hast) from 13.2.0 to 13.2.1.
- [Release notes](https://github.com/syntax-tree/mdast-util-to-hast/releases)
- [Commits](syntax-tree/mdast-util-to-hast@13.2.0...13.2.1)

---
updated-dependencies:
- dependency-name: mdast-util-to-hast
  dependency-version: 13.2.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* add collectibles to the Send flow

* Revert "add collectibles to the Send flow"

This reverts commit 175b086.

* Add collectibles to send flow (#2473)

* Reapply "add collectibles to the Send flow"

This reverts commit be2a075.

* fix incorrect fee

* code cleanup

* pr comments

* check for found collectible

* add unit tests

* [CHORE] upgrades stellar sdk to latest version (#2480)

* upgrades stellar sdk to latest version

* upgrades sdk for remaining workspaces

* tweaks history tests for current account state

* adds action to hide a collectible, adds hidden collectible option in menu and hidden collectible sheet

* fixes collectible detail z-index when nested, tweaks notification styles

* fixes refresh collectibles state bug

* extends account collectibles tests for hide and unhide changes. Adds unit and e2e tests for the hide and unhide functionality

* refactor hidden collectibles callabck flow to avoid extra consumer coupling

* combines common helpers for isCollectiblesHidden

* refactors sheet usage to separate the body state from the open and closed state

* ignores MCPs in git for now

* fix: add missing isHidden prop and hidden collectibles integration

* chore: remove local dev files from git tracking

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Piyal Basu <pbasu235@gmail.com>
Co-authored-by: leofelix077 <leonardoaalf077@hotmail.com>
Co-authored-by: Cássio Marcos Goulart <3228151+CassioMG@users.noreply.github.com>
* adds better handling of balance call failures to the sign transaction view. Tweaks logic for insufficient balance warning to degrade silently in case of balance failures. Adds test cases for balance failures in the sign transaction flow

* uses constant for network passphrase for insufficient fee unit test

* uses constant for network passphrase for remaining unit tests in sign-transaction

* tweaks balances signature for null preference
… check for SAC assets in order to decide to add a token ID or change a trustline. Adds supporting unit tests. (#2567)
* restore hide collectibles button in dropdown and bottom sheet interaction changes

* restores original hide collectibles snapshots

* regenerates snapshots for the hide collectibles e2e test suite

* increases max diff ratio for snapshots to exclude small differences in font rendering and other OS details

* tweak deviceScaleFactor and regenrate snapshots for collectibles to align viewport zoom between generations and CI snapshots

* removes locally generated snapshots for hide collectibles, will be generated in CI to ensure OS and runtime matcgh

* restores original pixel ratio diff max

* removes viewport config for screen sizes and generates new snapshots for hide collectibles suite

* removes snapshots from hide collectible suite
* refactor e2e tests for scalability

* restore missing tests

* remove extra stubbing

* test context

* test context

* allow only

* try moving context

* test ci

* try moving stub inside test

* Revert "try moving stub inside test"

This reverts commit 0f1dafa.

* move inside login

* try moving context inside login

* try just 2 test

* try a few more

* try tests with ai tips

* can we use multiple workers

* reduce workers

* try 3 workers

* try larger machine

* try more workers and fix flake

* 5 workers

* readd stubs; decrease workers

* rm unused imports

* fix integration tests

* rm debugging stuff

* add better documentation

* copilot pr comments

* fix flakey sendcollectibles tests

* add readme
* cherry pick previous restore-health-check commits

* updating shadcn dep
* release/5.37.3 (#2601)

* Bugfix/improve login (#2600)

* bump iterations

* generate unique iv

* bump version numbers

* Update extension/src/background/messageListener/__tests__/createAccount.test.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* fix: validate HTTP status before caching API responses

   - Add res.ok check in cachedFetch before storing responses
   - Preserve existing cache when fetch returns HTTP errors
   - Add unit tests for cachedFetch error handling

---------

Co-authored-by: Piyal Basu <pbasu235@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Move setAllowListDomain call after queue validation check to ensure
   domains are only added to the allowlist when a valid response queue
   item exists. Add comprehensive test coverage for grantAccess handler.
* feat(background): add TTL-based cleanup for message queues

   - Add createdAt timestamp to queue item types (ResponseQueueItem,
     TransactionQueueItem, BlobQueueItem, AuthEntryQueueItem, TokenQueueItem)
   - Create queueCleanup utility with cleanupQueue() and startQueueCleanup()
   - Set 5-minute TTL for queue items with 1-minute cleanup interval
   - Initialize periodic cleanup in popupMessageListener on module load
   - Update freighterApiMessageListener to include createdAt on all queue pushes
   - Update addToken handler for new TokenQueueItem structure
   - Add tests for queue cleanup functionality

* reverts playwright config changes

* feat(background): preserve queue items with open popups during TTL cleanup

   - Add MARK_QUEUE_ACTIVE service type and message handler
   - Add activeQueueUuids Set to track UUIDs with open popups
   - Update cleanupQueue to skip items in activeQueueUuids
   - Add markQueueActive internal API function
   - Add useMarkQueueActive hook to mark items active on mount/inactive on unmount
   - Integrate hook into SignTransaction, SignMessage, SignAuthEntry, AddToken, GrantAccess views
   - Add tests for active UUID tracking in cleanup and hook behavior

* adds createdAt field to response queue mocks

* adds missing imports and context for login
* adds missing imports and context for login

* fix: normalize domain to punycode before allowlist check

   The useIsDomainListedAllowed hook was comparing raw domain strings
   against the allowlist, but grantAccess stores domains as punycode.
   This caused IDN (internationalized domain names) to fail matching
   their stored punycode equivalents, requiring users to re-authorize
   legitimate IDN domains repeatedly.

   Convert the input domain to punycode before checking against the
   allowlist to ensure consistent matching.

   Add tests for:
   - useIsDomainListedAllowed hook with IDN/punycode matching
   - URL helper functions including getPunycodedDomain
#2608)

Co-authored-by: Miguel Nieto <miguelnietoarias3@gmail.com>
* Make e2e tests more reliable (#2562)

* refactor e2e tests for scalability

* restore missing tests

* remove extra stubbing

* test context

* test context

* allow only

* try moving context

* test ci

* try moving stub inside test

* Revert "try moving stub inside test"

This reverts commit 0f1dafa.

* move inside login

* try moving context inside login

* try just 2 test

* try a few more

* try tests with ai tips

* can we use multiple workers

* reduce workers

* try 3 workers

* try larger machine

* try more workers and fix flake

* 5 workers

* readd stubs; decrease workers

* rm unused imports

* fix integration tests

* rm debugging stuff

* add better documentation

* copilot pr comments

* fix flakey sendcollectibles tests

* add readme

* expand contract id on screen width change

* elaborate on comment

* restore unrelated changes

* Update extension/src/helpers/hooks/useIsWideScreen.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* pr comment

* fix flakey test

* fix another flakey test

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@piyalbasu piyalbasu marked this pull request as draft February 23, 2026 17:51
leofelix077 and others added 3 commits February 23, 2026 14:54
* Handle blockaid unable-to-scan states

- Add unable-to-scan handling for transaction, asset, and site scans
- Show "Proceed with caution" warning when scans fail or return errors
- Context-aware copy: distinguish "Unable to scan token" vs "Unable to scan transaction"
- Add blockaid debug override panel in Debug view
- Refactor ReviewTransaction into sub-components (ActionButtons, SendAsset, SendDestination)
- Add security improvements: URL parameter encoding, isDev guards, Sentry privacy
- Fix scanAssetBulk to return null instead of {} on error (fail-closed)
- Remove duplicate render paths in BlockaidTxScanLabel
- Add comprehensive e2e tests for blockaid scan states (safe, suspicious, malicious, unable, errors)
- Add blockaid unit tests
- Add i18n translations (en/pt)

Co-Authored-By: Claude <noreply@anthropic.com>

* revert changes to toaster

* update UI and malicious case for add token

* simplify double calls to blockaid override state

* fix failing unit tests

* adjust css styles to use sds vars

---------

Co-authored-by: Claude <noreply@anthropic.com>
@piyalbasu piyalbasu requested a review from Copilot February 23, 2026 18:08
@piyalbasu piyalbasu marked this pull request as ready for review February 23, 2026 18:15
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Introduces a new Contact Book screen in the extension popup, wiring it into routing and metrics, adding localization strings, and updating the toast UI to include improved styling and a close button.

Changes:

  • Added ContactBook view + route, and registered a viewContactBook metric on navigation.
  • Implemented Contact Book UI (empty state, list rows, context menu) and EditContactCard modal with validation.
  • Expanded EN/PT translations for Contact Book strings and updated toast component styling/behavior.

Reviewed changes

Copilot reviewed 15 out of 15 changed files in this pull request and generated 10 comments.

Show a summary per file
File Description
extension/src/popup/views/tests/ContactBook.test.tsx Adds UI/validation coverage for the Contact Book screen.
extension/src/popup/views/Settings/index.tsx Adds a Settings nav link to Contact Book behind a feature flag.
extension/src/popup/views/ContactBook/styles.scss Styles for Contact Book layout, list rows, menu, and modal overlay.
extension/src/popup/views/ContactBook/index.tsx Implements the Contact Book screen UI and interactions (add/edit/copy/delete).
extension/src/popup/metrics/views.ts Maps the Contact Book route to a “loaded screen” metric.
extension/src/popup/locales/pt/translation.json Adds Portuguese strings for Contact Book and related UI actions/errors.
extension/src/popup/locales/en/translation.json Adds English strings for Contact Book and related UI actions/errors.
extension/src/popup/constants/routes.ts Defines the new /settings/contact-book route constant.
extension/src/popup/constants/metricsNames.ts Adds the viewContactBook metric name.
extension/src/popup/constants/featureFlags.ts Introduces a isContactListEnabled flag (currently hard-coded).
extension/src/popup/components/EditContactCard/styles.scss Styles for the add/edit contact modal card.
extension/src/popup/components/EditContactCard/index.tsx Implements the add/edit contact form + validation (including federation checks).
extension/src/popup/basics/shadcn/Toast/styles.scss Updates toast styling (Sonner) including close button layout.
extension/src/popup/basics/shadcn/Toast/index.tsx Enables toast close button and adds a success icon mapping.
extension/src/popup/Router.tsx Registers the Contact Book route in the router.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

[t],
);

const handleDeleteContact = useCallback(
Copy link
Contributor Author

Choose a reason for hiding this comment

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

delete and save just set contacts locally for now. This will soon be making calls to background storage

Copy link
Contributor

Copilot AI commented Feb 23, 2026

@piyalbasu I've opened a new pull request, #2613, to work on those changes. Once the pull request is ready, I'll request review from you.

@piyalbasu piyalbasu changed the base branch from master to feature/contact-lists March 10, 2026 16:43
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 17 out of 17 changed files in this pull request and generated 6 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Copy link
Contributor

Copilot AI commented Mar 10, 2026

@piyalbasu I've opened a new pull request, #2644, to work on those changes. Once the pull request is ready, I'll request review from you.

Copilot AI and others added 3 commits March 10, 2026 18:14
)

* Initial plan

* fix: translate "Contact actions" to Portuguese in pt/translation.json

Co-authored-by: piyalbasu <6789586+piyalbasu@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: piyalbasu <6789586+piyalbasu@users.noreply.github.com>
- Add federation timeout (10s) + AbortController to prevent UI freezes
- Validate federation domains before network requests (SSRF mitigation)
- Fix race condition in duplicate address check using stale resolved refs
- Fix federation failure not persisting across field re-validation
- Strip bidi/zero-width unicode characters from contact names
- Trim address input to prevent whitespace-based duplicate bypass
- Add 32-char max length for contact names
- Use truncatedFedAddress for federation address display
- Add dirty form check on modal backdrop dismiss
- Extract validation schema into helpers/contactList.ts
- Add missing i18n keys (en + pt)
- Update tests for new validation and display logic

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@piyalbasu piyalbasu requested a review from Copilot March 19, 2026 16:30
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 18 out of 18 changed files in this pull request and generated 3 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

piyalbasu and others added 5 commits March 19, 2026 12:38
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 18 out of 18 changed files in this pull request and generated 3 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +53 to +54
setCardMode({ type: "add" });
}, []);
Comment on lines +226 to +228
<div className="ContactBook__row__identicon">
<IdenticonImg publicKey={data.resolvedAddress || address} />
</div>
Comment on lines +103 to +108
if (
!refs.hasAddressBlurred.current ||
refs.activeField.current !== "address"
)
return !refs.federationFailed.current;

Copy link
Contributor

@CassioMG CassioMG left a comment

Choose a reason for hiding this comment

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

Lgtm

@piyalbasu
Copy link
Contributor Author

@copilot open a new pull request to apply changes based on the comments in this thread

Copy link
Contributor

Copilot AI commented Mar 19, 2026

@piyalbasu I've opened a new pull request, #2658, to work on those changes. Once the pull request is ready, I'll request review from you.

…s, federation resolution on Enter (#2658)

* Initial plan

* fix: clear menu on add, muxed identicon base address, federation resolution on Enter

Co-authored-by: piyalbasu <6789586+piyalbasu@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: piyalbasu <6789586+piyalbasu@users.noreply.github.com>
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.

Contact Book UI

7 participants