Skip to content

Duplicate "page last updated" date + stray rule in the hero on all upgrade pages #19025

Description

@konopkja

Describe the bug

On every template: upgrade page, the "page last updated" date is rendered twice in the header region, about 150px apart, with a stray partial-width horizontal rule between them.

Reading top to bottom on https://ethereum.org/roadmap/glamsterdam/ (desktop, 1440px):

  1. Glamsterdam (h1)
  2. Learn about the Glamsterdam protocol upgrade
  3. a partial-width rule (768px, stops mid-page) followed by "Page last updated: July 20, 2026"
  4. the hero's full-width bottom border
  5. "Page last update: July 20, 2026" — the same date again, next to the contributor avatars

The two lines even use different translation keys for the same string: common:page-last-updated in the hero vs page-last-update in FileContributors.

Expected behavior

The date appears once, in the standard FileContributors line at the top of the article, same as every other content page on the site.

Root cause

Two independent components render the same lastEditLocaleTimestamp:

  • src/layouts/Topic.tsx appends <p className="border-t pt-4 italic">…</p> to the hero description, gated on showLastUpdatedInHero, which is set only in src/data/topics/upgrade.ts.
  • src/layouts/ContentLayout.tsx renders <FileContributors variant="compact">, which prints the date at src/components/FileContributors.tsx:171.

These didn't collide before. In 49d6425 (migrate/refactor(ui): ContentLayout, TableOfContents) the compact FileContributors became unconditional at the top of the article. Previously it was gated on asidePosition === "right-top", and the default was left-bottom, which placed contributors at the bottom of the page. The Upgrade layout never passed asidePosition, so it got the bottom placement and the hero timestamp was the only date in the header.

The hero rule itself predates the consolidation — it was carried verbatim from src/layouts/md/Upgrade.tsx into the showLastUpdatedInHero flag in cba15c3. In the old design the hero held a bulleted summaryPoints list, so the rule read as a footer under a block of bullets. Pages with a one-line description (like Glamsterdam) leave it floating under a single sentence.

Affected pages

All template: upgrade pages, in every locale:

  • /roadmap/beacon-chain/
  • /roadmap/dencun/
  • /roadmap/fusaka/
  • /roadmap/glamsterdam/
  • /roadmap/merge/
  • /roadmap/pectra/

Verified live on glamsterdam, fusaka, pectra and dencun — the same border-t pt-4 italic paragraph is present in each hero.

Steps to reproduce

  1. Open https://ethereum.org/roadmap/glamsterdam/ on desktop
  2. Look at the area between the h1 and the start of the article body

Desktop

  • Reproduced at 1440x1000 in Chromium
  • Present on production

Metadata

Metadata

Assignees

No one assigned

    Labels

    bug 🐛Something isn't workingdev requiredThis requires developer resources

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions