Skip to content

docs: add global Releases page (mirrors curated GitHub Releases) - #2760

Draft
mfal wants to merge 17 commits into
mainfrom
claude/flow-releases-docs-handoff-f1cbc4
Draft

docs: add global Releases page (mirrors curated GitHub Releases)#2760
mfal wants to merge 17 commits into
mainfrom
claude/flow-releases-docs-handoff-f1cbc4

Conversation

@mfal

@mfal mfal commented Jul 30, 2026

Copy link
Copy Markdown
Member

Caution

🚨 TEMPORARY — keep for review, remove before the 1.0 release:
.github/workflows/build-previews.yml passes RELEASES_USE_DUMMY=1 to the
docs preview build so this PR's Releases layout is testable with dummy data.
This intentionally stays while the page is under review. It must be
removed before the 1.0 release (once real release data exists and the page
goes live) — left in permanently, every docs PR preview would render dummy
Releases data. Production (deploy-main.yml) is unaffected meanwhile. See the
banner comment at that line.

What

Adds the global Releases page to the docs site (/releases), a
reverse-chronological timeline of Minor/Major releases — implementing the
approved design in #2720 (variant C: entry list + TOC).

Because real 1.0-era stable releases do not exist yet (all published releases
are -alpha.* prereleases, which the design filters out), the page is driven
by a build-time-switchable data source so the layout can be reviewed/demoed
now and flipped to live data later.

How

  • Route: bespoke server component apps/docs/src/app/releases/page.tsx
    (static export; data fetched at build time) + a minimal
    src/content/releases/index.mdx stub for nav/search/metadata.
  • Data layer (src/lib/releases/): getReleases() reads the
    RELEASES_USE_DUMMY env var — set (=1) → dummy fixture that exercises
    every layout branch; unset (default) → live fetch of the public GitHub
    Releases API (filters prereleases/-next.*, groups patch fixes under their
    minor line, extracts per-commit URLs). A failed live fetch degrades to an
    empty-state placeholder — it never fails the build.
  • Placement without renumbering: "Releases" is placed second in the header
    nav via an explicit order in Groups.tsx (+ the search default sections) —
    existing 02-foundations/03-patterns/04-components folders and all their
    URLs are untouched (no mass content-link rewrite, no broken URLs).
  • Card layout (variant C): all releases in one LayoutCard; a page heading
    plus each release live in their own Section, so separators appear
    automatically. Per release: 1.1.0 Minor – <title> heading → a small
    hyphen-separated meta subline (date - npm - GitHub Release) → highlights →
    curated markdown body/migration notes → flat "Fixes" bullets in the form
    version – text (#commit). On-this-page TOC via AnchorNavigation
    (version + date).

Release-note content is English (mirrors the canonical GitHub Release text);
surrounding UI chrome is German, matching the docs site.

Reviewing this PR

Run the docs with the dummy dataset to see the populated layout:

RELEASES_USE_DUMMY=1 pnpm nx dev docs

Without the flag the page renders the empty state (0 stable releases today).

Verification

  • Live (default) and dummy static builds both succeed (pnpm nx build docs);
    the exported page is the empty state / full timeline respectively.
  • tsc and prettier --check clean on all touched files.
  • Manual browser check: variant-C layout, header nav order, TOC scroll-spy, and
    the search default view all render correctly.

Follow-ups (intentionally out of scope)

  • Rich per-release search indexing (currently a single stub search entry).
  • Validating the live fix-line parser against the first real 1.0-era release
    changelog (the transform is implemented against the dummy shape and this
    repo's changelog format, but no stable release exists yet to confirm end to
    end).

Draft until the 1.0 cut produces real release data; the page structure and the
dummy-driven layout are ready for review now.

Closes #2720.

🤖 Generated with Claude Code

mfal and others added 10 commits July 30, 2026 14:03
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The cards column collapsed to min-content because it lacked flex-grow/
min-width:0 next to the fixed-width AnchorNavigation sibling, wrapping the
version and title one character per line. Add a .timeline class mirroring the
layout's main-column behaviour.
The populated page previously started at h2 (release version); add a page
h1 "Releases" so the heading hierarchy is well-formed and consistent with
the empty state.
@github-actions

github-actions Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Coverage Report for ./packages/components/

Status Category Percentage Covered / Total
🔵 Lines 82.37% 430 / 522
🔵 Statements 82.36% 439 / 533
🔵 Functions 84.4% 92 / 109
🔵 Branches 71.17% 200 / 281
File CoverageNo changed files found.
Generated in workflow #5920 for commit 3b86f3d by the Vitest Coverage Report Action

@github-actions

Copy link
Copy Markdown
Contributor

🚀 Preview Deployment

Preview environments are ready:

Type URL
docs pr-2760.docs.review.flow-components.de
storybook pr-2760.storybook.review.flow-components.de

Images:

  • docs: ghcr.io/mittwald/flow/docs:pr-2760
  • storybook: ghcr.io/mittwald/flow/storybook:pr-2760

mfal added 2 commits July 30, 2026 15:58
Adds a build-time RELEASES_USE_DUMMY arg (default empty) to the docs image and
sets it to 1 for the docs preview only, so PR #2760's review environment shows
the populated Releases layout. Production (deploy-main) passes no such arg and
stays on live/empty-state data. Revert the build-previews.yml line before merge.
…late

Rewrite the dummy body prose to match .claude/templates/release-notes.md:
per-feature "## " sections, Deprecations (minor) and Migrations (major)
sections, PR links, and grounded code examples — no Fixes section (fixes are
surfaced per patch version).
…d entries

- All releases in a single LayoutCard; header and each release are their own
  Section, so separators appear automatically (no manual Separator).
- Merge the release title into the heading ("1.1.0 – …"), drop the latest badge.
- English date; npm/GitHub links as one small meta subline, hyphen-separated.
- Flatten fixes into "version – text (#sha)" bullets (no per-date grouping).
- TOC entries show version + date.
…ible to miss

The build-args line that feeds dummy Releases data into the docs PR preview
must be removed before this PR merges. Wrap it in a loud banner comment and
an inline marker so it is not overlooked at merge time.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@Jan-Eimertenbrink

Copy link
Copy Markdown
Member

Since the date is now displayed in the small text size, the links to npm and GitHub Releases could also use the small link size. This would create a much cleaner appearance.

Match the small date text in the release meta subline by rendering the npm
and GitHub Release links with size="s" for a cleaner, consistent line.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@mfal

mfal commented Jul 31, 2026

Copy link
Copy Markdown
Member Author

Done in 0c5d6f6 — the npm and GitHub Release links now render with size="s", matching the small date text in the meta subline.

🤖 Addressed by Claude Code

mfal and others added 2 commits July 31, 2026 11:33
The RELEASES_USE_DUMMY=1 preview build-arg intentionally stays while the
Releases page is under review, so the layout remains testable before real
release data exists. Reword the banner and inline marker so they say it must
be removed before the 1.0 release (not before merge).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…MY build-arg

build-args uses a literal block scalar (|), so a trailing '# ...' is NOT a
YAML comment — it becomes part of the value. The docs build-arg was thus
'RELEASES_USE_DUMMY=1 # 🚨 ...', so process.env.RELEASES_USE_DUMMY !== '1',
the page fell back to the live fetch and rendered the empty state in the
preview. Drop the inline marker; the banner comment above build-args (real
YAML comments) already documents the switch.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@mfal mfal added 1.0 Must be done before releasing 1.0 post-1.0 Does not block the 1.0.0 cut — lands after 1.0.0 labels Jul 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

1.0 Must be done before releasing 1.0 post-1.0 Does not block the 1.0.0 cut — lands after 1.0.0

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Docs: global Releases page (mirrors curated GitHub Releases)

2 participants