From a9dae830994810407c886eab75ed8f63402d01e9 Mon Sep 17 00:00:00 2001 From: Pablo Pettinari Date: Tue, 4 Nov 2025 16:29:03 +0100 Subject: [PATCH 1/6] replace existing robots.txt logic with custom rules to block crawling on all non-prod hosts --- app/robots.ts | 28 ++++++++++++++++++++++++++++ next-sitemap.config.js | 3 +-- 2 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 app/robots.ts diff --git a/app/robots.ts b/app/robots.ts new file mode 100644 index 00000000000..41482c55da6 --- /dev/null +++ b/app/robots.ts @@ -0,0 +1,28 @@ +import type { MetadataRoute } from "next" + +import { SITE_URL } from "@/lib/constants" + +export default function robots(): MetadataRoute.Robots { + let hostname = "" + try { + hostname = new URL(SITE_URL).hostname + } catch (error) { + console.error("Error getting hostname", error) + } + + const isProduction = hostname === "ethereum.org" + + if (!isProduction) { + return { + rules: [{ userAgent: "*", disallow: "/" }], + sitemap: [], + host: SITE_URL, + } + } + + return { + rules: [{ userAgent: "*", allow: "/" }], + sitemap: [`${SITE_URL}/sitemap.xml`], + host: SITE_URL, + } +} diff --git a/next-sitemap.config.js b/next-sitemap.config.js index daeba00e0d0..f669e865ff7 100644 --- a/next-sitemap.config.js +++ b/next-sitemap.config.js @@ -5,8 +5,7 @@ const defaultLocale = "en" /** @type {import('next-sitemap').IConfig} */ module.exports = { - siteUrl: process.env.SITE_URL || "https://ethereum.org", - generateRobotsTxt: true, + siteUrl: process.env.NEXT_PUBLIC_SITE_URL || "https://ethereum.org", transform: async (_, path) => { const rootPath = path.split("/")[1] if (path.endsWith("/404")) return null From 3fe384a3db23bb47309b8b458e8e3a17894881be Mon Sep 17 00:00:00 2001 From: Paul Wackerow <54227730+wackerow@users.noreply.github.com> Date: Wed, 5 Nov 2025 11:21:02 -0600 Subject: [PATCH 2/6] patch: hard-code internal ab test config api route --- src/lib/ab-testing/server.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/lib/ab-testing/server.ts b/src/lib/ab-testing/server.ts index 8dd9032787f..34d62e6d9d4 100644 --- a/src/lib/ab-testing/server.ts +++ b/src/lib/ab-testing/server.ts @@ -1,10 +1,8 @@ -import { SITE_URL } from "@/lib/constants" - import type { ABTestAssignment, ABTestConfig } from "./types" const getABTestConfigs = async (): Promise> => { try { - const response = await fetch(`${SITE_URL}/api/ab-config`, { + const response = await fetch("https://ethereum.org/api/ab-config", { next: { revalidate: 3600 }, }) From d4bd021cbeb39aa868093fa3c83c468fbaf7103b Mon Sep 17 00:00:00 2001 From: Paul Wackerow <54227730+wackerow@users.noreply.github.com> Date: Wed, 5 Nov 2025 12:00:05 -0600 Subject: [PATCH 3/6] feat: add fusaka epoch to network upgrades data --- src/data/networkUpgradeSummaryData.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/data/networkUpgradeSummaryData.ts b/src/data/networkUpgradeSummaryData.ts index 8325faf617b..8b39b45d27c 100644 --- a/src/data/networkUpgradeSummaryData.ts +++ b/src/data/networkUpgradeSummaryData.ts @@ -1,6 +1,12 @@ import type { NetworkUpgradeData } from "@/lib/types" const networkUpgradeSummaryData: NetworkUpgradeData = { + fusaka: { + dateTimeAsString: "2025-12-03T21:49:11.000Z", + epochNumber: 411392, + slotNumber: 411392 * 32, + isPending: true, + }, pectra: { dateTimeAsString: "2025-05-07T10:05:11.000Z", ethPriceInUSD: 2222, From 9ad60b202404aebbb3ddab300aa25b0a4b242306 Mon Sep 17 00:00:00 2001 From: Corwin Smith Date: Wed, 5 Nov 2025 11:04:12 -0700 Subject: [PATCH 4/6] update release date fusaka --- src/data/roadmap/releases.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/roadmap/releases.tsx b/src/data/roadmap/releases.tsx index 5b6f6eab212..39fc29135e0 100644 --- a/src/data/roadmap/releases.tsx +++ b/src/data/roadmap/releases.tsx @@ -143,7 +143,7 @@ export const getReleasesData = (t: TranslationFunction): Release[] => [ { image: FusakaImage, releaseName: "Fusaka", - plannedReleaseYear: "2025", + releaseDate: "2025-12-03", content: (

{t("page-roadmap-fusaka-peerdas-title")}

From 484f81ec2ca843fe59d5c43acc0dea9fd166bc6a Mon Sep 17 00:00:00 2001 From: Paul Wackerow <54227730+wackerow@users.noreply.github.com> Date: Wed, 5 Nov 2025 12:09:29 -0600 Subject: [PATCH 5/6] feat: initial fusaka listing to ethereum-forks page --- public/content/ethereum-forks/index.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/content/ethereum-forks/index.md b/public/content/ethereum-forks/index.md index 0959357fbe0..03ee0a240b0 100644 --- a/public/content/ethereum-forks/index.md +++ b/public/content/ethereum-forks/index.md @@ -73,6 +73,12 @@ Looking for future protocol upgrades? [Learn about upcoming upgrades on the Ethe ## 2025 {#2025} +### Fulu-Osaka ("Fusaka", _in progress_) {#fusaka} + + + +[More on Fusaka](/roadmap/fusaka/) + ### Prague-Electra ("Pectra") {#pectra} From 963f74a180fcf44695ca1c5b900f09f3c05b517b Mon Sep 17 00:00:00 2001 From: Corwin Smith Date: Wed, 5 Nov 2025 11:19:18 -0700 Subject: [PATCH 6/6] fix date --- src/data/roadmap/releases.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/data/roadmap/releases.tsx b/src/data/roadmap/releases.tsx index 39fc29135e0..3e288be7349 100644 --- a/src/data/roadmap/releases.tsx +++ b/src/data/roadmap/releases.tsx @@ -10,7 +10,8 @@ import PectraImage from "@/public/images/roadmap/roadmap-pectra.png" type TranslationFunction = (key: string) => string type DateString = - `2${number}${number}${number}-${number}${number}-${number}${number}` + | `2${number}${number}${number}-${number}${number}-${number}${number}` + | `${number}${number}${number}${number}-${number}${number}-${number}${number}T${number}${number}:${number}${number}:${number}${number}.${number}${number}${number}Z` type YearString = `2${number}${number}${number}` interface BaseRelease { @@ -143,7 +144,7 @@ export const getReleasesData = (t: TranslationFunction): Release[] => [ { image: FusakaImage, releaseName: "Fusaka", - releaseDate: "2025-12-03", + releaseDate: "2025-12-03T21:49:11.000Z", content: (

{t("page-roadmap-fusaka-peerdas-title")}