Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 20 additions & 4 deletions app/[locale]/roadmap/_components/ReleaseCarousel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -41,17 +41,30 @@ const ReleaseCarousel = () => {
return releaseDate <= now
})

// Upcoming: has a releaseDate, but is in the future
// Case 1: A release with a future releaseDate exists — show it
const hasUpcomingRelease = releasesData.some((release) => {
if (!("releaseDate" in release) || !release.releaseDate) return false
const releaseDate = new Date(release.releaseDate)
return releaseDate > now
})

// If upcoming releases exist, start index after production releases
if (hasUpcomingRelease) return productionReleases.length

// If no upcoming releases, start at the last production release
// Case 2: Last production release is within 2-month grace period — still show it
const lastProd = productionReleases[productionReleases.length - 1]
if (lastProd && "releaseDate" in lastProd && lastProd.releaseDate) {
const gracePeriodEnd = new Date(lastProd.releaseDate)
gracePeriodEnd.setMonth(gracePeriodEnd.getMonth() + 2)
if (now <= gracePeriodEnd) {
return productionReleases.length - 1
}
}

// Case 3: Grace period expired — show first planned/unscheduled release
if (productionReleases.length < releasesData.length) {
return productionReleases.length
}

// Fallback: last production release
return productionReleases.length - 1
}, [releasesData])

Expand Down Expand Up @@ -80,6 +93,9 @@ const ReleaseCarousel = () => {
}, [])

const getDisplayDate = (release: Release): string => {
if ("displayDate" in release && release.displayDate)
return release.displayDate

if (!("releaseDate" in release || "plannedReleaseYear" in release))
return ""

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
| 30 | TNF ticker transposition for NFT | pt-br #17122 | `TNF` instead of `NFT` -- 37 occurrences across pt-br files; pt-br uses `NFT` (356 occurrences) confirming TNF is a Crowdin error | Medium -- wrong acronym |
| 31 | Translated inline code content with orphaned backticks | pt-br #17122 | EN: `` pass `wallet`, the compiled `` -> PT: `passar a carteira \`, o arquivo` -- Crowdin translates content inside backticks, breaking the code span and leaving orphaned backticks | High -- broken inline code, stray backtick in prose |
| 32 | False-positive "Exposed MDX tag" for PascalCase components | PR #17702 | `<DocLink href="...">` flagged as exposed tag -- 384 false warnings across 72 files; DocLink is registered MDX component in MdComponents | Low -- false warning, no build impact |
| 33 | LLM artifact tokens exposed in MDX | PR #17730 (mr) | `कृ<bos>ितपणे` -- `<bos>` (beginning-of-sequence) token from machine translation leaks into prose; MDX parser treats it as unrecognized JSX component; other tokens: `<eos>`, `<s>`, `</s>`, `<pad>`, `<unk>`, `<mask>` | Critical -- breaks MDX compilation |

## Patterns Already Handled by Sanitizer (Confirmed Working)

Expand Down Expand Up @@ -79,6 +80,7 @@ These patterns are covered by existing fix functions and should have regression
- **Bold adjacent non-Latin** (`fixBoldAdjacentNonLatin`) — `**text**가` → `<strong>text</strong>가` converts ONLY non-Latin-adjacent cases to HTML tags; uses lookbehind to prevent cross-boundary matching (ko PR #17166)
- **Italic adjacent non-Latin** (`fixItalicAdjacentNonLatin`) — `*text*가` / `_text_가` → `<em>text</em>가` mirrors bold fix for single `*` and `_` italic syntax (ko PR #17166)
- **Translated inline code warning** (`warnTranslatedInlineCode`) — warns when inline code span count drops significantly OR when orphaned backticks are detected on a line; signals Crowdin translated content inside backticks (pt-br PR #17122)
- **LLM artifact token stripping** (`stripLlmArtifactTokens`) — strips `<bos>`, `<eos>`, `<s>`, `</s>`, `<pad>`, `<unk>`, `<mask>` tokens from prose; these leak from machine translation pipelines and break MDX compilation (mr PR #17730)

## Recommendations for Future Sanitizer Iteration

Expand Down
64 changes: 36 additions & 28 deletions public/content/ethereum-forks/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,43 +25,51 @@ The software that underlies Ethereum is composed of two halves, known as the [ex

**Execution upgrade naming**

Since 2021, upgrades to the **execution layer** are named according to the city names of [previous Devcon locations](https://devcon.org/en/past-events/) in chronological order:

| Upgrade Name | Devcon Year | Devcon Number | Upgrade Date |
| ------------ | ----------- | ------------- | ------------ |
| Berlin | 2014 | 0 | Apr 15, 2021 |
| London | 2015 | I | Aug 5, 2021 |
| Shanghai | 2016 | II | Apr 12, 2023 |
| Cancun | 2017 | III | Mar 13, 2024 |
| **Prague** | 2018 | IV | TBD - Next |
| _Osaka_ | 2019 | V | TBD |
| _Bogota_ | 2022 | VI | TBD |
| _Bangkok_ | 2024 | VII | TBD |
Since 2021, upgrades to the **execution layer** are named according to the city names of [previous Devcon and Devconnect locations](https://devcon.org/en/past-events/) in chronological order:

| Upgrade Name | Devcon(nect) Year | Devcon Number | Upgrade Date |
| -------------- | ----------------- | ------------- | ------------ |
| Berlin | 2014 | 0 | Apr 15, 2021 |
| London | 2015 | I | Aug 5, 2021 |
| Shanghai | 2016 | II | Apr 12, 2023 |
| Cancun | 2017 | III | Mar 13, 2024 |
| Prague | 2018 | IV | May 7, 2025 |
| Osaka | 2019 | V | Dec 3, 2025 |
| **Amsterdam** | 2022 | Devconnect | TBD - Next |
| _Bogotá_ | 2022 | VI | TBD |
| _Istanbul_ | 2023 | Devconnect | TBD |
| _Bangkok_ | 2024 | VII | TBD |
| _Buenos Aires_ | 2025 | Devconnect | TBD |
| _Mumbai_ | 2026 | VIII | TBD |

**Consensus upgrade naming**

Since the launch of the [Beacon Chain](/glossary/#beacon-chain), upgrades to the **consensus layer** are named after celestial stars beginning with letters that proceed in alphabetical order:

| Upgrade Name | Upgrade Date |
| ------------------------------------------------------------- | ------------ |
| Beacon Chain genesis | Dec 1, 2020 |
| [Altair](https://en.wikipedia.org/wiki/Altair) | Oct 27, 2021 |
| [Bellatrix](https://en.wikipedia.org/wiki/Bellatrix) | Sep 6, 2022 |
| [Capella](https://en.wikipedia.org/wiki/Capella) | Apr 12, 2023 |
| [Deneb](https://en.wikipedia.org/wiki/Deneb) | Mar 13, 2024 |
| [**Electra**](<https://en.wikipedia.org/wiki/Electra_(star)>) | TBD - Next |
| [_Fulu_](<https://en.wikipedia.org/wiki/Fulu_(star)>) | TBD |
| Upgrade Name | Upgrade Date |
| --------------------------------------------------------- | ------------ |
| Beacon Chain genesis | Dec 1, 2020 |
| [Altair](https://en.wikipedia.org/wiki/Altair) | Oct 27, 2021 |
| [Bellatrix](https://en.wikipedia.org/wiki/Bellatrix) | Sep 6, 2022 |
| [Capella](https://en.wikipedia.org/wiki/Capella) | Apr 12, 2023 |
| [Deneb](https://en.wikipedia.org/wiki/Deneb) | Mar 13, 2024 |
| [Electra](<https://en.wikipedia.org/wiki/Electra_(star)>) | May 7, 2025 |
| [Fulu](<https://en.wikipedia.org/wiki/Fulu_(star)>) | Dec 3, 2025 |
| [**Gloas**](https://en.wikipedia.org/wiki/WASP-13) | TBD - Next |
| [_Heka_](https://en.wikipedia.org/wiki/Meissa) | TBD |

**Combined naming**

The execution and consensus upgrades were initially rolled out at different times, but after [The Merge](/roadmap/merge/) in 2022 these have been deployed simultaneously. As-such, colloquial terms have emerged to simplify references to these upgrades using a single conjoined term. This began with the _Shanghai-Capella_ upgrade, commonly referred to as "**Shapella**", and is continued with the _Cancun-Deneb_ (**Dencun**), and the _Prague-Electra_ (**Pectra**) upgrades.
The execution and consensus upgrades were initially rolled out at different times, but after [The Merge](/roadmap/merge/) in 2022 these have been deployed simultaneously. As-such, colloquial terms have emerged to simplify references to these upgrades using a single conjoined term. This began with the _Shanghai-Capella_ upgrade, commonly referred to as "**Shapella**", and is continued with subsequent upgrades.

| Execution Upgrade | Consensus Upgrade | Short Name |
| ----------------- | ----------------- | ---------- |
| Shanghai | Capella | "Shapella" |
| Cancun | Deneb | "Dencun" |
| Prague | Electra | "Pectra" |
| Osaka | Fulu | "Fusaka" |
| Execution Upgrade | Consensus Upgrade | Short Name |
| ----------------- | ----------------- | ------------- |
| Shanghai | Capella | "Shapella" |
| Cancun | Deneb | "Dencun" |
| Prague | Electra | "Pectra" |
| Osaka | Fulu | "Fusaka" |
| Amsterdam | Gloas | "Glamsterdam" |
| Bogotá | Heka | "Hekotá" |

</ExpandableCard>

Expand Down
Loading
Loading