docs icon indicating copy to clipboard operation
docs copied to clipboard

feat: idea - host celestia-node/core/app release notes each in a single page so they are queryable from the docs

Open jcstein opened this issue 3 months ago • 0 comments

✨ Feature Proposal: Host release notes as individual pages in docs

Summary

Create one Markdown page per release for both celestia-node and celestia-app, and host them under the VitePress docs site so they’re fully searchable and linkable.

🧭 Goals • Import every celestia-node GitHub release into a dedicated docs/releases/node/.md file. • Split celestia-app/docs/release-notes/release-notes.md into one file per version at docs/releases/app/.md. • Add frontmatter for search metadata (title, version, release date, source URL). • Expose pages to VitePress search (MiniSearch or Algolia DocSearch). • Automate generation via a Node script + CI.

🧱 Content structure

docs/
└─ releases/
   ├─ node/
   │  ├─ v0.26.4.md
   │  └─ ...
   └─ app/
      ├─ v6.0.2.md
      └─ ...

Each page:

---
title: "celestia-node v0.26.4"
description: "Release notes for celestia-node v0.26.4"
product: "celestia-node"
version: "v0.26.4"
released: "2025-02-18"
source:
  type: "github-release"
  url: "https://github.com/celestiaorg/celestia-node/releases/tag/v0.26.4"
---

Followed by the release body in Markdown.

⚙️ Implementation

  1. Script: scripts/generate-release-pages.ts • Fetch celestia-node releases via GitHub API (/repos/celestiaorg/celestia-node/releases). • Read and split celestia-app/docs/release-notes/release-notes.md by headings (## vX.Y.Z). • Emit per-version .md files with frontmatter. • Optionally generate index pages + manifest JSON.

  2. CI (GitHub Actions)

on:
  release:
    types: [published]
  workflow_dispatch:
  schedule:
    - cron: '0 6 * * *'

jobs:
  generate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with: { node-version: 18 }
      - run: npm ci
      - run: node scripts/generate-release-pages.ts --node --app
      - run: npm run build # sanity check
      - name: Commit changes
        run: |
          git config user.name "release-bot"
          git config user.email "[email protected]"
          git add docs/releases
          git commit -m "chore: update release pages"
          git push
  1. VitePress Config (.vitepress/config.ts)
export default defineConfig({
  themeConfig: {
    search: { provider: 'local' }, // or Algolia
    sidebar: {
      '/releases/': [
        { text: 'celestia-node', link: '/releases/node/' },
        { text: 'celestia-app', link: '/releases/app/' }
      ]
    }
  }
})

Add simple index pages listing all versions.

🚀 Benefits • Searchable, linkable release notes inside the docs. • Easier navigation per version. • Automatic updates via CI.

🧩 Nice-to-haves • “Latest release” badge on docs home. • Changelog diff links (compare/vX...vY). • Manifest JSON for embedding release data in other pages.

🧪 Next Steps • Approve content model & directory structure • Implement generate-release-pages.ts • Add CI workflow • Wire sidebar + search • Backfill existing releases

jcstein avatar Sep 26 '25 14:09 jcstein