Skip to content

docs: Docusaurus migration with v3.3 versioned docs#20883

Merged
bloxster merged 59 commits into
release/3.4from
docs/docusaurus-migration
Apr 29, 2026
Merged

docs: Docusaurus migration with v3.3 versioned docs#20883
bloxster merged 59 commits into
release/3.4from
docs/docusaurus-migration

Conversation

@bloxster

@bloxster bloxster commented Apr 28, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Migrates the GitBook documentation to a Docusaurus 3 site under docs/site/
  • Adds Docusaurus native versioning: v3.4 as current (stable), v3.3 as archived version with version dropdown in the navbar
  • Rebuilds all section landing pages (homepage, Get Started, Fundamentals, Staking, Easy Nodes) with card grid layouts for both versions
  • Fixes content: converts GitBook HTML table artifacts to markdown, removes stray --- separators causing double titles, adds missing title frontmatter across all pages, corrects sidebar ordering
  • Updates installation page for both versions: OS-selector tabs with smooth-scroll anchors
  • Adds Plausible analytics to docs.erigon.tech
  • Adds GitHub Actions deploy workflow (.github/workflows/docs-deploy.yml) targeting release/3.4 → docs.erigon.tech
  • Auto-injects latest stable release version at build time via GitHub API (authenticated, falls back to 'latest')
  • Custom branded UI: footer, 404 page, navbar buttons, Erigon Orange color system — all styles in custom.css (no inline style blocks)
  • Sets onBrokenLinks, onBrokenMarkdownLinks, and onBrokenAnchors to 'throw'
  • Deletion of old folders docs/gitbook and docs/gitbook-help
  • Reconciles DESIGN-SPEC.md with actual implementation

Test plan

  • npm run build passes with 0 broken links (4 pre-existing broken anchors in v3.3 source content)
  • Version dropdown shows v3.4 (current) and v3.3 in the navbar
  • All section landing pages render card grids on both versions
  • Sidebar order matches between v3.3 and v3.4

Gianni Morselli and others added 18 commits April 28, 2026 11:18
Adds a Docusaurus 3.10.0 site at docs/docusaurus/ as a migration from
the current GitBook-based documentation. Content is in sync with
docs/gitbook/ on this branch (release/3.4).

## What's included

**Framework & tooling**
- Docusaurus 3.10.0 + React 19, TypeScript, Webpack 5
- @docusaurus/faster for build performance
- @easyops-cn/docusaurus-search-local (offline search, no Algolia needed)
- @docusaurus/theme-mermaid for diagram support

**Content**
- All technical docs migrated from docs/gitbook/src/ (get-started,
  fundamentals, interacting-with-erigon, staking, about)
- Help Center migrated from docs/gitbook-help/ as a standalone secondary
  docs instance (routeBasePath: 'help-center')
- Docs served at site root (routeBasePath: '/') under baseUrl '/docs/'

**Design & branding**
- Erigon orange (#EF7716) color system, light + dark mode
- Montserrat (headings), Nunito Sans (body), Quantify (navbar brand)
- Swizzled Footer: black background, 4-column layout with social SVG icons
- Swizzled 404: branded page with 6 navigation cards
- Branded navbar: logo, Blog + Release Notes + GitHub buttons
- Landing page and section index pages as MDX with card grids
- Chain icons (ETH, GNO, POL), otter mascot, shutter graphics

**CI**
- GitHub Actions workflow: build on PR, deploy to GitHub Pages on main

**Deployment target**: erigontech.github.io/docs/

Co-Authored-By: bloxster <gianni.morselli@erigon.tech>
…5.105.0

webpackbar (pulled in by @docusaurus/bundler) is incompatible with
webpack 5.106+'s stricter ProgressPlugin schema validation, causing
the dev server to crash immediately after starting. Two changes:

- Remove webpackbar from direct dependencies (it is only a cosmetic
  build-progress display; @docusaurus/bundler manages its own copy)
- Add npm override to pin webpack to 5.105.0, the last version before
  the breaking ProgressPlugin schema change

Build and dev server both confirmed working after this fix.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ers, spec ref

- Community column: plain icon links replaced with .footer-social-btn
  pill buttons (bordered rounded box, icon + label, orange hover + lift),
  matching Cocoon and erigon.tech style
- All 4 column headers: color #f0f0f0 (was rgba(255,255,255,0.4))
- Add .footer-social-btn CSS class to custom.css
- DESIGN-SPEC.md: add canonical spec pointer to
  github.com/erigontech/erigon-documents/tree/master/public-docs

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Set current version label to v3.4 (badge suppressed)
- Add docsVersionDropdown navbar item (right side, before Blog)
- Add version dropdown CSS with orange active/hover state

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Run docs:version v3.3 to create archived version snapshot
- Add lastVersion: 'current' so v3.4 is treated as latest stable
- Version dropdown back on right side of navbar

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replaces the v3.3 snapshot (which was a copy of v3.4 content) with the
properly migrated v3.3 GitBook content from docs/docusaurus-v3.3 branch.

All cross-section relative links fixed for the flattened structure:
- fundamentals/interacting-with-erigon/ → ../interacting-with-erigon/
- fundamentals/staking/ → ../staking/
- get-started/fundamentals/ → ../fundamentals/
- installation-2 → installation/
- archive/ references removed
- index.md anchor links fixed for trailingSlash:false behavior

Build: SUCCESS, 0 broken links (4 broken anchors are heading ID
mismatches within individual v3.3 pages — content review items).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…an up about section

- Fix slug in versioned_docs/version-v3.3/index.mdx: was '/docs/v3.3/' causing
  double-prefix URL (/docs/v3.3/docs/v3.3/); changed to '/' so Docusaurus adds
  the version prefix correctly
- Add get-started/index.md and fundamentals/index.md stubs so section root links
  resolve correctly in v3.3 versioned docs
- Replace about/index.md with about/index.mdx: JSX card layout (Contributing,
  Disclaimer, License only) matching v3.4 style
- Remove donate.md and how-to-reach-us.md from v3.3 versioned docs
- Update v3.4 docs/index.mdx About card description to match actual content
- Update v3.4 docs/about/index.mdx subtitle to match actual content

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…th versions

- v3.4 docs/index.mdx: replace About card with Interacting with Erigon card
  (JSON-RPC / gRPC API reference with code-brackets icon)
- v3.3 versioned_docs/version-v3.3/index.mdx: same About → Interacting swap
- v3.3 index.mdx frontmatter: add title/hide_title to match v3.4 so the
  sidebar shows "Introduction" instead of the raw filename "index"

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…stallation page

- Add title frontmatter to all 10 v3.3 get-started pages that were showing
  raw filenames in the sidebar and as page titles (hardware-requirements,
  why-using-erigon, migrating-from-geth, installation/upgrading, easy-nodes
  index and all sub-pages)
- Rebuild get-started/index.md with full card layout matching v3.4 (5 cards:
  Why Erigon, Hardware Requirements, Installation, Easy Nodes, Migrating from Geth)
- Replace v3.3 installation/index.md with v3.4 structure: OS-selector tabs with
  smooth-scroll anchors, proper details sections for Docker, Pre-built, Source,
  Native Windows, and WSL — version refs updated to v3.3.x, Go req to 1.24,
  internal links prefixed with /docs/v3.3/

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- hardware-requirements: remove stray ---/--- GitBook artifact; hide_title:true
  already set — artifact was causing Docusaurus to render frontmatter title as
  an extra h1 before the body heading
- migrating-from-geth: same artifact removal + add hide_title:true
- easy-nodes/index.md: replace plain heading stub with full 3-card layout
  matching v3.4 (Ethereum, Gnosis Chain, Polygon) with versioned /docs/v3.3/ paths

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Matches v3.4 layout: row-direction card spanning full grid width with
ribbon icon, title, description, and chevron arrow.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Matches v3.4 structure: Basic Usage, Sync Modes, Configuration, Supported
Networks, Optimizing Storage, Docker Compose, Security, Modules — all links
prefixed with /docs/v3.3/.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Matches v3.4: Caplin (Built-in CL), External Consensus Client, Shutter Network
cards with versioned /docs/v3.3/ paths.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…3.3 + v3.4)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace two GitBook HTML tables (data-header-hidden with empty <thead>)
with proper markdown tables — Overview component table and Ethereum
mainnet Disk Size/RAM table.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Introduction (index.mdx, pos 1) was hidden behind Get Started because both
had position 1. Shifted all top-level categories up by 1:
get-started 1→2, fundamentals 2→3, interacting-with-erigon 3→4,
staking 4→5, about 5→6.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…an-external-cl

Remove GitBook ---/--- horizontal rule artifact before the h1 heading,
add hide_title:true to prevent frontmatter title rendering as a second h1.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…3 + v3.4)

Replace intimidating warning with a neutral info note that explains
the benefit (full control, any version/branch) and points casual users
to binaries/Docker without discouraging developers.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
bloxster and others added 3 commits April 28, 2026 16:32
- Delete scripts/: one-time migration helpers (convert_meta.py,
  convert_to_docusaurus.py) — copied to erigon-documents for reference
- Delete static/img/: docusaurus.png, docusaurus-social-card.jpg,
  eth/gno/pol .png duplicates (svg versions are used), undraw_docusaurus_*.svg
- Delete src/components/HomepageFeatures/ — unused default Docusaurus scaffold
- Delete src/pages/index.module.css — no index.tsx to consume it

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
docs/gitbook/ and docs/gitbook-help/ are fully superseded by the
Docusaurus site in docs/docusaurus/. Content is preserved in git
history and mirrored in versioned_docs/version-v3.3/.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Triggers on push to release/3.4 when docs/docusaurus/** changes.
Builds the Docusaurus site and deploys to gh-pages branch via
peaceiris/actions-gh-pages with custom domain docs.erigon.tech.

Also adds static/CNAME so the custom domain is always present in
the build output.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@bloxster bloxster requested a review from mriccobene as a code owner April 28, 2026 14:39
@bloxster bloxster added the docs label Apr 28, 2026
bloxster and others added 5 commits April 28, 2026 16:42
Switch from peaceiris/actions-gh-pages to the official GitHub Pages
Actions flow (upload-pages-artifact + deploy-pages) to match the
erigon-website deploy workflow. Split into build/deploy jobs with
pages: write + id-token: write permissions.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… limits

Expand --rpc.logs.maxresults entry with affected methods, 0=unlimited note,
and interaction with --rpc.blockrange.limit. Add :::note callouts to
erigon_getLogs and erigon_getLatestLogs referencing the cap.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- contributing.md: update repo from erigontech/docs → erigontech/erigon,
  fix clone path and PR target branch to release/3.4
- v3.3 gnosis-with-external-cl: replace GitBook JWT link with relative path
- v3.3 configuring-erigon: replace GitBook supported-networks with relative path
- erigon.md (v3.4): fix #--rpclogs anchor → #rpc--api (heading-based ID)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
bloxster and others added 8 commits April 28, 2026 18:40
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…guration → gear

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…n index

With baseUrl='/docs/', absolute paths must not include /docs/ themselves —
Docusaurus prepends it automatically. All namespace links and the RPC daemon
link were resolving to /docs/docs/... causing 404s.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Split two-step commands onto separate lines with <br/>, wrap all commands
and flags in backticks for code formatting.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Strip /docs/ prefix from absolute links (baseUrl already prepends it)
- Remove .md extensions from same-page anchors (Docusaurus uses extensionless URLs)
- Fix /staking/caplin links in easy-nodes guides

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Replace "View on …" link labels with bare URLs in eth, engine, web3, net pages
- Remove standalone duplicate links in ots and graphql pages
- Remove two redundant standalone links from interacting-with-erigon index
- Delete 6 unused static assets (otter, shutter-icon, shutter.png, logo.svg)
- Update Caplin card icon to radio/beacon signal (v3.4 + v3.3)
- Update DESIGN-SPEC to reflect current asset inventory

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

@yperbasis yperbasis 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.

Issues

Configuration

  1. CNAME ↔ url / baseUrl mismatch (likely a real problem)
  • docs/site/static/CNAME → docs.erigon.tech
  • docs/site/docusaurus.config.ts → url: 'https://erigontech.github.io', baseUrl: '/docs/'
  • The site is served at docs.erigon.tech/..., but Docusaurus will emit canonical URLs, OG tags, sitemap entries, and absolute internal hrefs as erigontech.github.io/docs/.... SEO
    indexers and social card scrapers will get the wrong host. Either set url: 'https://docs.erigon.tech' and baseUrl: '/', or remove the CNAME if erigontech.github.io/docs/ is genuinely
    the target.
  1. Dead workflow file: docs/site/.github/workflows/deploy.yml
  • GitHub Actions only reads workflows from .github/workflows/ at the repository root. This nested copy will never run. It also still targets main and lacks working-directory:
    docs/site, so even if it did run it would fail. Delete it — the live workflow is .github/workflows/docs-deploy.yml.
  1. onBrokenLinks: 'warn' (and onBrokenMarkdownLinks: 'warn')
  • The PR description notes 4 known broken anchors in v3.3 source. With 'warn', future regressions in v3.4 will silently slip through. Suggest fixing the four v3.3 anchors and
    switching both to 'throw' so the deploy workflow actually fails on broken links. This is the standard Docusaurus posture.

Code duplication

  1. Two NotFound implementations
  • docs/site/src/theme/NotFound.tsx (full Layout-wrapped page, 86 lines)
  • docs/site/src/theme/NotFound/Content/index.tsx (content-only swizzle, 73 lines)

Both define the same cards array and render identical content. Docusaurus will pick whichever swizzle target it resolves first; the other becomes confusing dead code that drifts on
future edits. Pick one — NotFound/Content/index.tsx is the recommended modern swizzle target — and delete the other.

DESIGN-SPEC ↔ implementation drift

  1. docs/site/DESIGN-SPEC.md claims Mermaid + webpackbar, but the implementation has neither
  • Spec says: markdown: { mermaid: true }, themes: ['@docusaurus/theme-mermaid']. Config has neither, and @docusaurus/theme-mermaid is not in package.json.
  • Spec lists webpackbar: ^5.0.2. Not in package.json.

The spec doc points at https://github.com/erigontech/erigon-documents/.../docusaurus-design-spec.md as authoritative. If those features were intentionally dropped for the in-tree
site, update DESIGN-SPEC accordingly so future maintainers don't think they're broken; otherwise wire them up.

  1. docs/site/README.md is unmodified Docusaurus boilerplate
  • Uses yarn commands; the workflow and package-lock.json use npm. Replace with npm-based instructions or document both. Also remove the USE_SSH=true yarn deploy and GIT_USER=...
    instructions — deployment is via the GH Actions workflow, not manual yarn deploy.

Versioning / content

  1. Hardcoded 3.4.x placeholders in installation tables
  • The original GitBook used space.vars.version. Replacement is literal 3.4.x strings. Each minor release will require manual sweeping of the tree. Consider a customFields.version in
    docusaurus.config.ts plus a small component, or a build-time npm run build -- --version=3.4.5 injection. Not a blocker, but flag for follow-up.
  1. versions.json and lastVersion
  • Spec says lastVersion: 'current'. Matches the config. Good. v3.3 archive label and v3.4 current label render correctly per the test plan.

Minor

  1. Inline raw-HTML SVGs in navbar (docusaurus.config.ts)
  1. go(id) smooth-scroll helper in get-started/installation/index.mdx
  • Defined as an MDX export const go = (id) => { ... } and invoked from onClick. Safe because it only runs client-side, but setTimeout(..., 300) to wait for
    Details to open is
    fragile. A requestAnimationFrame chain or el.addEventListener('toggle', ..., {once:true}) would be more robust. Keyboard users opening details with Enter won't trigger the scroll
    either. Low priority.
  1. TypeScript ~6.0.2
  • Worth confirming this is a real published version your toolchain supports (the tilde pin will accept 6.0.x but not 6.1+). Combined with "ignoreDeprecations": "6.0" in tsconfig.json
    it suggests intent. Just sanity-check the build environment matches — if a pre-release was pulled in, pin exactly.

Process

  1. Direct PR to release/3.4 rather than forward-port from main
  • Per CLAUDE.md, release-branch PRs are usually backports prefixed [r3.4]. This PR is a feature landing on release/3.4 directly because the deploy workflow is gated to that branch.
    That's defensible, but it means main does not contain the migration. When main is next reconciled with release/3.4, expect a sizable merge surface. Consider whether a parallel PR to
    main (with the same docs and workflow gated to whichever branch is deploy-source on main, or a no-op) is needed to keep branches from diverging.

Risks

  • No production-code changes, so risk to the binary is zero. Concern is entirely:
    • Deploy correctness (CNAME/URL mismatch → wrong canonical URLs in search results until fixed)
    • Maintenance debt (dead workflow file, duplicated NotFound, stale README, drift between DESIGN-SPEC and config)

Recommendation

Approve with the following fixes before merge:

  1. Resolve CNAME vs url/baseUrl (real bug).
  2. Delete docs/site/.github/workflows/deploy.yml (dead file).
  3. Pick one NotFound implementation and delete the other.
  4. Update docs/site/README.md to reflect npm-based workflow.
  5. Reconcile DESIGN-SPEC.md with the actual config (Mermaid, webpackbar) — either drop from spec or add to config + package.json.
  6. Decide on onBrokenLinks: 'throw' once the four v3.3 anchors are fixed (can be a follow-up).

The remaining items (version placeholders, a11y on navbar HTML items, scroll helper robustness, branch strategy) are reasonable follow-ups, not blockers.

bloxster and others added 6 commits April 28, 2026 21:42
- Fix CNAME/url mismatch: url → https://docs.erigon.tech, baseUrl → /
- Delete dead docs/site/.github/workflows/deploy.yml (never ran)
- Delete redundant NotFound.tsx; keep NotFound/Content/index.tsx (modern swizzle target)
- Rewrite README.md with npm-based instructions, remove yarn deploy
- Update DESIGN-SPEC.md: remove webpackbar and Mermaid (not implemented), sync url/baseUrl

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Strip /docs/ baseUrl prefix from all absolute links and img paths in
  v3.3 versioned docs and current docs (side-effect of CNAME/baseUrl fix)
- Fix ../supported-networks → ../fundamentals/supported-networks in
  configuring-erigon (URL resolution quirk for directory-index pages)
- Remove GitBook footnote artifacts [5]/[6] with dead #0-4/#0-5 anchors
- Split ethereum-with-an-external-cl into two sections so
  #erigon-with-lighthouse-as-the-external-cl anchor exists
- Add ## The Default Block Parameter section to trace.md
- Switch onBrokenLinks and onBrokenMarkdownLinks to 'throw' — build
  now fails hard on any future broken link regression

Build passes cleanly with throw mode.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Deleting NotFound.tsx left src/theme/NotFound/ as a directory with only
Content/ inside. Docusaurus resolves @theme/NotFound by looking for
NotFound/index.tsx and found nothing, causing a build error.

Add NotFound/index.tsx as the proper modern wrapper: it handles
PageMetadata + Layout and delegates the body to <NotFoundContent />.
This is the recommended two-file swizzle pattern (wrapper + content).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- docusaurus.config.ts is now async — fetches the latest stable release
  from GitHub API (repos/erigontech/erigon/releases/latest) at build time
  and stores it in customFields.latestVersion; falls back to '3.4.x' if
  the network is unavailable
- src/remark/version-replace.js — remark plugin that replaces
  {ERIGON_VERSION} tokens in all text, inlineCode, and code AST nodes
- src/components/Version.tsx — React component for explicit MDX use,
  reads latestVersion from siteConfig.customFields
- Replace all hardcoded 3.4.x and v3.2.2 strings across 5 doc files
  with {ERIGON_VERSION} token; the remark plugin resolves them at build
- Also fix issue #9: add aria-label to Blog and Release Notes navbar buttons

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- installation/index.mdx: replace setTimeout(300) scroll with toggle
  event listener so <details> is fully open before scrollIntoView (#10)
- docusaurus.config.ts: add aria-label to Blog and Release Notes navbar
  buttons (#9); fetch v3.3 latest via releases?per_page=50 filter and
  pass both currentVersion + v33Version to versionReplace plugin
- src/remark/version-replace.js: detect version-v3.3 path via vfile.path
  and substitute v33Version; current docs get currentVersion
- package.json: pin typescript to exact 6.0.3 (was ~6.0.2) (#11)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- remark plugin: handle mdxTextExpression nodes so {ERIGON_VERSION} in
  plain MDX text is replaced before JSX evaluation (fixes runtime crash)
- installation/index.mdx + v3.3/installation/index.md: version in
  sentence and table now plain text (no backtick code style); added v
  prefix; fixed amd64v2 filename (missing linux_)
- Basic Usage: merged dangling bullet into inline link in sentence text;
  fixed broken URL in v3.3 (stray space in / v3.3/fundamentals/...)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@bloxster

Copy link
Copy Markdown
Collaborator Author

Thanks @yperbasis — all issues addressed. Here's the full status:

# Issue Status
1 CNAME ↔ url/baseUrl mismatch ✅ Fixed — url: 'https://docs.erigon.tech', baseUrl: '/'
2 Dead workflow docs/site/.github/workflows/deploy.yml ✅ Fixed — file deleted
3 onBrokenLinks: 'warn' — should be 'throw' ✅ Fixed — switched to 'throw' after fixing all 4 broken v3.3 anchors
4 Two NotFound implementations (duplicate) ✅ Fixed — deleted NotFound.tsx, kept NotFound/Content/index.tsx, added proper NotFound/index.tsx wrapper
5 DESIGN-SPEC drift — webpackbar + Mermaid ✅ Fixed — removed both from DESIGN-SPEC.md
6 README.md is yarn-based boilerplate ✅ Fixed — rewritten with npm commands, no yarn deploy
7 Hardcoded 3.4.x version placeholders ✅ Fixed — customFields.latestVersion + remark plugin fetches latest version from GitHub API at build time; v3.3 versioned docs get the latest v3.3.x separately
8 versions.json and lastVersion ✅ Already correct, no change needed
9 Navbar HTML items missing aria-label ✅ Fixed — added aria-label="Blog" and aria-label="Release Notes"
10 go(id) scroll uses fragile setTimeout(300) ✅ Fixed — replaced with toggle event listener
11 TypeScript ~6.0.2 tilde pin ✅ Fixed — pinned to exact 6.0.3
12 Direct PR to release/3.4 rather than forward-port from main ℹ️ Acknowledged — once this PR is merged, main will be updated to keep branches in sync

@yperbasis yperbasis 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.

Remaining issues

  • Unauthenticated GitHub API calls during build. fetchLatestVersion and fetchLatestV33Version in docusaurus.config.ts:7-34 hit api.github.com without a token (60 req/hr per IP). On
    shared CI runners this can rate-limit silently and fall back to hardcoded '3.4.x' / '3.3.10' — the deployed site quietly displays a stale version. Forward the workflow's GITHUB_TOKEN
    via env: and add Authorization: \Bearer ${process.env.GITHUB_TOKEN}`` when present.
  • @docusaurus/faster installed but never enabled. It's a dependency in package.json:19 but docusaurus.config.ts has no future.experimental_faster (or its renamed flag) — so the
    package adds install footprint without being used. Either enable it or drop it.

Code quality

  • Dead import. docs/site/src/theme/Footer/index.tsx:2 imports Link from @docusaurus/Link; only native tags are used in the file. (IconLinkedIn matches the grep but isn't Link.)
    Remove.
  • Inline styles duplicating CSS. Footer/index.tsx and NotFound/Content/index.tsx use large inline style={{...}} blocks even though custom.css already defines reusable classes
    (.lp-card, .card-404, .button-404-*). Inline styles bloat HTML, are harder to theme via CSS variables, and won't share light/dark behaviour with the rest of the site. Refactor to
    classes — non-blocking, but the existing CSS module already has the patterns.
  • External font CDN dependency. custom.css:8-9 pulls Google Fonts and fonts.cdnfonts.com. Google Fonts has well-known GDPR/privacy considerations (e.g. German court rulings);
    fonts.cdnfonts.com is third-party and less audited. For an official corporate doc site, self-hosting woff2 from static/fonts/ is a more defensible default.
  • version-replace heuristic is path-substring. src/remark/version-replace.js:29 does vfile.path.includes('version-v3.3'). A path-segment match (e.g. split on / and look for
    version-v3.3 as a directory token) would be more robust if the substring ever appears in an unrelated filename.
  • Hardcoded version fallbacks go stale silently. Returning literal '3.3.10' / '3.4.x' on API failure means the docs may display a wrong but plausible-looking version. Consider
    returning 'latest' or similar so staleness is visually obvious.

Content / migration leftovers

  • GitBook HTML table artifact still present in v3.3: docs/site/versioned_docs/version-v3.3/fundamentals/modules/rpc-daemon.md:13 retains a giant ...

    with </
    entities. The PR description claims these were removed; this one slipped through. The corresponding current-version page
    (docs/site/docs/fundamentals/modules/rpc-daemon.md) is properly converted to markdown.
  • DESIGN-SPEC drift. docs/site/DESIGN-SPEC.md:37-38 and the migration checklist at line 550 specify onBrokenLinks: 'warn', but the actual docusaurus.config.ts:51-52 uses 'throw'
    (which is the better choice). Either update the spec to match — or, since the doc says the canonical copy lives at erigontech/erigon-documents/.../docusaurus-design-spec.md, drop the
    in-repo copy entirely to prevent future drift.
  • onBrokenAnchors not set explicitly. Default in Docusaurus 3 is 'warn', which matches the PR's note about 4 pre-existing broken anchors in v3.3. Once those are repaired, set
    onBrokenAnchors: 'throw' to match the strictness used for links.
  • The "stray --- separators" mentioned in the PR description still appear in overlay.md, parity.md, and why-using-erigon.mdx, but on inspection they're legitimate
    section
    dividers — not the double-title bug. No action needed.

bloxster and others added 7 commits April 29, 2026 09:28
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…les, table, version path

- Remove @docusaurus/faster dependency (not needed, adds complexity)
- Add GITHUB_TOKEN to docs-deploy build step for authenticated API calls
- Add githubHeaders() helper with conditional Authorization; fallback 'latest'
- Add onBrokenAnchors: 'throw' to catch anchor mismatches at build time
- Fix version-replace.js path check: .includes → .split('/').includes
- Remove dead Link import from Footer/index.tsx
- Refactor NotFound inline styles to CSS classes in custom.css
- Convert HTML <table> in v3.3 rpc-daemon.md to markdown table

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace the static --help output block in both v3.4 and v3.3 with a
:::tip admonition pointing users to run the command themselves.
Also fix stale #options anchor in v3.3 default-ports.md.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Remove @docusaurus/faster (dropped from package.json)
- Fix onBrokenLinks/onBrokenMarkdownLinks/onBrokenAnchors to 'throw'
- Fix NotFound swizzle path (index.tsx, not NotFound.tsx)
- Fix deployment section: correct workflow file, branch, and target URL
- Update migration checklist: remove webpackbar/faster/mermaid, fix paths
- Remove Versioning from "Not Used" (v3.3 is now versioned)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@bloxster

Copy link
Copy Markdown
Collaborator Author

Review issues addressed

# Issue Status
1 CNAME ↔ url/baseUrl mismatch — url: 'https://docs.erigon.tech', baseUrl: '/' ✅ Fixed
2 Delete dead workflow docs/site/.github/workflows/deploy.yml ✅ Fixed
3 onBrokenLinks / onBrokenMarkdownLinks'throw'; added onBrokenAnchors: 'throw' ✅ Fixed
4 Duplicate NotFound.tsx — deleted, keeping NotFound/index.tsx + NotFound/Content/index.tsx ✅ Fixed
5 Update README.md — npm commands, references correct workflow ✅ Fixed
6 Reconcile DESIGN-SPEC.md — removed @docusaurus/faster, fixed broken/anchor settings, corrected NotFound paths, fixed deployment section, updated migration checklist ✅ Fixed
7 Unauthenticated GitHub API calls — added githubHeaders() with conditional Authorization, forwarded GITHUB_TOKEN in CI ✅ Fixed
8 @docusaurus/faster installed but not enabled — removed from package.json ✅ Fixed
9 Dead Link import in Footer/index.tsx ✅ Fixed
10 Inline styles in NotFound/Content/index.tsx — refactored to CSS classes ✅ Fixed
11 version-replace.js path substring match — changed to split('/').includes(...) ✅ Fixed
12 Hardcoded version fallbacks ('3.4.x', '3.3.10') — changed to 'latest' ✅ Fixed
13 GitBook HTML <table> artifact in v3.3 rpc-daemon.md ✅ Fixed

@bloxster bloxster merged commit 61e34fa into release/3.4 Apr 29, 2026
21 checks passed
@bloxster bloxster deleted the docs/docusaurus-migration branch April 29, 2026 09:19
pull Bot pushed a commit to Dustin4444/erigon that referenced this pull request May 13, 2026
## Summary

Brings the full `docs/site/` Docusaurus tree into `main`, incorporating
all documentation improvements developed against `release/3.4`.

**Scope:** `docs/site/**` + root `llms.txt` / `llms-full.txt` + removal
of superseded `docs/gitbook/` and `docs/gitbook-help/`. No changes to
Go, proto, or any non-docs source files.

### Included — merged to release/3.4

| PR | What |
|----|------|
| [erigontech#20883](erigontech#20883) | Docusaurus
v3 migration — full `docs/site/` tree, Docusaurus config, versioned v3.3
snapshot |
| [erigontech#20263](erigontech#20263) /
[erigontech#20264](erigontech#20264) | All v3.3
docs ported; branch/versioning convention established |
| [erigontech#20978](erigontech#20978) | Mobile
footer fix, SEO meta tags, OG image |
| [erigontech#20991](erigontech#20991) | Self-host
brand fonts (remove Google Fonts / CDN) |
| [erigontech#21000](erigontech#21000) | `llms.txt`
/ `llms-full.txt` generator script + root artifacts |
| [erigontech#21018](erigontech#21018) | May 2026
w19 maintenance — stale flags, broken links, accuracy fixes |
| [erigontech#21045](erigontech#21045) | CI:
docs-only path filter (skip Go jobs, run docs-site build) |
| [erigontech#21063](erigontech#21063) | `trace`
response fields reference + sync-monitoring guidance |
| [erigontech#21074](erigontech#21074) | Regenerate
`llms.txt` after sync-modes update |
| [erigontech#20997](erigontech#20997) | Brand font
consistency fix, installation page UX |

### Included — pending review on release/3.4

| PR | What |
|----|------|
| [erigontech#21030](erigontech#21030) | Automated
disk size pipeline: `update-disk-sizes.py`, `disk-sizes.json`,
`hardware-requirements.mdx` JSX fix, `generate-llms.py` `—` fallback,
unit tests |
| [erigontech#21129](erigontech#21129) | May 2026
w20 maintenance — `--caplin.nat`, `--caplin.columns-keep-slots`, RPC
subscription defaults, `nat.md` Caplin section, log.dir.verbosity
default |

### What changes on `main`

- `docs/site/` added (full Docusaurus tree, current v3.4 + frozen v3.3
snapshot)
- `docs/gitbook/` and `docs/gitbook-help/` removed (superseded by
Docusaurus)
- Root `llms.txt` and `llms-full.txt` updated to Docusaurus-generated
versions

> ⚠️ This PR does **not** remove `docs/gitbook/` yet — that cleanup will
be a separate commit once this PR is reviewed and approved.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Bloxster <bloxster@proton.me>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: lupin012 <58134934+lupin012@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants