10000 feat(bridge): display account proxy by shoom3301 · Pull Request #5881 · cowprotocol/cowswap · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

feat(bridge): display account proxy #5881

8000
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 37 commits into from
Jun 26, 2025
Merged

feat(bridge): display account proxy #5881

merged 37 commits into from
Jun 26, 2025

Conversation

shoom3301
Copy link
Collaborator
@shoom3301 shoom3301 commented Jun 24, 2025

Summary

Fixes: https://www.notion.so/cownation/Recipient-address-is-confusing-2108da5f04ca809d9a51d7bcf09e8f10?source=copy_link

  1. Added "Account proxy" displaying as a recipient in bridging quote details
  2. Added "Account proxy" link in the account modal
  3. Added "Account proxy" as a recipient in activities list (account modal). I know, we won't need it once Michel is done with his PR
  4. Split Account proxy page into two tabs: 1) about 2) Recover funds
  5. Added auto detection of tokens with balances in "Account proxy" page. It will take a token with highest balance by default and display "There are some DAI in your proxy account..." banner
  6. The token will also be set by default in "Recover funds" tab

image

image

image

image

image

image

To Test

  1. <> Open the page about
  • <<What to expect?>> Verify it contains about information...
  • Checkbox Style list of things a QA person could verify, i.e.
  • Should display Text Input our storybook
  • Input should not accept Numbers
  1. <> ...

Background

Optional: Give background information for changes you've made, that might be difficult to explain via comments

Summary by CodeRabbit

  • New Features

    • Introduced the "Account Proxy" (CoWShed) feature, accessible via a new navigation item and dedicated routes.
    • Added a modal and widget interface for managing account proxy details, including tabs for "About" and "Recover funds".
    • Enabled users to view and recover funds held in their proxy account, with support for both native and ERC-20 tokens.
    • Added banners and tooltips to inform users about proxy accounts and tokens held within them.
    • Provided direct links to account proxy pages and blockchain explorers for enhanced transparency.
  • Enhancements

    • Improved address display throughout the app with a new component for consistent, user-friendly links.
    • Updated navigation, banners, and confirmation modals to highlight proxy account usage during bridging and swaps.
    • Enhanced error messaging for bridge-related quote errors with clearer, user-friendly explanations.
    • Improved tabbed interfaces and modals for better usability and visual consistency.
  • Bug Fixes

    • Fixed balance and allowance updates to be account-specific, ensuring accurate tracking and display per user.
  • Refactor

    • Replaced legacy fund recovery and FAQ components with the new CoWShed modules.
    • Updated hooks and state management to support the new account proxy structure and modal flows.
  • Chores

    • Added explicit type annotations and improved code structure for better maintainability and type safety.

Copy link
vercel bot commented Jun 24, 2025

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Updated (UTC)
cosmos 🔄 Building (Inspect) Visit Preview Jun 26, 2025 0:20am
cowfi 🔄 Building (Inspect) Visit Preview Jun 26, 2025 0:20am
explorer-dev 🔄 Building (Inspect) Visit Preview Jun 26, 2025 0:20am
sdk-tools 🔄 Building (Inspect) Visit Preview Jun 26, 2025 0:20am
swap-dev 🔄 Building (Inspect) Visit Preview Jun 26, 2025 0:20am
widget-configurator 🔄 Building (Inspect) Visit Preview Jun 26, 2025 0:20am

Copy link
Contributor
coderabbitai bot commented Jun 24, 2025

Note

Currently processing new changes in this PR. This may take a few minutes, please wait...

📥 Commits

Reviewing files that changed from the base of the PR and between 8ffc08e and 77e2575.

📒 Files selected for processing (1)
  • apps/cowswap-frontend/src/modules/account/containers/AccountDetails/styled.ts (1 hunks)
 _____________________________________________________________________________________________________________________________________________________
< Progress in a fixed context is almost always a form of optimization. Creative acts generally don't stay in the context that they are in. - Alan Kay >
 -----------------------------------------------------------------------------------------------------------------------------------------------------
  \
   \   (\__/)
       (•ㅅ•)
       /   づ

Walkthrough

This update introduces a comprehensive "Account Proxy" (CoW Shed) feature to the application. It adds new React components, hooks, styled elements, and state management for interacting with account proxies, including viewing proxy details, recovering funds, and displaying proxy-related information. The change also restructures balances and allowances caching to be account-specific, updates route handling, and unifies address display logic via reusable components.

Changes

Files/Paths Change Summary
.../constants/routes.ts, .../menuConsts.tsx, .../pages/Hooks/cowShed.tsx, .../routes.ts Updated CoW Shed route to dynamic path with tab/token params; added Account Proxy menu item; refactored CowShed page to use new widget and navigation logic.
.../pure/AddressLink/index.tsx, .../pure/RecipientDisplay/index.tsx, .../pure/InfoTooltip/index.tsx Added reusable AddressLink component for blockchain addresses; refactored recipient displays to use it; added explicit return types.
.../pure/Tabs/index.tsx, .../pure/HookListsTabs/index.tsx Refactored Tabs component naming/props; updated usages to match.
.../updaters/LpBalancesAndAllowancesUpdater.tsx, .../updaters/WidgetTokensUpdater.tsx, .../updaters/WidgetTokensListsUpdater/index.tsx Improved polling logic; added WidgetTokensUpdater; explicit return types.
.../entities/balancesContext/* Added Jotai atom and hooks for balances context state management.
.../Header/AccountElement/index.tsx, .../TopLevelModals/index.tsx Explicit return types; added CoWShedModal to top-level modals.
.../account/containers/AccountDetails/*, .../SimpleAccountDetails/index.tsx, .../CowShedInfo/index.tsx, .../ActivitiesList.tsx Refactored AccountDetails to use ActivitiesList and CowShedInfo; improved type annotations and UI structure.
.../bridge/hooks/useQuoteSwapContext.ts, .../pure/contents/QuoteSwapContent/index.tsx, .../pure/contents/BridgingProgressContent/index.tsx, .../pure/contents/QuoteBridgeContent/index.tsx Integrated CowShed proxy address into bridge context and display; explicit return types.
.../trade/pure/RecipientRow/index.tsx, .../swap/containers/BottomBanners/index.tsx, .../swap/containers/SwapConfirmModal/index.tsx Unified address link rendering; added CowShed banner to swap confirm modal.
.../tradeFormValidation/pure/TradeFormButtons/tradeButtonsMap.tsx Unified and extended error handling for bridge quotes.
.../tokensList/containers/SelectTokenWidget/index.tsx, .../pure/SelectTokenModal/index.tsx, .../pure/TokensContent/index.tsx Added standalone mode for token selector; conditional rendering for modals and manage lists.
.../modules/cowShed/* (new files) Introduced full-featured Account Proxy (CoW Shed) module: widget, modal, tabs, hooks (proxy address, token balances, refund logic), services, banners, FAQ, and state atoms.
.../modules/hooksStore/containers/RecoverFundsFromProxy/* Deleted legacy RecoverFundsFromProxy component and related hook.
.../theme/components.tsx Removed StyledInternalLink component.
.../tradeQuote/services/doQuotePolling.ts Prevented fast quote fetching during bridging.
libs/balances-and-allowances/src/state/balancesAtom.ts, .../hooks/usePersistBalancesAndAllowances.ts, .../hooks/useSwrConfigWithPauseForNetwork.ts, .../updaters/BalancesAndAllowancesUpdater.tsx, .../updaters/BalancesCacheUpdater.tsx Refactored balances/allowances cache and update logic to be per-account; updated hooks and updaters accordingly.
libs/multicall/src/hooks/useMultipleContractSingleData.ts Added cacheKey param for more granular SWR caching.
libs/tokens/src/updaters/WidgetTokensListsUpdater/index.tsx, .../WidgetVirtualListUpdater/index.tsx Explicit return types; minor formatting.
libs/ui/src/pure/Tooltip/index.tsx Added isClosed prop to HoverTooltip for external control.
package.json Updated @cowprotocol/cow-sdk from 6.0.0-RC.64 to 6.0.0-RC.66.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant App
    participant Wallet
    participant CoWShedWidget
    participant ProxyContract
    participant Blockchain

    User->>App: Navigate to /account-proxy/:tab?/:token?
    App->>CoWShedWidget: Render widget/modal (tab, token)
    CoWShedWidget->>Wallet: Fetch current account
    CoWShedWidget->>ProxyContract: Fetch proxy address for account
    CoWShedWidget->>Blockchain: Check if proxy is deployed
    alt Tab = "about"
        CoWShedWidget->>App: Display proxy info, tokens, FAQ
    else Tab = "recover-funds"
        User->>CoWShedWidget: Select token to recover
        CoWShedWidget->>Blockchain: Fetch token balance
        User->>CoWShedWidget: Click "Recover funds"
        CoWShedWidget->>ProxyContract: Execute recovery transaction
        ProxyContract->>Blockchain: Transfer funds to user
    end
    CoWShedWidget->>App: Update balances context
Loading

Possibly related PRs

  • cowprotocol/cowswap#5865: Modifies explorer link generation for blockchain addresses, which is directly relevant as the current PR introduces address link components that render explorer URLs.

Suggested reviewers

  • elena-zh
  • alfetopito

Poem

In the meadow of code, a proxy now stands,
With tokens and tabs at your gentle commands.
Recover your funds with a click and a cheer,
The CowShed is open—no need to fear!
With widgets and banners, your balances bloom,
🐇 Hopping through routes, there’s always more room!
Hop, hop, hooray for the proxy’s debut!

✨ Finishing Touches
  • 📝 Generate Docstrings

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

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

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

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

Other keywords and placeholders

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

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .co 8000 derabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

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

@elena-zh
Copy link
Contributor

Hey @shoom3301 , thank you.
However, still there are some questions and issues:

  1. 0 appears instead of a banner when data is being loaded:
    image
  2. Could you please improve the address displaying on the Confirm modal and not to show an arrow in another line?
    address a bit nicer
  3. Account Proxy address is displayed for an account that does not have it (at least, yet)
    does not have
  4. In addition to the p3: Recover funds tokens list shows regular balanes in this case:
    no funds
    when no, regular balances
  5. Confirm modal: warnings also show a proxy address that an account does not have (at least, yet):
    will be deployed
    In this case, I think, we need a bit different message (cc @MindyCoW )
    Screenshot_1
  6. Could you please add a link to the 'recover funds' text?
    link on tab
  7. In terms of UI, could you please copy the warning pattern from the one we have on Linit orders?
    padd
    image
  8. When I press on the 'Connect to a wallet' button from the Proxy account page, it navigates me to the Swap,. Expected: stay on the Recover funds page.
  9. When I press on the 'Read more' from the Swap widget, the quote request runs and shows me the quote loading state first, then shows me Proxy account page. See the video: https://www.loom.com/share/0b6f0e7b416c49ceb52e6ed8aaf661c6
  10. When I on the Proxy account page, with every mouse click the page is closed and I get to the Swap page
  11. In terms of navigation, it would be great to navigate a user to the previous page they came from. E.g. if I come from Tokens page, pressing on the back button should return me there, not to the Swap widget.
  12. Still, I think that it would be nice to separate FAQ questions between tabs on the page . Was it discussed in the UX sync? Or it does not worth it?
    image

Thanks

@shoom3301
Copy link
Collaborator Author

@elena-zh thank you!

  1. Fixed
  2. Fixed
  3. It should be displayed. Sorry, I probably confused you with "it's only displayed if the proxy account is deployed". Please forget that, it should always be displayed
  4. I hide tabs when proxy is not deployed (see the pic bellow)
  5. It should be displayed, users must compare the recipient from confirm modal with the recipient in their wallet
  6. Sorry, I don't have time for that now, let's skip it
  7. Actually the banner in this UI is canonical, we should change others (out of this task scope)
  8. See p.4
  9. Fixed
  10. Fixed
  11. Sorry, I don't have time for that now, let's skip it
  12. Sorry, I don't have time for that now, let's skip it
image

Copy link
Contributor
@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

♻️ Duplicate comments (3)
apps/cowswap-frontend/src/modules/cowShed/pure/CoWShedFAQ.tsx (3)

12-45: Extract FAQ data for better maintainability.

The FAQ data remains hardcoded inside the component, making it difficult to maintain and reuse. This issue was previously identified and should be addressed.


55-58: Improve accessibility and avoid interfering with native details behavior.

The preventDefault() call still interferes with native keyboard navigation and screen reader functionality. This accessibility concern was previously raised and should be addressed.


72-74: Improve type safety and consistency for answer property.

The answer property still uses inconsistent typing (JSX vs functions), creating potential runtime issues. This type safety concern was previously identified and remains unresolved.

🧹 Nitpick comments (4)
apps/cowswap-frontend/src/modules/cowShed/pure/TokensInProxyBanner/index.tsx (4)

39-39: Fix grammatical error in banner text.

Missing the article "the" before "following tokens".

-        Your proxy account contains following tokens:
+        Your proxy account contains the following tokens:

51-51: Improve banner message clarity.

The current message is grammatically awkward and could be clearer about the purpose and action.

-        Something could go wrong and you can withdraw your funds at <strong>Recover funds</strong> tab
+        If something goes wrong, you can withdraw your funds using the <strong>Recover funds</strong> tab.

14-14: Replace magic numbers with design tokens.

Consider using design system tokens or named constants instead of hardcoded pixel values for better maintainability and consistency.

  const TokenLogoStyled = styled(TokenLogo)`
    display: inline-block;
    position: relative;
-   top: 3px;
+   top: ${({ theme }) => theme.spacing.xxs}; // or appropriate design token
  `

  const TokensList = styled.ul`
    margin: 0;
-   padding-left: 10px;
+   padding-left: ${({ theme }) => theme.spacing.sm}; // or appropriate design token

Also applies to: 19-19


40-50: Consider performance optimization for token amount calculations.

Creating CurrencyAmount instances on every render could impact performance. Consider memoizing these calculations, especially if the token list is large.

+import { useMemo } from 'react'

export function TokensInProxyBanner({ tokensToRefund }: TokensInProxyBannerProps): ReactNode {
  if (tokensToRefund.length === 0) return null

+ const tokenAmounts = useMemo(() => 
+   tokensToRefund.map(({ token, balance }) => ({
+     token,
+     amount: CurrencyAmount.fromRawAmount(token, balance.toString())
+   })), [tokensToRefund])

  return (
    <InlineBanner bannerType={StatusColorVariant.Warning} orientation={BannerOrientation.Horizontal}>
      <div>
        Your proxy account contains the following tokens:
        <TokensList>
-         {tokensToRefund.map(({ token, balance }) => {
-           const amount = CurrencyAmount.fromRawAmount(token, balance.toString())
-
+         {tokenAmounts.map(({ token, amount }) => {
            return (
              <li key={token.address}>
                <TokenAmount amount={amount} tokenSymbol={token} /> <TokenLogoStyled size={16} token={token} />
              </li>
            )
          })}
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 3a4b810 and 8ffc08e.

⛔ Files ignored due to path filters (1)
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (11)
  • apps/cowswap-frontend/src/legacy/components/TopLevelModals/index.tsx (2 hunks)
  • apps/cowswap-frontend/src/modules/account/containers/CowShedInfo/index.tsx (1 hunks)
  • apps/cowswap-frontend/src/modules/cowShed/containers/CoWShedModal/index.tsx (1 hunks)
  • apps/cowswap-frontend/src/modules/cowShed/containers/CoWShedTabs/index.tsx (1 hunks)
  • apps/cowswap-frontend/src/modules/cowShed/containers/CoWShedWidget/index.tsx (1 hunks)
  • apps/cowswap-frontend/src/modules/cowShed/containers/ProxyRecipient/index.tsx (1 hunks)
  • apps/cowswap-frontend/src/modules/cowShed/index.ts (1 hunks)
  • apps/cowswap-frontend/src/modules/cowShed/pure/CoWShedFAQ.tsx (1 hunks)
  • apps/cowswap-frontend/src/modules/cowShed/pure/TokensInProxyBanner/index.tsx (1 hunks)
  • apps/cowswap-frontend/src/modules/tradeFormValidation/pure/TradeFormButtons/tradeButtonsMap.tsx (4 hunks)
  • package.json (1 hunks)
✅ Files skipped from review due to trivial changes (2)
  • apps/cowswap-frontend/src/legacy/components/TopLevelModals/index.tsx
  • package.json
🚧 Files skipped from review as they are similar to previous changes (4)
  • apps/cowswap-frontend/src/modules/cowShed/index.ts
  • apps/cowswap-frontend/src/modules/cowShed/containers/ProxyRecipient/index.tsx
  • apps/cowswap-frontend/src/modules/cowShed/containers/CoWShedWidget/index.tsx
  • apps/cowswap-frontend/src/modules/account/containers/CowShedInfo/index.tsx
🧰 Additional context used
🧬 Code Graph Analysis (3)
apps/cowswap-frontend/src/modules/tradeFormValidation/pure/TradeFormButtons/tradeButtonsMap.tsx (1)
apps/cowswap-frontend/src/modules/tradeFormValidation/pure/TradeFormBlankButton/index.tsx (1)
  • TradeFormBlankButton (63-127)
apps/cowswap-frontend/src/modules/cowShed/containers/CoWShedTabs/index.tsx (3)
libs/widget-lib/src/types.ts (1)
  • SupportedChainId (4-4)
apps/cowswap-frontend/src/common/hooks/useNavigate.ts (1)
  • useNavigate (10-23)
apps/cowswap-frontend/src/common/pure/Tabs/index.tsx (1)
  • Tabs (5-11)
apps/cowswap-frontend/src/modules/cowShed/containers/CoWShedModal/index.tsx (2)
apps/cowswap-frontend/src/modules/cowShed/state/cowShedModalAtom.ts (1)
  • cowShedModalAtom (7-7)
apps/cowswap-frontend/src/modules/cowShed/containers/CoWShedWidget/index.tsx (1)
  • CoWShedWidget (30-111)
⏰ Context from checks skipped due to timeout of 90000ms (3)
  • GitHub Check: Lint
  • GitHub Check: Test
  • GitHub Check: Cypress
🔇 Additional comments (8)
apps/cowswap-frontend/src/modules/cowShed/containers/CoWShedModal/index.tsx (1)

9-22: LGTM! Clean modal implementation with proper state management.

The modal component follows React best practices with:

  • Proper Jotai state management
  • Early return for closed state
  • Correct use of React portal for modal rendering
  • Clean prop passing to child components
apps/cowswap-frontend/src/modules/cowShed/containers/CoWShedTabs/index.tsx (1)

21-64: LGTM! Well-structured tab component with proper mode handling.

The implementation effectively handles both modal and navigation modes:

  • Clean separation of concerns between modal state and routing
  • Proper token selector cleanup on tab changes
  • Correct synchronization between external props and internal state
  • Appropriate use of replace navigation for tab switching
apps/cowswap-frontend/src/modules/cowShed/pure/TokensInProxyBanner/index.tsx (1)

32-34: Fix the empty array check logic.

The current logic only checks if the first token exists, but should check if the array is empty. This could cause incorrect behavior if tokensToRefund is an empty array.

-  const firstToken = tokensToRefund[0]
-
-  if (!firstToken) return null
+  if (tokensToRefund.length === 0) return null

Likely an incorrect or invalid review comment.

apps/cowswap-frontend/src/modules/tradeFormValidation/pure/TradeFormButtons/tradeButtonsMap.tsx (5)

4-5: LGTM: Bridge error handling imports added correctly.

The new imports for BridgeProviderQuoteError and BridgeQuoteErrors are appropriately added to support enhanced bridge quote error handling.


32-32: LGTM: Centralized default error message improves maintainability.

The DEFAULT_QUOTE_ERROR constant provides a consistent fallback message across different error scenarios.


35-35: LGTM: Consistent use of centralized error constant.

Good refactoring to use the centralized DEFAULT_QUOTE_ERROR constant instead of hardcoded strings.


45-54: LGTM: Comprehensive bridge error mapping with appropriate specificity.

The bridgeQuoteErrorTexts mapping covers all BridgeQuoteErrors enum values with appropriate user-friendly messages. The specific messages for route-related errors ("No routes found") and unsupported operations ("Only 'sell' orders are supported") provide better user guidance than generic error messages.


112-132: Let’s locate the definitions and usages of both BridgeProviderQuoteError and the BridgeQuoteErrors enum more thoroughly:

#!/bin/bash
# Search for class or interface definitions of BridgeProviderQuoteError
rg -g "*.ts" -n "cla
9E88
ss BridgeProviderQuoteError" -A 5 -B 5
rg -g "*.ts" -n "interface BridgeProviderQuoteError" -A 5 -B 5

# Search all occurrences to find where message is declared or assigned
rg -g "*.ts" -n "BridgeProviderQuoteError" -A 5 -B 5

# Locate the BridgeQuoteErrors enum
rg -g "*.ts" -n "enum BridgeQuoteErrors" -A 5 -B 5

@shoom3301
Copy link
Collaborator Author

let's skip it

@elena-zh we can improve those points after, now we need to give Mindy some version for user testing.

Copy link
Contributor
@elena-zh elena-zh left a comment

Choose a reason for hiding this comment

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

… fix/cowshed-displaying

# Conflicts:
#	package.json
#	yarn.lock
… fix/cowshed-displaying

# Conflicts:
#	apps/cowswap-frontend/src/modules/account/containers/Transaction/ActivityDetails.tsx
#	apps/cowswap-frontend/src/modules/bridge/pure/RecipientDisplay/index.tsx
@shoom3301 shoom3301 merged commit 0692597 into develop Jun 26, 2025
7 of 15 checks passed
@shoom3301 shoom3301 deleted the fix/cowshed-displaying branch June 26, 2025 12:22
@github-actions github-actions bot locked and limited conversation to collaborators Jun 26, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants
0