Skip to content

V1.0#665

Merged
Dargon789 merged 147 commits into
masterfrom
v1.0
Jun 15, 2026
Merged

V1.0#665
Dargon789 merged 147 commits into
masterfrom
v1.0

Conversation

@Dargon789

@Dargon789 Dargon789 commented Jun 10, 2026

Copy link
Copy Markdown
Owner

Summary by Sourcery

Introduce a new wagmi-based demo dapp project and tighten security, tooling, and CI across the repository.

New Features:

  • Add a new Vite-based wagmi-project React dapp configured with wagmi, WalletConnect, and basic styling and documentation.

Bug Fixes:

  • Avoid leaking internal JSON parse error details from the primitives CLI HTTP server responses.

Enhancements:

  • Improve ID and nonce generation in wallet and identity services by using cryptographically secure randomness.
  • Restrict permissions for the pnpm-format-label GitHub workflow to the minimal required scope.

Build:

  • Add an explicit pnpm install --no-frozen-lockfile step to the tests GitHub workflow.
  • Introduce Azure Pipelines and CircleCI configurations for Node.js build and basic checkout steps.

CI:

  • Add a Fortify Application Security Testing GitHub workflow to run SAST scans on pushes, pull requests, and a schedule.

Deployment:

  • Add a CNAME file for custom domain configuration.

Documentation:

  • Add SECURITY policy documentation detailing supported versions and vulnerability reporting process.
  • Add GitHub issue templates for bug reports, feature requests, and custom issues to standardize user feedback.

Chores:

  • Check in additional project metadata and cache artifacts such as CodeSandbox tasks, funding configuration, and precompiled V8 cache files.

dependabot Bot and others added 30 commits March 30, 2024 07:24
Bumps the npm_and_yarn group with 1 update in the / directory: [express](https://github.com/expressjs/express).


Updates `express` from 4.18.2 to 4.19.2
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](expressjs/express@4.18.2...4.19.2)

---
updated-dependencies:
- dependency-name: express
  dependency-type: direct:development
  dependency-group: npm_and_yarn-security-group
...

Signed-off-by: dependabot[bot] <support@github.com>
…yarn-security-group-e0cd778f82

Bump the npm_and_yarn group across 1 directory with 1 update
Snyk has created this PR to upgrade @tanstack/react-query from 5.45.1 to 5.64.2.

See this package in npm:
@tanstack/react-query

See this project in Snyk:
https://app.snyk.io/org/dargon789/project/bb845543-cbee-4e11-8cf9-8bfdf9205bf1?utm_source=github&utm_medium=referral&page=upgrade-pr
…9e16dcb9a2eda9

Snyk upgrade 03178c54d4c54014129e16dcb9a2eda9
Signed-off-by: AU_gdev_19 <64915515+Dargon789@users.noreply.github.com>
Bumps the npm_and_yarn group with 1 update in the / directory: [next](https://github.com/vercel/next.js).


Updates `next` from 15.4.2 to 15.4.7
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](vercel/next.js@v15.4.2...v15.4.7)

---
updated-dependencies:
- dependency-name: next
  dependency-version: 15.4.7
  dependency-type: direct:production
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: AU_gdev_19 <64915515+Dargon789@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Signed-off-by: AU_gdev_19 <64915515+Dargon789@users.noreply.github.com>
Bumps the npm_and_yarn group with 1 update in the / directory: [happy-dom](https://github.com/capricorn86/happy-dom).
Bumps the npm_and_yarn group with 1 update in the /packages/wallet/dapp-client directory: [happy-dom](https://github.com/capricorn86/happy-dom).
Bumps the npm_and_yarn group with 1 update in the /packages/wallet/wdk directory: [happy-dom](https://github.com/capricorn86/happy-dom).


Updates `happy-dom` from 17.6.3 to 20.0.0
- [Release notes](https://github.com/capricorn86/happy-dom/releases)
- [Commits](capricorn86/happy-dom@v17.6.3...v20.0.0)

Updates `happy-dom` from 17.6.3 to 20.0.0
- [Release notes](https://github.com/capricorn86/happy-dom/releases)
- [Commits](capricorn86/happy-dom@v17.6.3...v20.0.0)

Updates `happy-dom` from 17.6.3 to 20.0.0
- [Release notes](https://github.com/capricorn86/happy-dom/releases)
- [Commits](capricorn86/happy-dom@v17.6.3...v20.0.0)

---
updated-dependencies:
- dependency-name: happy-dom
  dependency-version: 20.0.0
  dependency-type: direct:development
  dependency-group: npm_and_yarn
- dependency-name: happy-dom
  dependency-version: 20.0.0
  dependency-type: direct:development
  dependency-group: npm_and_yarn
- dependency-name: happy-dom
  dependency-version: 20.0.0
  dependency-type: direct:development
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps the npm_and_yarn group with 1 update in the / directory: [happy-dom](https://github.com/capricorn86/happy-dom).


Updates `happy-dom` from 20.0.0 to 20.0.2
- [Release notes](https://github.com/capricorn86/happy-dom/releases)
- [Commits](capricorn86/happy-dom@v20.0.0...v20.0.2)

---
updated-dependencies:
- dependency-name: happy-dom
  dependency-version: 20.0.2
  dependency-type: direct:development
  dependency-group: npm_and_yarn
...

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

Copy link
Copy Markdown

Review PR in StackBlitz Codeflow Run & review this pull request in StackBlitz Codeflow.

@codesandbox

codesandbox Bot commented Jun 10, 2026

Copy link
Copy Markdown

Review or Edit in CodeSandbox

Open the branch in Web EditorVS CodeInsiders

Open Preview

@sourcery-ai

sourcery-ai Bot commented Jun 10, 2026

Copy link
Copy Markdown

Reviewer's Guide

Enhances security and infrastructure by improving randomness and nonce generation, hardening error responses, updating CI workflows (GitHub Actions, CircleCI, Azure Pipelines, Fortify), adding issue templates and security policy, and introducing a new wagmi-based demo dapp project.

File-Level Changes

Change Details Files
Improve randomness and nonce generation for identifiers and signing operations.
  • Replace Math.random-based ID segment with crypto.getRandomValues for cryptographically secure randomness in ID generation.
  • Change nonce generation from timestamp-based Hex.fromNumber(Date.now()) to Hex.random(16) for better entropy and unpredictability.
packages/wallet/dapp-client/src/DappTransport.ts
packages/services/identity-instrument/src/index.ts
Harden HTTP JSON-RPC error handling to avoid leaking server internals.
  • Update JSON parse error response to return a generic 'Parse error' without serializing the caught error object.
packages/wallet/primitives-cli/src/subcommands/server.ts
Adjust and extend CI/CD workflows, including dependency installation and security scanning.
  • Add pnpm install step to tests workflow to ensure dependencies are installed before running.
  • Configure permissions for the pnpm-format-label GitHub Action workflow.
  • Add a Fortify AST Scan GitHub Actions workflow for SAST integration.
  • Introduce a minimal CircleCI config and an Azure Pipelines YAML for Node.js build integration.
.github/workflows/tests.yml
.github/workflows/on_pr_pnpm-format-label.yml
.github/workflows/fortify.yml
.circleci/config.yml
azure-pipelines.yml
Add repository process documentation and templates for security and issue tracking.
  • Add standardized bug report, feature request, and custom issue templates.
  • Introduce a SECURITY.md document describing supported versions and vulnerability reporting process.
  • Add funding and CNAME placeholder files and other metadata scaffolding.
.github/ISSUE_TEMPLATE/bug_report.md
.github/ISSUE_TEMPLATE/feature_request.md
.github/ISSUE_TEMPLATE/custom.md
SECURITY.md
FUNDING.json
CNAME
Add a new wagmi-based Vite React demo dapp project and associated tooling config.
  • Create a new wagmi-project Vite React app wired with wagmi, viem, React Query, and WalletConnect/Coinbase connectors.
  • Implement a comprehensive App.tsx demo for Sequence wallet: environment selection, connection flows, signing, transactions, token queries, and prohibited action tests.
  • Add TypeScript, Vite, Biome, and wagmi configuration, entry point, HTML shell, and basic theming CSS.
  • Add project-specific config and ignore files for the wagmi project.
wagmi-project/package.json
wagmi-project/src/App.tsx
wagmi-project/src/main.tsx
wagmi-project/src/wagmi.ts
wagmi-project/src/index.css
wagmi-project/src/vite-env.d.ts
wagmi-project/vite.config.ts
wagmi-project/tsconfig.json
wagmi-project/tsconfig.node.json
wagmi-project/index.html
wagmi-project/README.md
wagmi-project/.gitignore
wagmi-project/.npmrc
wagmi-project/biome.json
Introduce additional tooling/cache artifacts.
  • Add codesandbox tasks configuration and v8 compile cache map artifacts for build tooling.
.codesandbox/tasks.json
v8-compile-cache-0/x64/11.3.244.8-node.19/zSprojectzSsequence.jszSnode_moduleszS.pnpmzS@preconstruct+cli@2.8.7zSnode_moduleszS@preconstructzSclizSbin.js.MAP
v8-compile-cache-0/x64/11.3.244.8-node.19/zSprojectzSworkspacezSnode_moduleszS.pnpmzS@preconstruct+cli@2.8.7zSnode_moduleszS@preconstructzSclizSbin.js.MAP

Possibly linked issues


Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@vercel

vercel Bot commented Jun 10, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
sequence-js-docs Canceled Canceled Jun 15, 2026 9:03am
sequence-js-web Canceled Canceled Jun 15, 2026 9:03am
sequence.js Canceled Canceled Jun 15, 2026 9:03am
wagmi-project Canceled Canceled Jun 15, 2026 9:03am

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Hey - I've found 5 issues, and left some high level feedback:

  • The new generateId implementation in DappTransport assumes a browser environment (window.crypto), which will break in non-browser contexts (e.g. Node, React Native); consider using globalThis.crypto with a feature check and a safe fallback to keep this transport reusable.
  • In the new wagmi-project App component, sanitizeEmail is typed to accept a string but is called with email which can be null, and the onChange handler uses SetStateAction<string> even though the state is string | null; tightening these types or adding null guards will avoid runtime issues and TypeScript errors.
  • The Azure DevOps pipeline is pinned to Node.js 10.x, which is long out of support and inconsistent with the rest of the tooling (e.g. Vite/TypeScript), so it would be safer to upgrade this to a maintained Node version that matches the project’s current runtime expectations.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- The new generateId implementation in DappTransport assumes a browser environment (`window.crypto`), which will break in non-browser contexts (e.g. Node, React Native); consider using `globalThis.crypto` with a feature check and a safe fallback to keep this transport reusable.
- In the new wagmi-project App component, `sanitizeEmail` is typed to accept a `string` but is called with `email` which can be `null`, and the `onChange` handler uses `SetStateAction<string>` even though the state is `string | null`; tightening these types or adding null guards will avoid runtime issues and TypeScript errors.
- The Azure DevOps pipeline is pinned to Node.js 10.x, which is long out of support and inconsistent with the rest of the tooling (e.g. Vite/TypeScript), so it would be safer to upgrade this to a maintained Node version that matches the project’s current runtime expectations.

## Individual Comments

### Comment 1
<location path="wagmi-project/src/App.tsx" line_range="975-984" />
<code_context>
+    }
+  }, [email, isOpen])
+
+  const sanitizeEmail = (email: string) => {
+    // Trim unnecessary spaces
+    email = email.trim()
+
+    // Check if the email matches the pattern of a typical email
+    const emailRegex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$/
+    if (emailRegex.test(email)) {
+      return true
+    }
+
+    return false
+  }
+
</code_context>
<issue_to_address>
**issue (bug_risk):** Fix type mismatch when calling `sanitizeEmail` with `email` that can be `null`.

Here `email` is typed as `null | string` in state, but `sanitizeEmail` only accepts `string`. When you call `sanitizeEmail(email)`, `email` may still be `null`, which will fail type-checking. Either widen `sanitizeEmail` to accept `string | null` and guard against `null` inside, or narrow `email` before the call so it’s guaranteed to be non-null.
</issue_to_address>

### Comment 2
<location path="wagmi-project/src/App.tsx" line_range="115-124" />
<code_context>
+    .sort((a, b) => a.chainId - b.chainId)
+  const networks = [...mainnets, ...testnets].filter(network => !network.deprecated && !omitNetworks.includes(network.chainId))
+
+  useEffect(() => {
+    if (email && !isOpen) {
+      console.log(email)
+      connect({
+        app: 'Demo Dapp',
+        authorize: true,
+        settings: {
+          // Specify signInWithEmail with an email address to allow user automatically sign in with the email option.
+          signInWithEmail: email,
+          theme: 'dark',
+          bannerUrl: `${window.location.origin}${skyweaverBannerUrl}`
+        }
+      })
+      setEmail(null)
+    }
+  }, [email, isOpen])
+
+  const sanitizeEmail = (email: string) => {
</code_context>
<issue_to_address>
**suggestion (bug_risk):** Stabilize `connect` or include it in the dependency list to avoid stale closures.

Because `connect` is defined inline in the component, it’s recreated on every render, but it’s not in the effect’s dependency array. This can cause stale captures of `defaultConnectOptions` or other values used by `connect`, and may also violate eslint rules. Consider wrapping `connect` in `useCallback` and adding it to the dependencies, or document the intentional behavior and add a targeted eslint disable.
</issue_to_address>

### Comment 3
<location path="SECURITY.md" line_range="19" />
<code_context>
+
+Use this section to tell people how to report a vulnerability.
+
+Tell them to email [your-security-email@example.com], and they can expect an initial response within 48 hours. We will provide regular updates on the status of the reported vulnerability.
</code_context>
<issue_to_address>
**🚨 suggestion (security):** Replace the placeholder security email with a real contact address.

`[your-security-email@example.com]` is still the template placeholder. Please update this to the real security contact so users know where to report vulnerabilities.

Suggested implementation:

```
Tell them to email [security@project-name.org](mailto:security@project-name.org), and they can expect an initial response within 48 hours. We will provide regular updates on the status of the reported vulnerability.

```

Replace `security@project-name.org` with the actual security contact address for your project (for example, `security@yourcompany.com` or `security@yourproject.org`) to ensure users can reach the correct team.
</issue_to_address>

### Comment 4
<location path=".github/ISSUE_TEMPLATE/bug_report.md" line_range="34" />
<code_context>
+**Smartphone (please complete the following information):**
+ - Device: [e.g. iPhone6]
+ - OS: [e.g. iOS8.1]
+ - Browser [e.g. stock browser, safari]
+ - Version [e.g. 22]
+
</code_context>
<issue_to_address>
**nitpick (typo):** Capitalize Safari in the smartphone browser example.

Also capitalize `Safari` here to match the product name.

Suggested implementation:

```
**Desktop (please complete the following information):**
 - OS: [e.g. iOS]
 - Browser [e.g. Chrome, Safari]
 - Version [e.g. 22]

```

```
**Smartphone (please complete the following information):**
 - Device: [e.g. iPhone6]
 - OS: [e.g. iOS8.1]
 - Browser [e.g. stock browser, Safari]

```
</issue_to_address>

### Comment 5
<location path="wagmi-project/src/App.tsx" line_range="291" />
<code_context>
+    setConsoleLoading(false)
+  }
+
+  const getChainID = async () => {
+    try {
+      resetConsole()
</code_context>
<issue_to_address>
**issue (complexity):** Consider extracting shared helpers for console handling and wallet access so each async handler focuses only on its core logic instead of repeating boilerplate.

You can reduce a lot of incidental complexity here by centralizing the repeated console + wallet patterns, without changing any behavior.

### 1. DRY up the console pattern

Almost every async handler does:

```ts
try {
  resetConsole()
  // ...
  setConsoleLoading(false)
} catch (e) {
  console.error(e)
  consoleErrorMessage()
}
```

Extracting a small helper keeps each handler focused on its core logic and removes the risk of forgetting `setConsoleLoading(false)`:

```ts
// inside App (or extracted to a hook/module)
const withConsole = async (fn: () => Promise<void>) => {
  resetConsole()
  try {
    await fn()
  } catch (e) {
    console.error(e)
    consoleErrorMessage()
  } finally {
    setConsoleLoading(false)
  }
}
```

Then handlers become:

```ts
const getBalance = () =>
  withConsole(async () => {
    const wallet = sequence.getWallet()

    const provider = wallet.getProvider()
    const account = wallet.getAddress()
    const balanceChk1 = await provider!.getBalance(account)
    appendConsoleLine(`balance check 1: ${balanceChk1.toString()}`)

    const signer = wallet.getSigner()
    const balanceChk2 = await signer.getBalance()
    appendConsoleLine(`balance check 2: ${balanceChk2.toString()}`)
  })
```

You can apply this pattern to `getChainID`, `getAccounts`, `getNetworks`, `signMessage*`, `sendETH*`, `contractExample`, etc.

### 2. Centralize wallet access

You repeatedly recompute `const wallet = sequence.getWallet()` and then `wallet.getSigner()` / `wallet.getProvider()` in many places. A small helper makes the intent clearer and keeps the wiring in one place:

```ts
// inside App or a small helper module
const getWalletContext = () => {
  const wallet = sequence.getWallet()
  const provider = wallet.getProvider()
  const signer = wallet.getSigner()
  const address = wallet.getAddress()
  const chainId = wallet.getChainId()
  return { wallet, provider, signer, address, chainId }
}
```

Usage:

```ts
const getAccounts = () =>
  withConsole(async () => {
    const { wallet, provider, address } = getWalletContext()

    appendConsoleLine(`getAddress(): ${address}`)

    const accountList = await provider.listAccounts()
    appendConsoleLine(`accounts: ${JSON.stringify(accountList)}`)
  })
```

For cases where you need a signer for a specific chain:

```ts
const getSignerForChain = (chainId?: number) => {
  const wallet = sequence.getWallet()
  return chainId ? wallet.getSigner(chainId) : wallet.getSigner()
}
```

Then:

```ts
const sendETHSidechain = () =>
  withConsole(async () => {
    const wallet = sequence.getWallet()
    const pick = wallet.getChainId() === ChainId.ARBITRUM ? ChainId.OPTIMISM : ChainId.ARBITRUM
    const signer = getSignerForChain(pick)
    await sendETH(signer)
  })
```

This keeps all the “how do I get wallet/signer/provider” logic in one place and makes individual handlers smaller and easier to scan.
</issue_to_address>

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

Comment thread wagmi-project/src/App.tsx Outdated
Comment thread wagmi-project/src/App.tsx Outdated
Comment thread SECURITY.md Outdated
Comment thread .github/ISSUE_TEMPLATE/bug_report.md
Comment thread wagmi-project/src/App.tsx Outdated
@snyk-io

snyk-io Bot commented Jun 10, 2026

Copy link
Copy Markdown

Snyk checks have passed. No issues have been found so far.

Status Scan Engine Critical High Medium Low Total (0)
Open Source Security 0 0 0 0 0 issues
Code Security 0 0 0 0 0 issues

💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Code Review

This pull request introduces a new Wagmi-based React project, configures CI/CD pipelines (CircleCI and Azure), and implements security and randomness improvements across several packages. Key feedback highlights critical runtime issues in the new React application, including a type error from misusing the Sequence provider as a wallet instance and a potential crash in sanitizeEmail due to a missing null check. Additionally, the Azure pipeline should be updated to use a modern Node.js version and pnpm to match the project's package manager, direct window.crypto access should be guarded for SSR compatibility, dependencies in package.json should be pinned instead of using latest, and local V8 compile cache files should be removed from the repository.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment thread wagmi-project/src/App.tsx Outdated
Comment thread wagmi-project/src/App.tsx Outdated
Comment thread azure-pipelines.yml
Comment thread packages/wallet/dapp-client/src/DappTransport.ts
Comment thread azure-pipelines.yml
Comment thread wagmi-project/package.json Outdated
@Dargon789 Dargon789 linked an issue Jun 11, 2026 that may be closed by this pull request
@Dargon789 Dargon789 self-assigned this Jun 11, 2026
@Dargon789 Dargon789 added bug Something isn't working documentation Improvements or additions to documentation duplicate This issue or pull request already exists enhancement New feature or request good first issue Good for newcomers dependencies Pull requests that update a dependency file labels Jun 11, 2026
@vercel vercel Bot temporarily deployed to Preview – sequence-js-web June 15, 2026 09:03 Inactive
@vercel vercel Bot temporarily deployed to Preview – wagmi-project June 15, 2026 09:03 Inactive
@vercel vercel Bot temporarily deployed to Preview – sequence-js-docs June 15, 2026 09:03 Inactive
@vercel vercel Bot temporarily deployed to Preview – sequence.js June 15, 2026 09:03 Inactive
@Dargon789 Dargon789 merged commit 07f6cc6 into master Jun 15, 2026
13 of 18 checks passed
@github-project-automation github-project-automation Bot moved this from Todo to Done in web3-Defi-Gamefi Jun 15, 2026
@Dargon789 Dargon789 deleted the v1.0 branch June 15, 2026 09:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working dependencies Pull requests that update a dependency file documentation Improvements or additions to documentation duplicate This issue or pull request already exists enhancement New feature or request good first issue Good for newcomers

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

Sequence diagram for wagmi dApp wallet connection flow

10 participants