Skip to content
This repository was archived by the owner on Aug 5, 2026. It is now read-only.

chore: Apply minor UI/UX updates to ensv2-ready-resolution best practice - #231

Merged
lightwalker-eth merged 5 commits into
mainfrom
y3drk/chore/apply-061626-feedback
Jun 18, 2026
Merged

chore: Apply minor UI/UX updates to ensv2-ready-resolution best practice#231
lightwalker-eth merged 5 commits into
mainfrom
y3drk/chore/apply-061626-feedback

Conversation

@Y3drk

@Y3drk Y3drk commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

Lite PR → Apply minor UI/UX updates to ensv2-ready-resolution best practice

Summary

  • Applied feedback items 1-5 from the related Google Doc

Why


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.

Pre-Review Checklist (Blocking)

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

@Y3drk Y3drk self-assigned this Jun 18, 2026
Copilot AI review requested due to automatic review settings June 18, 2026 11:11
@Y3drk
Y3drk requested a review from a team as a code owner June 18, 2026 11:11
@Y3drk Y3drk added the ensawards ENSAwards related label Jun 18, 2026
@vercel

vercel Bot commented Jun 18, 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 18, 2026 11:11am

@coderabbitai

coderabbitai Bot commented Jun 18, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

The PR extracts inline app and protocol leaderboard rendering from index.astro into two new Astro snippet components (AppLeaderboardSnippet, ProtocolLeaderboardSnippet), introduces TOP_DISPLAY_APP_TYPES/BOTTOM_DISPLAY_APP_TYPES constants to control grouping, and adds exampleNotApplicable rendering to the ENSv2 acceptance test UI alongside updated benchmark data and a WalletChan result flip from Fail to Pass.

Changes

Leaderboard Snippet Componentization

Layer / File(s) Summary
AppType grouping constants
ensawards.org/data/apps/index.ts
Adds TOP_DISPLAY_APP_TYPES and BOTTOM_DISPLAY_APP_TYPES exports with new AppType/AppTypes imports to define ordered main-page leaderboard groups.
AppLeaderboardSnippet component
ensawards.org/src/components/organisms/AppLeaderboardSnippet.astro
New Astro component: filters APPS by appType, scores via calcAppScore, sorts with sortApps, slices to top 3, and renders LeaderboardCard entries with place icons and a full-leaderboard link.
ProtocolLeaderboardSnippet component
ensawards.org/src/components/organisms/ProtocolLeaderboardSnippet.astro
New Astro component: computes naming scores per protocolType, slices top 3, resolves protocols by id, and renders LeaderboardCard entries with place/protocol icons and a full-leaderboard link.
index.astro leaderboard refactor
ensawards.org/src/pages/index.astro
Removes ~128 lines of inline ranking/sorting/card/link logic; replaces with three mapping-driven sections using AppLeaderboardSnippet (top/bottom groups) and ProtocolLeaderboardSnippet.

ENSv2 Benchmark Content and NotApplicable Rendering

Layer / File(s) Summary
ExampleNotApplicable rendering
ensawards.org/src/components/molecules/technicalDetails/bestPractice/index.tsx
Adds a conditional render branch for acceptanceTest.exampleNotApplicable displaying a NotApplicable badge and notes card alongside existing pass/fail cards.
ENSv2 technicalDetails acceptance test updates
ensawards.org/data/ens-best-practices/ensv2-readiness/ensv2-ready-resolution/technicalDetails.tsx
Imports AcceptanceTestBenchmarkNotApplicable and a new not-applicable GIF; updates examplePass wallet reference to Rabby with refreshed timestamps/alt text; expands exampleFail messaging; adds exampleNotApplicable case with notes and image.
WalletChan benchmark result flip
ensawards.org/data/apps/walletchan-wallet/benchmarks/index.tsx
Switches correctly-resolve-ensv2-test-name-address from BenchmarkResults.Fail to BenchmarkResults.Pass, updates note text, proof image alt text, and lastUpdated timestamp.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

  • namehash/ensawards#115: Overlaps at index.astro leaderboard sections and AppType-driven rendering refactors, which this PR further extends.
  • namehash/ensawards#223: Both modify the ensv2-ready-resolution WalletChan benchmark content including the correctly-resolve-ensv2-test-name-address notes and proof metadata.
  • namehash/ensawards#225: Introduces AppTypes.DeFi/"defi-app" which feeds directly into the TOP_DISPLAY_APP_TYPES/BOTTOM_DISPLAY_APP_TYPES groupings and AppLeaderboardSnippet filtering added here.

Poem

🐇 Hop hop, the leaderboard grows,
No more inline — each snippet knows!
Top types, bottom types, all in a row,
NotApplicable badges steal the show.
WalletChan passes, the rabbit cheers,
Cleaner code echoes through the years! ✨

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Title check ⚠️ Warning The title describes minor UI/UX updates to ensv2-ready-resolution, but the changeset includes significant architectural refactoring of the homepage leaderboard rendering system with new components and reorganized app type groupings. Update the title to reflect the broader scope of changes, such as 'refactor: Restructure homepage leaderboards with dedicated snippet components and app type groupings' or similar.
Description check ❓ Inconclusive The description references feedback items from a Google Doc and mentions testing, but does not accurately reflect the significant architectural changes to the leaderboard rendering system that comprise most of the changeset. Expand the description to explain the architectural changes including the new AppLeaderboardSnippet and ProtocolLeaderboardSnippet components and the refactoring of the homepage leaderboard logic.
✅ Passed checks (3 passed)
Check name Status Explanation
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/chore/apply-061626-feedback

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.

@greptile-apps

greptile-apps Bot commented Jun 18, 2026

Copy link
Copy Markdown

Greptile Summary

This PR applies UI/UX updates to the ensv2-ready-resolution best practice and refactors the landing page leaderboard display logic into dedicated components.

  • Updates the ensv2-ready-resolution acceptance test: WalletChan's benchmark is promoted from Fail → Pass, example apps are swapped (MetaMask → Rabby Wallet for pass, Rainbow → Zerion for fail), and a new exampleNotApplicable case is introduced for apps with no ENS resolution support at all.
  • Extracts the leaderboard rendering logic from index.astro into new AppLeaderboardSnippet.astro and ProtocolLeaderboardSnippet.astro organism components, and explicitly controls landing-page display order via TOP_DISPLAY_APP_TYPES / BOTTOM_DISPLAY_APP_TYPES constants.

Confidence Score: 5/5

Safe to merge — content data updates and a clean component extraction with no logic regressions.

All four AppTypes remain covered across the two new display arrays, the extracted Astro components faithfully reproduce the original index.astro logic, and the new exampleNotApplicable path follows the existing pattern correctly. The benchmark and example-app updates are purely content changes.

No files require special attention. The only nuance is in technicalDetails.tsx where the Fail description no longer mentions apps that fail to resolve entirely — but this is intentional, covered by the new Not Applicable classification.

Important Files Changed

Filename Overview
ensawards.org/data/apps/index.ts Adds TOP_DISPLAY_APP_TYPES and BOTTOM_DISPLAY_APP_TYPES constants; all four AppTypes are covered across the two arrays, so nothing is silently hidden from the landing page.
ensawards.org/data/ens-best-practices/ensv2-readiness/ensv2-ready-resolution/technicalDetails.tsx Swaps example pass/fail apps to Rabby Wallet and Zerion, replaces pass image with a GIF, and adds a new exampleNotApplicable block with correct type annotation. The Fail description no longer mentions "fails to resolve at all", leaving edge-case classification slightly ambiguous for apps that support ENSv1 but error on ENSv2.
ensawards.org/src/components/organisms/AppLeaderboardSnippet.astro New component extracted from index.astro; uses the same glob/placeIcons pattern as the original, guards on rankedApps.length > 0, and slices to max 3 entries so placeIcons[idx] is never out-of-bounds.
ensawards.org/src/components/organisms/ProtocolLeaderboardSnippet.astro New component extracted from index.astro; preserves the original logic for rendering ranked protocol entries, guards on non-empty entries, and slices to max 3.
ensawards.org/src/pages/index.astro Landing page simplified by delegating to the new snippet components; app types are now split around the protocol leaderboards using the explicit ordering constants.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[index.astro] --> B[TOP_DISPLAY_APP_TYPES\nWallet · DeFi]
    A --> C[ProtocolTypes\nall protocol types]
    A --> D[BOTTOM_DISPLAY_APP_TYPES\nExchange · Explorer]

    B --> E[AppLeaderboardSnippet.astro]
    C --> F[ProtocolLeaderboardSnippet.astro]
    D --> E

    E --> G[Filter APPS by appType\nSort · Slice top 3\nRender LeaderboardCard ×3\n+ View full leaderboard link]
    F --> H[getContractNamingScoresByProtocolType\nSlice top 3\nRender LeaderboardCard ×3\n+ View full leaderboard link]

    subgraph technicalDetails [ensv2-ready-resolution technicalDetails]
        I[examplePass\nRabby Wallet GIF]
        J[exampleFail\nZerion PNG]
        K[exampleNotApplicable NEW\nBinance Wallet GIF]
    end

    subgraph BestPracticeTechnicalDetails [BestPracticeTechnicalDetails component]
        L[Render examplePass]
        M[Render exampleFail]
        N[Render exampleNotApplicable\nif defined NEW]
    end
Loading
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
flowchart TD
    A[index.astro] --> B[TOP_DISPLAY_APP_TYPES\nWallet · DeFi]
    A --> C[ProtocolTypes\nall protocol types]
    A --> D[BOTTOM_DISPLAY_APP_TYPES\nExchange · Explorer]

    B --> E[AppLeaderboardSnippet.astro]
    C --> F[ProtocolLeaderboardSnippet.astro]
    D --> E

    E --> G[Filter APPS by appType\nSort · Slice top 3\nRender LeaderboardCard ×3\n+ View full leaderboard link]
    F --> H[getContractNamingScoresByProtocolType\nSlice top 3\nRender LeaderboardCard ×3\n+ View full leaderboard link]

    subgraph technicalDetails [ensv2-ready-resolution technicalDetails]
        I[examplePass\nRabby Wallet GIF]
        J[exampleFail\nZerion PNG]
        K[exampleNotApplicable NEW\nBinance Wallet GIF]
    end

    subgraph BestPracticeTechnicalDetails [BestPracticeTechnicalDetails component]
        L[Render examplePass]
        M[Render exampleFail]
        N[Render exampleNotApplicable\nif defined NEW]
    end
Loading

Reviews (1): Last reviewed commit: "Apply feedback item 4 from the 06/16/26 ..." | Re-trigger Greptile

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

This PR applies small UI/UX improvements related to the ensv2-ready-resolution best practice technical details, and refactors the landing page leaderboard sections into reusable snippets with an explicit app-type ordering.

Changes:

  • Refactors the landing page leaderboards into AppLeaderboardSnippet / ProtocolLeaderboardSnippet components and introduces top/bottom app-type display group ordering.
  • Adds support for displaying “Not Applicable” acceptance test examples in best-practice technical details and populates a Not Applicable example for ensv2-ready-resolution.
  • Updates WalletChan’s ensv2-ready-resolution benchmark result to Pass with updated notes/metadata.

Reviewed changes

Copilot reviewed 7 out of 12 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
ensawards.org/src/pages/index.astro Switches landing page rendering to use new leaderboard snippet components and app-type display groups.
ensawards.org/src/components/organisms/ProtocolLeaderboardSnippet.astro New reusable protocol leaderboard snippet extracted from the landing page logic.
ensawards.org/src/components/organisms/AppLeaderboardSnippet.astro New reusable app leaderboard snippet extracted from the landing page logic.
ensawards.org/src/components/molecules/technicalDetails/bestPractice/index.tsx Adds UI rendering for exampleNotApplicable acceptance test examples.
ensawards.org/data/ens-best-practices/ensv2-readiness/ensv2-ready-resolution/technicalDetails.tsx Adds a Not Applicable example and updates example assets/content for the best practice.
ensawards.org/data/apps/walletchan-wallet/benchmarks/index.tsx Updates WalletChan’s benchmark result/notes for ensv2-ready-resolution.
ensawards.org/data/apps/index.ts Adds explicit landing-page app-type display group constants.

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

@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: 2

🤖 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/src/components/organisms/ProtocolLeaderboardSnippet.astro`:
- Line 78: The `formatProtocolType(protocolType)` call on the "View full" link
text in ProtocolLeaderboardSnippet should be made consistent with the same call
in AppLeaderboardSnippet by explicitly passing the options parameter. Update the
call to `formatProtocolType(protocolType, { plural: false, lowercase: true })`
to match the explicit options used in AppLeaderboardSnippet for the same "View
full" link text pattern.
- Line 56: The formatProtocolType function call in the viewDetailsText prop is
missing the options argument that controls text casing. Add the second argument
`{ lowercase: false }` to the formatProtocolType call so that it reads
`formatProtocolType(protocolType, { lowercase: false })`. This will ensure the
button text renders in titlecase (e.g., "DeFi protocol report") instead of
defaulting to lowercase casing.
🪄 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: a298954b-f1e8-4b09-a542-28af5db8875b

📥 Commits

Reviewing files that changed from the base of the PR and between 380086f and c1260d8.

⛔ Files ignored due to path filters (5)
  • ensawards.org/data/apps/walletchan-wallet/benchmarks/correctly-resolve-ensv2-test-name-address-proof.png is excluded by !**/*.png
  • ensawards.org/data/ens-best-practices/ensv2-readiness/ensv2-ready-resolution/images/correctly-resolve-ensv2-test-name-address-fail-example.png is excluded by !**/*.png
  • ensawards.org/data/ens-best-practices/ensv2-readiness/ensv2-ready-resolution/images/correctly-resolve-ensv2-test-name-address-not-applicable-example.gif is excluded by !**/*.gif
  • ensawards.org/data/ens-best-practices/ensv2-readiness/ensv2-ready-resolution/images/correctly-resolve-ensv2-test-name-address-pass-example.gif is excluded by !**/*.gif
  • ensawards.org/data/ens-best-practices/ensv2-readiness/ensv2-ready-resolution/images/correctly-resolve-ensv2-test-name-address-pass-example.png is excluded by !**/*.png
📒 Files selected for processing (7)
  • ensawards.org/data/apps/index.ts
  • ensawards.org/data/apps/walletchan-wallet/benchmarks/index.tsx
  • ensawards.org/data/ens-best-practices/ensv2-readiness/ensv2-ready-resolution/technicalDetails.tsx
  • ensawards.org/src/components/molecules/technicalDetails/bestPractice/index.tsx
  • ensawards.org/src/components/organisms/AppLeaderboardSnippet.astro
  • ensawards.org/src/components/organisms/ProtocolLeaderboardSnippet.astro
  • ensawards.org/src/pages/index.astro

@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 Nice work, looks good, thanks 👍

@lightwalker-eth
lightwalker-eth merged commit b3cb525 into main Jun 18, 2026
11 of 12 checks passed
@lightwalker-eth
lightwalker-eth deleted the y3drk/chore/apply-061626-feedback branch June 18, 2026 12:10
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

ensawards ENSAwards related

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants