Skip to content

feat: Add new apps -- exchanges#227

Merged
lightwalker-eth merged 21 commits into
mainfrom
y3drk/feat/add-new-apps-exchanges
Jun 15, 2026
Merged

feat: Add new apps -- exchanges#227
lightwalker-eth merged 21 commits into
mainfrom
y3drk/feat/add-new-apps-exchanges

Conversation

@Y3drk

@Y3drk Y3drk commented Jun 11, 2026

Copy link
Copy Markdown
Member

Lite PR → Add new apps - Exchanges

Summary

  • Added the first batch apps of the newly added Exchange type from the spec (from both tranches) provided by @caldonia-eth. The majority of these projects also provide wallets, so they were also added:
    • Binance (+wallet) ✅
    • Crypto.com (+wallet) ✅
    • Kraken (+ wallet) ✅
    • OKX (+ wallet) ✅
    • Gemini (only wallet, app is not available in Poland / for Polish citizens) ✅ & ❌
    • Coinbase (only exchange, we added the wallet a long time ago) ✅
    • Robinhood (+wallet) ✅
    • Bullish (cannot pass verification due to professional investor experience requirements for the European market. See the attached screenshot) ❌
    • Frame (a new wallet) ✅
    • Rabby (new benchmark after the app was updated) ✅
  • This PR also adds OG images for most of the new apps (as well as some that were missing them before)

Why

  • Decisive adding of the new apps to ENSAwards requested today during the sync call by @lightwalker-eth and previously discussed as an urgent todo

Testing

  • Ran typecheck, lint, and test commands locally to ensure that the migration didn't break anything, and later confirmed that in our CI workflow
  • Verified that the UI didn't break after introducing changes using a local and Vercel previews.

Notes for reviewer

  • Missing the custom OG images (@sskvts only prepared ones for the first tranche of apps), but it's not a blocker
  • Once this PR is merged, PR chore: Add new apps -- Tranche 2, May 2026 #214 can be closed since it contains mostly duplicate content (tranche 2 of the apps from the spec)

My problem with the testing of the exchanges

My overall problem with adding these apps under the exchange type is that I couldn't find any ENS usage in their functionalities, not even speaking about those that would allow us to benchmark them on our acceptance test... However, almost all of these projects have their own wallets, which are super easy to benchmark.

Possible solutions

  1. Add the wallets of these projects with the very obvious way of testing -- 100% legit, the app creators wouldn't be able to undermine our claims (already added to this PR)
  2. The above + look for places in the exchange part of the apps where ENS could be used but isn't, and our acceptance test could be performed (some user search, leaderboards etc), and add a benchmark with a failing result because of that. That way, we can also add these apps under the exchange type -- still seems pretty legitimate. We should be able to defend our PoV by saying that these apps could easily integrate ENS in the tested places (added to this PR)
  3. Do option 1, but add these apps with the exchange type. While not technically fully true, said apps are still part of the same project -- seems risky and feels to much like bending the truth imo. We want to appear trustworthy, and that could damage this image. Personally, I'd avoid this option

Exchanges with wallets and/or possibilities of ENS integration (Implementation of option 2)

  • Binance
    • Has a wallet, which was benchmarked
    • Has a possible ENS use case in the traders search bar in the copy-trading flow. Added a benchmark pointing out how this doesn't allow ENS names as a traders identifier but should.
    • Has a possible ENS use case in the withdrawal flow. Added a benchmark pointing out how this doesn't allow ENS names as a trader's identifier, but should.
    • Open to deleting one of these if it doesn't feel right
  • OKX
    • Has a wallet, which was benchmarked
    • Has a possible ENS use case in the withdrawal flow. Added a benchmark pointing out how this doesn't allow ENS names as a trader's identifier but should.
  • Kraken (NOTE: Still waiting on the official icons. I mailed them as they required. If they don't respond within 24h, I'll find something in a less official way)
    • Has a wallet, which was benchmarked
    • Has a possible ENS use case in the withdrawal flow. Added a benchmark pointing out how this doesn't allow ENS names as a trader's identifier but should.
  • Crypto.com
    • Has a wallet, which was benchmarked
    • Has a possible ENS use case in the withdrawal flow. Added a benchmark pointing out how this doesn't allow ENS names as a trader's identifier but should.
  • Robinhood
    • Has a wallet which was benchmarked
    • (Status for 06/12/26 07:57 UTC) -- need funds on the account to perform the test. They're scheduled to arrive on the next working day (probably Monday). Once that's ready I'll perform the test.
  • Gemini
    • Has a wallet, which was benchmarked
    • I cannot test the exchange app because it is not available in Poland right now
  • Coinbase
    • We've already added their wallet a long time ago
    • They already use ENS in their send flow. The benchmark was performed, and the app did not pass
  • Bullish
    • No wallet
    • I am not able to pass their verification criteria due to the required professional investor experience (see the attached screenshot)
image

Pre-Review Checklist (Blocking)

  • This PR does not introduce significant changes and is low-risk to review quickly.

@Y3drk Y3drk self-assigned this Jun 11, 2026
Copilot AI review requested due to automatic review settings June 11, 2026 15:03
@Y3drk Y3drk added the ensawards ENSAwards related label Jun 11, 2026
@vercel

vercel Bot commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

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

Project Deployment Actions Updated (UTC)
ensawards.org Ready Ready Preview, Comment Jun 15, 2026 2:06pm

@coderabbitai

coderabbitai Bot commented Jun 11, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: ad526778-7d79-4fd7-acc2-0f15f192eba6

📥 Commits

Reviewing files that changed from the base of the PR and between a9c0744 and a860266.

⛔ Files ignored due to path filters (2)
  • ensawards.org/data/apps/frame-wallet/og.png is excluded by !**/*.png
  • ensawards.org/data/apps/frame-wallet/twitter-og.png is excluded by !**/*.png
📒 Files selected for processing (1)
  • ensawards.org/data/apps/frame-wallet/index.ts

📝 Walkthrough

Walkthrough

Adds an Exchange app type, registers six new projects and multiple exchange/wallet app entries with icons and ENSv2 readiness benchmarks, and applies minor UI updates (relative-time refresh and empty-rank guard).

Changes

Exchange and Wallet Apps Expansion

Layer / File(s) Summary
App type and best-practice plumbing
ensawards.org/data/apps/types.ts, ensawards.org/data/apps/utils.ts, ensawards.org/data/apps/utils.test.ts, ensawards.org/data/ens-best-practices/ensv2-readiness/ensv2-ready-resolution/index.ts, ensawards.org/data/ens-best-practices/utils.ts
Adds AppTypes.Exchange, maps "exchange" in asAppType, updates formatAppType and tests, and includes Exchange in ensv2ReadyResolution.appliesTo and best-practice formatting.
Projects: IDs, icons, and registrations
ensawards.org/data/projects/types.ts, ensawards.org/data/projects/binance/*, ensawards.org/data/projects/cryptocom/*, ensawards.org/data/projects/kraken/*, ensawards.org/data/projects/okx/*, ensawards.org/data/projects/robinhood/*, ensawards.org/data/projects/gemini/*, ensawards.org/data/projects/frame/*
Adds project IDs (Binance, OKX, Kraken, CryptoCom, Robinhood, Gemini, Frame) and registers new projects with icon components and website/Twitter socials.
Exchange app definitions and benchmarks
ensawards.org/data/apps/binance-exchange/*, ensawards.org/data/apps/cryptocom-exchange/*, ensawards.org/data/apps/kraken-exchange/*, ensawards.org/data/apps/okx-exchange/*, ensawards.org/data/apps/coinbase-exchange/*, ensawards.org/data/apps/robinhood-exchange/*
Defines exchange apps (Binance, Crypto.com, Kraken, OKX, Coinbase, Robinhood) with metadata, app-type classification, icons, and ensv2-ready-resolution acceptance-test benchmark entries (Fail) including contributor timestamps and proof images.
Wallet app definitions and benchmarks
ensawards.org/data/apps/binance-wallet/*, ensawards.org/data/apps/cryptocom-wallet/*, ensawards.org/data/apps/kraken-wallet/*, ensawards.org/data/apps/okx-wallet/*, ensawards.org/data/apps/robinhood-wallet/*, ensawards.org/data/apps/gemini-wallet/*, ensawards.org/data/apps/frame-wallet/*
Defines wallet apps with metadata, icons, and benchmark registries (Pass/Fail and hidden contract-naming categories) exporting typed benchmarks objects with contributor attribution and proof images.
Existing app metadata and benchmark updates
ensawards.org/data/apps/lido-defi/index.ts, ensawards.org/data/apps/phantom-wallet/index.ts, ensawards.org/data/apps/trust-wallet/index.ts, ensawards.org/data/apps/rabby-wallet/benchmarks/index.tsx
Adds OG image paths for LidoDeFi, PhantomWallet, and TrustWallet apps; updates Rabby Wallet ENSv2 benchmark from Fail to Pass with updated timestamp and notes.
UI refinements and dependencies
ensawards.org/src/components/molecules/technicalDetails/benchmark/acceptanceTestResultDetails.tsx, ensawards.org/src/pages/index.astro, package.json
Benchmark relative-time now refreshes periodically via useNow({ timeToRefresh: secondsInMinute }); homepage ranking rendering skips app types with empty ranked app lists; adds esbuild version constraint in pnpm overrides.

🎯 3 (Moderate) | ⏱️ ~25 minutes


Possibly Related PRs

  • namehash/ensawards#225: Related changes to best-practice app-type targeting and ensv2-ready-resolution.appliesTo.
  • namehash/ensawards#153: Adds contributor/timestamp schema that matches benchmark contribution entries used here.
  • namehash/ensawards#130: Introduces required project field on App type that all new app definitions must provide.

Suggested Labels

javascript

"A rabbit hopped in with icons so bright,
New exchanges and wallets — what a sight!
Benchmarks registered, timestamps set true,
ENS apps expanding — there's always more to do! 🐇✨"

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and specifically describes the main changeset objective: adding new Exchange-type apps to the system.
Description check ✅ Passed The description is comprehensive and directly related to the changeset, detailing all added apps, implementation approach, testing performed, and known limitations.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch y3drk/feat/add-new-apps-exchanges

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

Comment @coderabbitai help to get the list of available commands and usage tips.

Comment thread ensawards.org/data/projects/kraken/index.ts Outdated

Copilot AI 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.

Pull request overview

Adds the first set of “Exchange” apps (and related wallets) to the ENSAwards dataset, wiring the new app type into formatting/utilities, homepage rendering, and ENSv2 readiness benchmarks so these new apps/projects can appear in leaderboards and technical details.

Changes:

  • Introduces AppTypes.Exchange (parsing + formatting) and applies ENSv2 readiness best practice to exchanges.
  • Adds new projects (Binance, OKX, Kraken, Crypto.com, Robinhood) plus corresponding wallet/exchange apps and benchmark entries.
  • Improves UI behavior by skipping empty “Top …” sections and making relative timestamps refresh (via useNow).

Reviewed changes

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

Show a summary per file
File Description
ensawards.org/src/pages/index.astro Hides “Top …” lists when there are no apps for a given type (incl. new Exchange type).
ensawards.org/src/components/molecules/technicalDetails/benchmark/acceptanceTestResultDetails.tsx Makes “Test completed … ago” update live using useNow + relativeTo.
ensawards.org/data/projects/types.ts Registers new project IDs.
ensawards.org/data/projects/binance/index.ts Adds Binance project metadata.
ensawards.org/data/projects/binance/icon.tsx Adds Binance project icon.
ensawards.org/data/projects/okx/index.ts Adds OKX project metadata.
ensawards.org/data/projects/okx/icon.tsx Adds OKX project icon.
ensawards.org/data/projects/kraken/index.ts Adds Kraken project metadata.
ensawards.org/data/projects/kraken/icon.tsx Adds Kraken project icon (placeholder).
ensawards.org/data/projects/cryptocom/index.ts Adds Crypto.com project metadata.
ensawards.org/data/projects/cryptocom/icon.tsx Adds Crypto.com project icon.
ensawards.org/data/projects/robinhood/index.ts Adds Robinhood project metadata.
ensawards.org/data/projects/robinhood/icon.tsx Adds Robinhood project icon.
ensawards.org/data/ens-best-practices/utils.ts Formats best-practice targets for the new Exchange type.
ensawards.org/data/ens-best-practices/ensv2-readiness/ensv2-ready-resolution/index.ts Applies ENSv2 readiness resolution best practice to exchanges.
ensawards.org/data/apps/types.ts Introduces AppTypes.Exchange.
ensawards.org/data/apps/utils.ts Parses/prints Exchange app type values.
ensawards.org/data/apps/utils.test.ts Extends app utils tests for Exchange.
ensawards.org/data/apps/binance-wallet/index.ts Adds Binance Wallet app metadata.
ensawards.org/data/apps/binance-wallet/icon.tsx Adds Binance Wallet icon.
ensawards.org/data/apps/binance-wallet/benchmarks/index.tsx Adds Binance Wallet ENSv2 readiness benchmark.
ensawards.org/data/apps/binance-exchange/index.ts Adds Binance Exchange app metadata.
ensawards.org/data/apps/binance-exchange/icon.tsx Adds Binance Exchange icon.
ensawards.org/data/apps/binance-exchange/benchmarks/index.tsx Adds Binance Exchange ENSv2 readiness benchmark.
ensawards.org/data/apps/okx-wallet/index.ts Adds OKX Wallet app metadata.
ensawards.org/data/apps/okx-wallet/icon.tsx Adds OKX Wallet icon.
ensawards.org/data/apps/okx-wallet/benchmarks/index.tsx Adds OKX Wallet ENSv2 readiness benchmark.
ensawards.org/data/apps/okx-exchange/index.ts Adds OKX Exchange app metadata.
ensawards.org/data/apps/okx-exchange/icon.tsx Adds OKX Exchange icon.
ensawards.org/data/apps/okx-exchange/benchmarks/index.tsx Adds OKX Exchange ENSv2 readiness benchmark.
ensawards.org/data/apps/kraken-wallet/index.ts Adds Kraken Wallet app metadata.
ensawards.org/data/apps/kraken-wallet/icon.tsx Adds Kraken Wallet icon (placeholder).
ensawards.org/data/apps/kraken-wallet/benchmarks/index.tsx Adds Kraken Wallet ENSv2 readiness benchmark.
ensawards.org/data/apps/kraken-exchange/index.ts Adds Kraken Exchange app metadata.
ensawards.org/data/apps/kraken-exchange/icon.tsx Adds Kraken Exchange icon (placeholder).
ensawards.org/data/apps/kraken-exchange/benchmarks/index.tsx Adds Kraken Exchange ENSv2 readiness benchmark.
ensawards.org/data/apps/cryptocom-wallet/index.ts Adds Crypto.com Wallet app metadata.
ensawards.org/data/apps/cryptocom-wallet/icon.tsx Adds Crypto.com Wallet icon.
ensawards.org/data/apps/cryptocom-wallet/benchmarks/index.tsx Adds Crypto.com Wallet ENSv2 readiness benchmark.
ensawards.org/data/apps/cryptocom-exchange/index.ts Adds Crypto.com Exchange app metadata.
ensawards.org/data/apps/cryptocom-exchange/icon.tsx Adds Crypto.com Exchange icon.
ensawards.org/data/apps/cryptocom-exchange/benchmarks/index.tsx Adds Crypto.com Exchange ENSv2 readiness benchmark.
ensawards.org/data/apps/robinhood-wallet/index.ts Adds Robinhood Wallet app metadata.
ensawards.org/data/apps/robinhood-wallet/benchmarks/index.tsx Adds Robinhood Wallet ENSv2 readiness benchmark.

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

Comment thread ensawards.org/data/projects/kraken/index.ts
Comment thread ensawards.org/data/projects/robinhood/icon.tsx
Comment thread ensawards.org/data/apps/cryptocom-wallet/icon.tsx
Comment thread ensawards.org/data/apps/cryptocom-exchange/icon.tsx
Comment thread ensawards.org/data/apps/binance-exchange/benchmarks/index.tsx Outdated
Comment thread ensawards.org/data/apps/binance-exchange/benchmarks/index.tsx Outdated

@coderabbitai coderabbitai 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.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (3)
ensawards.org/data/apps/kraken-wallet/icon.tsx (1)

1-18: 🧹 Nitpick | 🔵 Trivial | ⚡ Quick win

Placeholder icon noted; actual Kraken icon pending.

This icon renders a plain gray rectangle. Per the PR objectives, Kraken official icons are pending outreach. Ensure the actual branded icon is added before the PR leaves draft status.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@ensawards.org/data/apps/kraken-wallet/icon.tsx` around lines 1 - 18, The
current Icon component (Icon) renders only a placeholder gray rect; replace this
placeholder SVG with the official Kraken-branded SVG asset before moving the PR
out of draft: update the Icon component to import or inline the official Kraken
SVG paths (preserving props spread and className usage via cn("p-1", className))
and remove the <rect> placeholder so the component returns the proper Kraken
mark at the same viewBox and attributes used today; ensure the exported default
remains Icon so consumers are unchanged.
ensawards.org/data/projects/kraken/icon.tsx (1)

1-18: 🧹 Nitpick | 🔵 Trivial | ⚡ Quick win

Placeholder icon noted; actual Kraken icon pending.

This icon renders a plain gray rectangle. Per the PR objectives, Kraken official icons are pending outreach. Ensure the actual branded icon is added before the PR leaves draft status.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@ensawards.org/data/projects/kraken/icon.tsx` around lines 1 - 18, Replace the
placeholder gray rectangle in the Icon component with the official Kraken brand
SVG before removing draft status: update the Icon React component (function name
"Icon") so the <svg> markup contains the official Kraken path(s)/shapes and
brand colors instead of the <rect> fill="`#E5E7EB`"; keep existing props spread
and className usage via cn("p-1", className) so styling and accessibility props
pass through; if the official SVG is not yet available, leave a clear TODO
comment referencing this Icon component and the pending asset to avoid merging
incomplete branding.
ensawards.org/data/apps/kraken-exchange/icon.tsx (1)

1-18: 🧹 Nitpick | 🔵 Trivial | ⚡ Quick win

Placeholder icon noted; actual Kraken icon pending.

This icon renders a plain gray rectangle. Per the PR objectives, Kraken official icons are pending outreach. Ensure the actual branded icon is added before the PR leaves draft status.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@ensawards.org/data/apps/kraken-exchange/icon.tsx` around lines 1 - 18, The
component Icon currently renders a placeholder gray rectangle; replace the
<rect> placeholder inside the Icon component with the official Kraken SVG markup
(paths/groups) once the branded asset is available, preserving the outer Icon
function, its props signature (Icon: ({ className, ...props }:
React.SVGProps<SVGSVGElement>)), the className composition via cn("p-1",
className) and the {...props} spread so consumers keep control over attributes;
ensure the replacement uses the official brand fill/paths and includes
accessible attributes (title or aria-label/role) as appropriate before removing
the draft status.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@ensawards.org/data/apps/robinhood-wallet/icon.tsx`:
- Around line 5-6: The large inlined base64 constant robinhoodWalletIconDataUri
should be replaced by a static image asset: create a file (e.g.,
robinhood-wallet.png or .webp) with the decoded image, remove the
robinhoodWalletIconDataUri string, import the asset (e.g., import
robinhoodWalletImg from './robinhood-wallet.png'), and update any usage to
reference the imported asset's URL (.src or default import depending on your
bundler) so the bundle no longer contains the giant base64 string.

---

Outside diff comments:
In `@ensawards.org/data/apps/kraken-exchange/icon.tsx`:
- Around line 1-18: The component Icon currently renders a placeholder gray
rectangle; replace the <rect> placeholder inside the Icon component with the
official Kraken SVG markup (paths/groups) once the branded asset is available,
preserving the outer Icon function, its props signature (Icon: ({ className,
...props }: React.SVGProps<SVGSVGElement>)), the className composition via
cn("p-1", className) and the {...props} spread so consumers keep control over
attributes; ensure the replacement uses the official brand fill/paths and
includes accessible attributes (title or aria-label/role) as appropriate before
removing the draft status.

In `@ensawards.org/data/apps/kraken-wallet/icon.tsx`:
- Around line 1-18: The current Icon component (Icon) renders only a placeholder
gray rect; replace this placeholder SVG with the official Kraken-branded SVG
asset before moving the PR out of draft: update the Icon component to import or
inline the official Kraken SVG paths (preserving props spread and className
usage via cn("p-1", className)) and remove the <rect> placeholder so the
component returns the proper Kraken mark at the same viewBox and attributes used
today; ensure the exported default remains Icon so consumers are unchanged.

In `@ensawards.org/data/projects/kraken/icon.tsx`:
- Around line 1-18: Replace the placeholder gray rectangle in the Icon component
with the official Kraken brand SVG before removing draft status: update the Icon
React component (function name "Icon") so the <svg> markup contains the official
Kraken path(s)/shapes and brand colors instead of the <rect> fill="`#E5E7EB`";
keep existing props spread and className usage via cn("p-1", className) so
styling and accessibility props pass through; if the official SVG is not yet
available, leave a clear TODO comment referencing this Icon component and the
pending asset to avoid merging incomplete branding.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 05368830-ba73-4ee2-bbb2-e91a9ef84f60

📥 Commits

Reviewing files that changed from the base of the PR and between b0e2e25 and 7c8349c.

⛔ Files ignored due to path filters (10)
  • ensawards.org/data/apps/binance-exchange/benchmarks/correctly-resolve-ensv2-test-name-address-proof-copy-trading.gif is excluded by !**/*.gif
  • ensawards.org/data/apps/binance-exchange/benchmarks/correctly-resolve-ensv2-test-name-address-proof-withdrawal.png is excluded by !**/*.png
  • ensawards.org/data/apps/binance-wallet/benchmarks/correctly-resolve-ensv2-test-name-address-proof.gif is excluded by !**/*.gif
  • ensawards.org/data/apps/cryptocom-exchange/benchmarks/correctly-resolve-ensv2-test-name-address-proof.gif is excluded by !**/*.gif
  • ensawards.org/data/apps/cryptocom-wallet/benchmarks/correctly-resolve-ensv2-test-name-address-proof.png is excluded by !**/*.png
  • ensawards.org/data/apps/kraken-exchange/benchmarks/correctly-resolve-ensv2-test-name-address-proof.gif is excluded by !**/*.gif
  • ensawards.org/data/apps/kraken-wallet/benchmarks/correctly-resolve-ensv2-test-name-address-proof.png is excluded by !**/*.png
  • ensawards.org/data/apps/okx-exchange/benchmarks/correctly-resolve-ensv2-test-name-address-proof.png is excluded by !**/*.png
  • ensawards.org/data/apps/okx-wallet/benchmarks/correctly-resolve-ensv2-test-name-address-proof.png is excluded by !**/*.png
  • ensawards.org/data/apps/robinhood-wallet/benchmarks/correctly-resolve-ensv2-test-name-address-proof.gif is excluded by !**/*.gif
📒 Files selected for processing (45)
  • ensawards.org/data/apps/binance-exchange/benchmarks/index.tsx
  • ensawards.org/data/apps/binance-exchange/icon.tsx
  • ensawards.org/data/apps/binance-exchange/index.ts
  • ensawards.org/data/apps/binance-wallet/benchmarks/index.tsx
  • ensawards.org/data/apps/binance-wallet/icon.tsx
  • ensawards.org/data/apps/binance-wallet/index.ts
  • ensawards.org/data/apps/cryptocom-exchange/benchmarks/index.tsx
  • ensawards.org/data/apps/cryptocom-exchange/icon.tsx
  • ensawards.org/data/apps/cryptocom-exchange/index.ts
  • ensawards.org/data/apps/cryptocom-wallet/benchmarks/index.tsx
  • ensawards.org/data/apps/cryptocom-wallet/icon.tsx
  • ensawards.org/data/apps/cryptocom-wallet/index.ts
  • ensawards.org/data/apps/kraken-exchange/benchmarks/index.tsx
  • ensawards.org/data/apps/kraken-exchange/icon.tsx
  • ensawards.org/data/apps/kraken-exchange/index.ts
  • ensawards.org/data/apps/kraken-wallet/benchmarks/index.tsx
  • ensawards.org/data/apps/kraken-wallet/icon.tsx
  • ensawards.org/data/apps/kraken-wallet/index.ts
  • ensawards.org/data/apps/okx-exchange/benchmarks/index.tsx
  • ensawards.org/data/apps/okx-exchange/icon.tsx
  • ensawards.org/data/apps/okx-exchange/index.ts
  • ensawards.org/data/apps/okx-wallet/benchmarks/index.tsx
  • ensawards.org/data/apps/okx-wallet/icon.tsx
  • ensawards.org/data/apps/okx-wallet/index.ts
  • ensawards.org/data/apps/robinhood-wallet/benchmarks/index.tsx
  • ensawards.org/data/apps/robinhood-wallet/icon.tsx
  • ensawards.org/data/apps/robinhood-wallet/index.ts
  • ensawards.org/data/apps/types.ts
  • ensawards.org/data/apps/utils.test.ts
  • ensawards.org/data/apps/utils.ts
  • ensawards.org/data/ens-best-practices/ensv2-readiness/ensv2-ready-resolution/index.ts
  • ensawards.org/data/ens-best-practices/utils.ts
  • ensawards.org/data/projects/binance/icon.tsx
  • ensawards.org/data/projects/binance/index.ts
  • ensawards.org/data/projects/cryptocom/icon.tsx
  • ensawards.org/data/projects/cryptocom/index.ts
  • ensawards.org/data/projects/kraken/icon.tsx
  • ensawards.org/data/projects/kraken/index.ts
  • ensawards.org/data/projects/okx/icon.tsx
  • ensawards.org/data/projects/okx/index.ts
  • ensawards.org/data/projects/robinhood/icon.tsx
  • ensawards.org/data/projects/robinhood/index.ts
  • ensawards.org/data/projects/types.ts
  • ensawards.org/src/components/molecules/technicalDetails/benchmark/acceptanceTestResultDetails.tsx
  • ensawards.org/src/pages/index.astro

Comment thread ensawards.org/data/apps/robinhood-wallet/icon.tsx
Comment thread ensawards.org/data/apps/kraken-wallet/icon.tsx Fixed

@coderabbitai coderabbitai 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.

Actionable comments posted: 4

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@ensawards.org/data/apps/coinbase-exchange/icon.tsx`:
- Around line 3-16: The Icon component uses an inline style for padding and
spreads props directly; change it to follow the Kraken pattern by destructuring
className from props in the Icon function signature, merge a Tailwind padding
class (p-0.5) using the existing cn() utility (e.g., cn("p-0.5", className)),
remove style={{ padding: "2px" }}, and pass the merged className into the SVG
while still spreading the remaining props so the component uses Tailwind classes
consistently.

In `@ensawards.org/data/projects/gemini/icon.tsx`:
- Around line 8-12: The root SVG element in the icon component includes
unnecessary attributes (xmlnsXlink, x, y, xmlSpace); remove those attributes
from the <svg> tag in this file (icon.tsx) to shrink markup—keep the other
attributes like viewBox intact and verify there is no xlink:href usage elsewhere
in the component before removing xmlnsXlink.

In `@ensawards.org/data/projects/kraken/icon.tsx`:
- Around line 11-12: The SVG in icon.tsx currently uses a hardcoded fill
attribute (fill="`#5741d9`"); remove that attribute and instead add the equivalent
Tailwind fill class to the className string (e.g., include fill-[`#5741d9`] or
another project-approved fill-* utility) so the SVG styling matches
Robinhood/Gemini icons; update the cn("p-1 bg-white rounded-md", className) call
to include the new fill-* class.
- Line 8: Remove the unused xmlnsXlink="http://www.w3.org/1999/xlink" attribute
from the SVG element in icon.tsx (search for the SVG JSX opening tag that
contains xmlnsXlink) — delete that attribute and ensure there are no xlink:href
usages elsewhere in the file before committing.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: bc2af214-b5fd-4584-8e11-d45f14cc1561

📥 Commits

Reviewing files that changed from the base of the PR and between 7c8349c and de7239e.

⛔ Files ignored due to path filters (2)
  • ensawards.org/data/apps/coinbase-exchange/benchmarks/correctly-resolve-ensv2-test-name-address-proof.png is excluded by !**/*.png
  • ensawards.org/data/apps/gemini-wallet/benchmarks/correctly-resolve-ensv2-test-name-address-proof.png is excluded by !**/*.png
📒 Files selected for processing (15)
  • ensawards.org/data/apps/binance-exchange/benchmarks/index.tsx
  • ensawards.org/data/apps/coinbase-exchange/benchmarks/index.tsx
  • ensawards.org/data/apps/coinbase-exchange/icon.tsx
  • ensawards.org/data/apps/coinbase-exchange/index.ts
  • ensawards.org/data/apps/gemini-wallet/benchmarks/index.tsx
  • ensawards.org/data/apps/gemini-wallet/icon.tsx
  • ensawards.org/data/apps/gemini-wallet/index.ts
  • ensawards.org/data/apps/kraken-exchange/icon.tsx
  • ensawards.org/data/apps/kraken-wallet/icon.tsx
  • ensawards.org/data/projects/gemini/icon.tsx
  • ensawards.org/data/projects/gemini/index.ts
  • ensawards.org/data/projects/kraken/icon.tsx
  • ensawards.org/data/projects/kraken/index.ts
  • ensawards.org/data/projects/robinhood/icon.tsx
  • ensawards.org/data/projects/types.ts

Comment thread ensawards.org/data/apps/coinbase-exchange/icon.tsx Outdated
Comment thread ensawards.org/data/projects/gemini/icon.tsx Outdated
Comment thread ensawards.org/data/projects/kraken/icon.tsx Outdated
Comment thread ensawards.org/data/projects/kraken/icon.tsx
Copilot AI review requested due to automatic review settings June 15, 2026 08:00

Copilot AI 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.

Pull request overview

Copilot reviewed 65 out of 103 changed files in this pull request and generated 4 comments.

Comment thread ensawards.org/data/apps/robinhood-exchange/benchmarks/index.tsx Outdated
Comment thread ensawards.org/data/apps/binance-wallet/icon.tsx
Comment thread ensawards.org/data/apps/robinhood-wallet/index.ts
Copilot AI review requested due to automatic review settings June 15, 2026 08:23
@Y3drk
Y3drk marked this pull request as ready for review June 15, 2026 08:23
@Y3drk
Y3drk requested a review from a team as a code owner June 15, 2026 08:23
@Y3drk

Y3drk commented Jun 15, 2026

Copy link
Copy Markdown
Member Author

@greptileai

Copilot AI 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.

Pull request overview

Copilot reviewed 66 out of 105 changed files in this pull request and generated no new comments.

Files not reviewed (1)
  • pnpm-lock.yaml: Generated file

@greptile-apps

greptile-apps Bot commented Jun 15, 2026

Copy link
Copy Markdown

Greptile Summary

This PR introduces a new Exchange app type and registers the first batch of exchange and wallet apps (Binance, Crypto.com, Kraken, OKX, Gemini, Coinbase, Robinhood, Frame) with their ENSv2 benchmarks. It also upgrades the RelativeTime component to use useNow for live refresh and adds a null guard on the homepage for app-type sections with no entries.

  • New Exchange AppType wired end-to-end: types.ts, utils.ts switch exhaustiveness, formatBestPracticeTarget, ensv2-ready-resolution appliesTo, and tests.
  • 13 new app definitions with benchmark files; Rabby wallet result updated from Fail → Pass; missing OG images backfilled for Phantom, Trust Wallet, and Lido.
  • AcceptanceTestResultFooter now drives RelativeTime with a useNow({ timeToRefresh: secondsInMinute }) clock, matching the pattern used elsewhere in the codebase.

Confidence Score: 5/5

Safe to merge — all changes are additive data registrations and small defensive UI improvements with no breaking modifications to existing logic.

The new Exchange type is wired consistently end-to-end (type constant, both switch functions, best-practice applicability, and tests). Every new app and benchmark file follows the established pattern exactly. The useNow addition to AcceptanceTestResultFooter matches identical usage already present in multiple other components. The homepage null guard is purely defensive and has no risk.

No files require special attention.

Important Files Changed

Filename Overview
ensawards.org/data/apps/types.ts Adds Exchange: "exchange" to the AppTypes const — minimal, clean addition.
ensawards.org/data/apps/utils.ts Adds exchange case to asAppType and formatAppType; exhaustiveness check via never on default branch remains intact.
ensawards.org/data/apps/utils.test.ts Test coverage updated for Exchange: new asAppType assertion and appliesToAllApps updated to include all four AppTypes.
ensawards.org/src/components/molecules/technicalDetails/benchmark/acceptanceTestResultDetails.tsx Adds useNow({ timeToRefresh: secondsInMinute }) to drive RelativeTime with a live clock, consistent with LastUpdateTime and other components in the codebase.
ensawards.org/src/pages/index.astro Adds a rankedApps.length === 0 guard so new AppTypes that have no registered apps yet don't render empty leaderboard sections on the homepage.
ensawards.org/data/ens-best-practices/ensv2-readiness/ensv2-ready-resolution/index.ts Adds AppTypes.Exchange to the appliesTo array so exchange apps are scored against the ENSv2 resolution best practice.
ensawards.org/data/projects/types.ts Seven new project IDs added (Binance, OKX, Kraken, CryptoCom, Robinhood, Gemini, Frame).
ensawards.org/data/apps/binance-exchange/benchmarks/index.tsx Exchange benchmark with two proof images (copy-trading + withdrawal flows), both Fail; follows the established pattern.
ensawards.org/data/apps/rabby-wallet/benchmarks/index.tsx Result updated Fail → Pass with new timestamp and updated proof text; no structural changes.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    AT[AppTypes const] -->|+ Exchange| UT[utils.ts\nasAppType / formatAppType]
    AT -->|+ Exchange| BPU[ens-best-practices/utils.ts\nformatBestPracticeTarget]
    AT -->|+ Exchange| EVR[ensv2-ready-resolution\nappliesTo]

    PT[projects/types.ts\n+ 7 project IDs] --> PA[Project definitions\nbinance, okx, kraken,\ncryptoCom, robinhood,\ngemini, frame]

    PA --> EA[Exchange apps\nbinance-exchange\nokx-exchange\nkraken-exchange\ncryptoCom-exchange\nrobinhood-exchange\ncoinbase-exchange]
    PA --> WA[Wallet apps\nbinance-wallet\nokx-wallet\nkraken-wallet\ncryptoCom-wallet\nrobinhood-wallet\ngemini-wallet\nframe-wallet]

    EA --> EB[Exchange benchmarks\nENSv2 resolution - Fail]
    WA --> WB[Wallet benchmarks\nENSv2 resolution - Pass/Fail]

    AT -->|iterate all types| IDX[index.astro\nnull-guard for empty types]

    ATRD[acceptanceTestResultDetails.tsx\nuseNow - RelativeTime refresh] --> EB
    ATRD --> WB
Loading

Reviews (2): Last reviewed commit: "Apply AI agents' suggestions, pt.3" | Re-trigger Greptile

Comment thread ensawards.org/data/apps/kraken-wallet/benchmarks/index.tsx
@Y3drk

Y3drk commented Jun 15, 2026

Copy link
Copy Markdown
Member Author

@greptileai

Copilot AI 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.

Pull request overview

Copilot reviewed 66 out of 113 changed files in this pull request and generated 1 comment.

Files not reviewed (1)
  • pnpm-lock.yaml: Generated file

Comment thread ensawards.org/data/projects/gemini/index.ts

@lightwalker-eth lightwalker-eth left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

@Y3drk Great work 🚀 So happy to see the context expanding quickly under the new content model 👍

@lightwalker-eth
lightwalker-eth merged commit e5e5c14 into main Jun 15, 2026
11 checks passed
@lightwalker-eth
lightwalker-eth deleted the y3drk/feat/add-new-apps-exchanges branch June 15, 2026 19:42
@coderabbitai coderabbitai Bot mentioned this pull request Jun 24, 2026
6 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ensawards ENSAwards related

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants