feat: add /reports page under Research menu#18254
Merged
Merged
Conversation
Adds a new /reports page that curates reputable, third-party institutional reports on Ethereum from regulators, central banks, banks, consultancies, and leading research firms. Each report shows the publication date as a tag, the title, the publisher, and a link out to the publisher. Also moves the existing /trillion-dollar-security page under /reports/trillion-dollar-security with a 301 redirect, so the EF-led security report sits alongside the external ones. Adds a Research -> Reports nav entry and a footer link. Card content follows the inclusion criteria from issue ethereum#18218 and the maintainer feedback in ethereum#18218 (comment 4498659895): substantive Ethereum content, named institutional publisher, direct publisher-hosted URL. Initial 11 entries: - Trillion Dollar Security (Ethereum Foundation, internal) - Technical Risk Assessment on Blockchain Networks (OpenZeppelin, Apr 2026) - Quantum Computing & Blockchain (Coinbase Independent Advisory Board, Apr 2026) - State of Crypto Report 2025 (a16z crypto, Oct 2025) - The Future of Financial Infrastructure: Ethereum's Layer 2 Landscape (Etherealize, Nethermind and L2BEAT, Dec 2025) - Coin Report: Ethereum (ETH) (Fidelity Digital Assets, Aug 2025) - Ethereum is Trustware (Consensys, Aug 2025) - Ethereum Pectra Upgrade: The Impact on Institutional Staking (Twinstake, 2025) - Strengthening American Leadership in Digital Financial Technology (The White House President's Working Group, Jul 2025) - BIS Papers 156 (Bank for International Settlements, Apr 2025) - From ripples to waves (McKinsey & Company, Jun 2024) Follows the canonical Card primitive pattern from app/[locale]/learn: row-span-3 subgrid layout with CardBanner (fit=contain) at top, CardContent with Tag + CardTitle + CardParagraph, and a ButtonLink CTA. ButtonLink auto- renders the external link arrow on outbound URLs. Closes ethereum#18218 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
✅ Deploy Preview for ethereumorg ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
Re-encodes the 10 /reports cover images from PNG/JPG at default quality to WebP at q=80. Total asset size drops 3.8 MB to 648 KB (-83%). Largest single file (l2-landscape) drops from 1122 KB to 99 KB. WebP is well-supported across the runtime targets the site already serves; Next.js Image continues to handle per-request optimization on top. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Replaces the marketing-flavored intro ("curated collection of reputable
reports", "every report listed has been independently verified") with copy
that frames the page around what readers can learn from these reports, not
how trustworthy the list is. Also drops the em dashes per the repo style
guide (no em dashes in content writing).
Changes the BIS Papers 156 title to use a colon between the title and
subtitle (matching the BIS-published title), removing the em dash there as
well. The "BIS Papers 156" series identifier moves out of the title since
the publisher field already carries the bibliographic context.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adds an optional fileSizeBytes field to the Report type and renders a small "PDF, X.X MB" line below the publisher on each card whose href is a direct PDF download. Three current entries qualify: - OpenZeppelin Technical Risk Assessment: 0.8 MB - Coinbase Quantum Computing & Blockchain: 0.4 MB - L2 Landscape (Etherealize / Nethermind / L2BEAT): 6.6 MB Sizes were read from each publisher's Content-Length header at the time of authoring. Cards that link to HTML landing pages do not show a size. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Switches four cards whose href previously pointed at the publisher's HTML landing to the underlying PDF, so readers reach the actual report in one click instead of two: - a16z State of Crypto 2025: blog post -> standalone PDF (16.5 MB) - Twinstake Pectra: webflow page -> PDF (1.2 MB) - White House PWG: press fact-sheet -> the 160-page PWG report PDF (5.6 MB) - BIS Papers 156: .htm landing -> bispap156.pdf (0.7 MB) Each of those now also shows "PDF, X.X MB" beneath the publisher line, so readers know what they are about to download. With this change all seven externally-linked PDF reports surface their file size. The remaining three external cards (Consensys "Ethereum is Trustware", Fidelity Coin Report, McKinsey "From Ripples to Waves") are web-only reports with no public direct-PDF URL; they now show a "Web article" indicator in the same slot so every card has a media-type label. The internal Trillion Dollar Security card stays unbadged so the EF subpage remains visually distinct from external reports. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Replaces all 11 existing report covers with new EF-designed artwork at a consistent 400x566 aspect ratio. Covers were converted from PNG (1.9 MB total) to WebP at q=80 (260 KB total, -86%). Adds a new card at position 1 for "Ethereum Basics for Governments and Institutions" — an Ethereum Foundation original. The PDF will be uploaded to /public/reports/ in a follow-up commit; the href is the placeholder path it will live at. Also swaps the hero illustration to a robot-with-books graphic (reports-hero.webp, 45 KB) that fits the page topic better than the generic hackathon illustration that was placeholder. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Replaces the hero WebP with a re-encoded version sourced from a 960x1012 master (was 480x506) at q=85, so the rendered hero stays sharp at retina densities up to the ContentHero primitive's 479px max-height. 45 KB to 129 KB on disk; still compact for a hero asset. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Upgrades the /reports page structured data to match the canonical pattern used by /videos and address mnelsonBT's follow-up on ethereum#18218: - Promotes the page node from WebPage to CollectionPage (more accurate type for a curated list; better understood by Google). - Adds an ItemList as mainEntity, with all 12 reports as schema.org Report entries. - Each report carries its own publisher Organization, datePublished (ISO 8601 via the new dateIso field on Report), absolute image URL, inLanguage, and — for PDF entries — encodingFormat and contentSize. dateIso is kept separate from the existing display `date` field so the card tag stays short ("Apr 2025") while the schema gets a parseable value ("2025-04-15"). The standard <title>, <meta description>, canonical URL, hreflang alternates, Open Graph, Twitter Card, robots, and sitemap inclusion are already handled by the project's getMetadata helper and Next.js conventions — no changes there. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…ation Replaces the bespoke robot-with-books hero with the what-is-ethereum-network.png illustration that already ships with the repo. Keeps the page visually consistent with the rest of the site and drops a 129 KB bespoke asset. Removes public/images/reports/reports-hero.webp since nothing else imports it. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Replaces the single-word H1 "Reports" with a descriptive headline that
names the primary entity (Ethereum), the page type (Reports), and the
target audience (institutions). The single word "Reports" gave Google
no topic signal and gave AI agents no context about the page's scope.
Syncs the visible H1, the <title>, og:title, twitter:title, the
CollectionPage `name`, and the ItemList `name` so every SEO signal
points to the same string.
The H2 section heading ("Research on Ethereum") and breadcrumb label
stay as they are to avoid duplication and keep the visible hierarchy
readable.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Replaces the what-is-ethereum-network hero with a dedicated illustration (reports-hero.webp, 92 KB) showing a person reading at a vintage computer atop stacks of books — on-theme for a research / reports landing page and matches the existing eth.org illustration style. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Swap reports-hero.webp to the books2 variant — higher-resolution source (1426x1103, was 943x711) and a cooler lavender palette that aligns more tightly with the rest of the page's cover artwork. WebP q=85, 156 KB. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Compared 6 cwebp variants on the books2 source. Lossless modes blow up to 550-790 KB (too many subtle gradients for palette compression to win). The previous q=85 setting at 156 KB was leaving size on the table: the source is 1426x1103 but the ContentHero primitive caps the rendered image at 479px tall, so retina 2x is only ~960px. Re-encoded at q=80 with -resize 1200 0 → 104 KB, PSNR 44.6 dB (visually indistinguishable at hero scale). 34% smaller than the previous file. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: wackerow <54227730+wackerow@users.noreply.github.com>
Prevent single word/trailing icon from wrapping by itself Co-Authored-By: wackerow <54227730+wackerow@users.noreply.github.com>
- Remove redundant hard-coded "date" prop from reports data - Use `formatDate` with `locale` and formatting options to render short month with year Co-Authored-By: wackerow <54227730+wackerow@users.noreply.github.com>
Co-Authored-By: wackerow <54227730+wackerow@users.noreply.github.com>
Co-Authored-By: wackerow <54227730+wackerow@users.noreply.github.com>
- Update isPdf to catch optional query param case - Reuse isExternal, removing isAbsoluteUrl one-off Co-Authored-By: wackerow <54227730+wackerow@users.noreply.github.com>
Co-Authored-By: wackerow <54227730+wackerow@users.noreply.github.com>
wackerow
approved these changes
May 27, 2026
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Summary
Closes #18218.
Adds a new
/reportspage that curates reputable, third-party institutional reports on Ethereum from regulators, central banks, banks, consultancies, and leading research firms. Surfaces under the Research nav menu.Also moves the existing
/trillion-dollar-securitypage to/reports/trillion-dollar-securitywith a 301 redirect, so the EF-led security report sits alongside the external ones.What this PR adds / changes
app/[locale]/reports/page.tsx,page-jsonld.tsx, anddata.tssrc/intl/en/page-reports.jsonResearch → Reportsadded tosrc/lib/nav/buildNavigation.tsnav-reports-label,nav-reports-description,reports(breadcrumb label) insrc/intl/en/common.jsonapp/[locale]/trillion-dollar-security/→app/[locale]/reports/trillion-dollar-security/, with the slug, JSON-LD URL, and metadata slug updated to match the new path/trillion-dollar-security→/reports/trillion-dollar-security(and the existing/tdsshortcut updated)/reports/and/reports/trillion-dollar-security/linkssrc/lib/utils/translations.tsupdated for both new routespublic/images/reports/(TDS reuses its existing image)Content
Inclusion bar follows the criteria in the issue and the maintainer feedback (#18218 (comment)): substantive Ethereum content, named institutional publisher, direct publisher-hosted URL that resolves.
Initial 11 entries:
Every external URL was verified to resolve at the time of authoring. Items @mnelsonBT flagged for removal in the issue thread (DAMA 2 litepaper press release, ECB Macroprudential Bulletin 33, EY Nightfall press release, the Etherealize "Digital Oil" URL that returned a TLS error) have been dropped. Suggested replacements (Consensys "Trustware", the Etherealize/Nethermind/L2BEAT L2 Landscape report, the Fidelity Ethereum coin report, OpenZeppelin's risk assessment, and the Coinbase IAB Quantum & Blockchain paper) are included. The crypto.com Pectra URL @mnelsonBT suggested returned a 404 at verification time, so the Twinstake alternative he proposed was used.
Design
Follows the canonical
Cardprimitive pattern fromapp/[locale]/learn/page.tsx:fit="contain"triggers the auto blur-backdrop onCardBanner, which handles the mix of portrait (PDF first-page renders) and landscape (OG images) cover artwork without inconsistent cropping.row-span-3 grid grid-rows-subgridaligns banners / titles / buttons across rows.ButtonLinkauto-renders the external link arrow on outbound URLs; the internal TDS card gets no arrow.The date chip reuses the small-tag pattern from
app/[locale]/developers/_components/BuilderCard.tsx:status="warning",size="small", withrounded-[4px] px-1 py-px font-bold normal-case.Test plan
/reports/renders 200 with all 11 cards and cover images locally/reports/trillion-dollar-security/renders the full TDS page at the new path/trillion-dollar-securityreturns a 308 redirect to the new path/tdsshortcut redirects to the new path/reports/trillion-dollar-security.pdf(static asset) still serves cleanly (untouched)Research → ReportsuseWalletFilters.tsxandplaywright.visual.config.tsare out of scope)Open questions for maintainers
These were carried forward from the issue:
categoryfield for this.author/publisherschemas to each report entry (like the video hub). Out of scope for this PR.🤖 Generated with Claude Code