feat: add release notes to docs and in-app#1816
Open
paustint wants to merge 1 commit into
Open
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR introduces a release-notes pipeline that publishes user-facing release notes on the docs site and powers an in-app “What’s new” popover, plus supporting release tooling to generate/validate the shared release-notes dataset.
Changes:
- Add a new
@jetstream/release-noteslibrary (types + filtering utilities + generated JSON data) and wire app builds to generate the dataset. - Add release tooling scripts to gather merged PR context and generate validated JSON from MDX frontmatter.
- Add docs-site release-notes blog (Docusaurus plugin) and an in-app “What’s new” popover fed by the generated release-notes data.
Reviewed changes
Copilot reviewed 130 out of 132 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| tsconfig.base.json | Adds path alias for the new @jetstream/release-notes library. |
| scripts/release.mjs | Adds a non-blocking pre-release reminder to ensure a matching release note exists. |
| scripts/release-preview.mjs | Refactors git-history logic to shared helpers. |
| scripts/release-notes-context.mjs | New script to output a merged-PR digest for drafting release notes. |
| scripts/new-release-note.mjs | New scaffolder to create a starter MDX release-note file. |
| scripts/lib/gather-prs.mjs | New shared helper for tag fetching + PR/commit gathering. |
| scripts/generate-release-notes.ts | New generator/validator to produce release-notes.generated.json from MDX frontmatter. |
| package.json | Adds scripts for release-notes context + generation and adds gray-matter. |
| libs/shared/ui-core/src/index.ts | Documents why the “What’s new” popover is intentionally not re-exported (to preserve code-splitting). |
| libs/shared/ui-core/src/app/HeaderWhatsNewPopover.tsx | New lazy-loaded in-app release-notes popover UI. |
| libs/shared/ui-core/src/app/HeaderNavbar.tsx | Integrates the popover into the header with lazy loading. |
| libs/shared/ui-core/src/app/tests/HeaderWhatsNewPopover.spec.tsx | Adds UI-level tests for the new popover. |
| libs/release-notes/vite.config.ts | Adds Vitest config for the new release-notes library. |
| libs/release-notes/tsconfig.spec.json | Adds TS config for tests in the new library. |
| libs/release-notes/tsconfig.lib.json | Adds TS config for library build, including JSON module support. |
| libs/release-notes/tsconfig.json | Adds TS project references for lib/spec builds. |
| libs/release-notes/src/lib/release-notes.types.ts | Introduces Zod schema/types for release-note frontmatter and runtime consumption. |
| libs/release-notes/src/lib/release-notes.data.ts | Exposes generated release-notes JSON as typed runtime data. |
| libs/release-notes/src/lib/release-notes-utils.ts | Adds filtering/sorting helpers for platform-visible release notes. |
| libs/release-notes/src/lib/tests/release-notes-utils.test.ts | Adds unit tests for release-notes visibility/count utilities. |
| libs/release-notes/src/index.ts | Exports types, utils, and generated data from the new library. |
| libs/release-notes/project.json | Adds Nx target to generate the release-notes dataset before builds. |
| libs/release-notes/eslint.config.js | Adds eslint config for the new library. |
| CONTRIBUTING.md | Documents the release-notes authoring workflow and release-time expectations. |
| apps/jetstream/project.json | Ensures the web app build depends on generating release-notes data. |
| apps/jetstream-web-extension/project.json | Ensures the extension build depends on generating release-notes data. |
| apps/jetstream-desktop-client/project.json | Ensures the desktop client build depends on generating release-notes data. |
| apps/docs/sidebars.ts | Adds “Release Notes” to the docs sidebar. |
| apps/docs/docusaurus.config.ts | Adds a dedicated Docusaurus blog instance for release notes and surfaces it in the navbar. |
| apps/docs/release-notes/_DOC_AUDIT.md | Adds an internal docs-staleness audit file (prefixed to be ignored by Docusaurus). |
| apps/docs/release-notes/2026-06-21-v10.3.1.mdx | Adds release note content (v10.3.1). |
| apps/docs/release-notes/2026-06-21-v10.3.0.mdx | Adds release note content (v10.3.0). |
| apps/docs/release-notes/2026-06-20-v10.2.0.mdx | Adds release note content (v10.2.0). |
| apps/docs/release-notes/2026-06-18-v10.1.3.mdx | Adds release note content (v10.1.3). |
| apps/docs/release-notes/2026-06-14-v10.1.2.mdx | Adds release note content (v10.1.2). |
| apps/docs/release-notes/2026-06-14-v10.1.1.mdx | Adds release note content (v10.1.1). |
| apps/docs/release-notes/2026-06-13-v10.1.0.mdx | Adds release note content (v10.1.0). |
| apps/docs/release-notes/2026-06-10-v10.0.1.mdx | Adds release note content (v10.0.1). |
| apps/docs/release-notes/2026-06-10-v10.0.0.mdx | Adds release note content (v10.0.0). |
| apps/docs/release-notes/2026-06-05-v9.19.2.mdx | Adds release note content (v9.19.2). |
| apps/docs/release-notes/2026-06-02-v9.19.1.mdx | Adds release note content (v9.19.1). |
| apps/docs/release-notes/2026-05-30-v9.19.0.mdx | Adds release note content (v9.19.0). |
| apps/docs/release-notes/2026-05-27-v9.18.1.mdx | Adds release note content (v9.18.1). |
| apps/docs/release-notes/2026-05-22-v9.18.0.mdx | Adds release note content (v9.18.0). |
| apps/docs/release-notes/2026-05-21-v9.17.2.mdx | Adds release note content (v9.17.2). |
| apps/docs/release-notes/2026-05-16-v9.17.1.mdx | Adds release note content (v9.17.1). |
| apps/docs/release-notes/2026-05-15-v9.17.0.mdx | Adds release note content (v9.17.0). |
| apps/docs/release-notes/2026-05-07-v9.16.0.mdx | Adds release note content (v9.16.0). |
| apps/docs/release-notes/2026-04-23-v9.15.2.mdx | Adds release note content (v9.15.2). |
| apps/docs/release-notes/2026-04-22-v9.15.1.mdx | Adds release note content (v9.15.1). |
| apps/docs/release-notes/2026-04-21-v9.15.0.mdx | Adds release note content (v9.15.0). |
| apps/docs/release-notes/2026-04-19-v9.14.0.mdx | Adds release note content (v9.14.0). |
| apps/docs/release-notes/2026-04-19-v9.13.0.mdx | Adds release note content (v9.13.0). |
| apps/docs/release-notes/2026-04-14-v9.12.1.mdx | Adds release note content (v9.12.1). |
| apps/docs/release-notes/2026-04-14-v9.12.0.mdx | Adds release note content (v9.12.0). |
| apps/docs/release-notes/2026-04-11-v9.11.0.mdx | Adds release note content (v9.11.0). |
| apps/docs/release-notes/2026-04-08-v9.10.0.mdx | Adds release note content (v9.10.0). |
| apps/docs/release-notes/2026-04-05-v9.9.1.mdx | Adds release note content (v9.9.1). |
| apps/docs/release-notes/2026-04-04-v9.9.0.mdx | Adds release note content (v9.9.0). |
| apps/docs/release-notes/2026-04-04-v9.8.1.mdx | Adds release note content (v9.8.1). |
| apps/docs/release-notes/2026-04-03-v9.8.0.mdx | Adds release note content (v9.8.0). |
| apps/docs/release-notes/2026-04-02-v9.7.0.mdx | Adds release note content (v9.7.0). |
| apps/docs/release-notes/2026-04-02-v9.6.0.mdx | Adds release note content (v9.6.0). |
| apps/docs/release-notes/2026-04-01-v9.5.0.mdx | Adds release note content (v9.5.0). |
| apps/docs/release-notes/2026-03-31-v9.4.1.mdx | Adds release note content (v9.4.1). |
| apps/docs/release-notes/2026-03-27-v9.4.0.mdx | Adds release note content (v9.4.0). |
| apps/docs/release-notes/2026-03-20-v9.3.0.mdx | Adds release note content (v9.3.0). |
| apps/docs/release-notes/2026-03-13-v9.2.0.mdx | Adds release note content (v9.2.0). |
| apps/docs/release-notes/2026-03-08-v9.1.0.mdx | Adds release note content (v9.1.0). |
| apps/docs/release-notes/2026-02-28-v9.0.1.mdx | Adds release note content (v9.0.1). |
| apps/docs/release-notes/2026-02-27-v9.0.0.mdx | Adds release note content (v9.0.0). |
| apps/docs/release-notes/2026-02-19-v8.25.0.mdx | Adds release note content (v8.25.0). |
| apps/docs/release-notes/2026-02-17-v8.24.0.mdx | Adds release note content (v8.24.0). |
| apps/docs/release-notes/2026-02-13-v8.23.1.mdx | Adds release note content (v8.23.1). |
| apps/docs/release-notes/2026-02-12-v8.23.0.mdx | Adds release note content (v8.23.0). |
| apps/docs/release-notes/2026-02-09-v8.22.0.mdx | Adds release note content (v8.22.0). |
| apps/docs/release-notes/2026-02-07-v8.21.0.mdx | Adds release note content (v8.21.0). |
| apps/docs/release-notes/2026-02-03-v8.20.0.mdx | Adds release note content (v8.20.0). |
| apps/docs/release-notes/2026-02-02-v8.19.2.mdx | Adds release note content (v8.19.2). |
| apps/docs/release-notes/2026-01-23-v8.19.1.mdx | Adds release note content (v8.19.1). |
| apps/docs/release-notes/2026-01-23-v8.19.0.mdx | Adds release note content (v8.19.0). |
| apps/docs/release-notes/2026-01-23-v8.18.1.mdx | Adds release note content (v8.18.1). |
| apps/docs/release-notes/2026-01-20-v8.18.0.mdx | Adds release note content (v8.18.0). |
| apps/docs/release-notes/2026-01-15-v8.17.1.mdx | Adds release note content (v8.17.1). |
| apps/docs/release-notes/2026-01-12-v8.17.0.mdx | Adds release note content (v8.17.0). |
| apps/docs/release-notes/2026-01-02-v8.16.0.mdx | Adds release note content (v8.16.0). |
| apps/docs/release-notes/2025-12-23-v8.15.1.mdx | Adds release note content (v8.15.1). |
| apps/docs/release-notes/2025-12-16-v8.15.0.mdx | Adds release note content (v8.15.0). |
| apps/docs/release-notes/2025-12-14-v8.14.0.mdx | Adds release note content (v8.14.0). |
| apps/docs/release-notes/2025-12-13-v8.13.1.mdx | Adds release note content (v8.13.1). |
| apps/docs/release-notes/2025-12-13-v8.13.0.mdx | Adds release note content (v8.13.0). |
| apps/docs/release-notes/2025-12-12-v8.12.1.mdx | Adds release note content (v8.12.1). |
| apps/docs/release-notes/2025-12-12-v8.12.0.mdx | Adds release note content (v8.12.0). |
| apps/docs/release-notes/2025-12-05-v8.11.0.mdx | Adds release note content (v8.11.0). |
| apps/docs/release-notes/2025-12-01-v8.10.0.mdx | Adds release note content (v8.10.0). |
| apps/docs/release-notes/2025-11-25-v8.9.1.mdx | Adds release note content (v8.9.1). |
| apps/docs/release-notes/2025-11-23-v8.9.0.mdx | Adds release note content (v8.9.0). |
| apps/docs/release-notes/2025-11-15-v8.8.0.mdx | Adds release note content (v8.8.0). |
| apps/docs/release-notes/2025-11-13-v8.7.0.mdx | Adds release note content (v8.7.0). |
| apps/docs/release-notes/2025-11-07-v8.6.0.mdx | Adds release note content (v8.6.0). |
| apps/docs/release-notes/2025-11-01-v8.5.0.mdx | Adds release note content (v8.5.0). |
| apps/docs/release-notes/2025-10-28-v8.4.0.mdx | Adds release note content (v8.4.0). |
| apps/docs/release-notes/2025-10-21-v8.3.0.mdx | Adds release note content (v8.3.0). |
| apps/docs/release-notes/2025-10-14-v8.2.0.mdx | Adds release note content (v8.2.0). |
| apps/docs/release-notes/2025-10-13-v8.1.0.mdx | Adds release note content (v8.1.0). |
| apps/docs/release-notes/2025-10-08-v8.0.1.mdx | Adds release note content (v8.0.1). |
| apps/docs/release-notes/2025-10-08-v8.0.0.mdx | Adds release note content (v8.0.0). |
| apps/docs/release-notes/2025-09-27-v7.10.0.mdx | Adds release note content (v7.10.0). |
| apps/docs/release-notes/2025-09-24-v7.9.1.mdx | Adds release note content (v7.9.1). |
| apps/docs/release-notes/2025-09-24-v7.9.0.mdx | Adds release note content (v7.9.0). |
| apps/docs/release-notes/2025-09-20-v7.8.0.mdx | Adds release note content (v7.8.0). |
| apps/docs/release-notes/2025-09-16-v7.7.2.mdx | Adds release note content (v7.7.2). |
| apps/docs/release-notes/2025-09-13-v7.7.1.mdx | Adds release note content (v7.7.1). |
| apps/docs/release-notes/2025-09-11-v7.7.0.mdx | Adds release note content (v7.7.0). |
| apps/docs/release-notes/2025-09-07-v7.6.3.mdx | Adds release note content (v7.6.3). |
| apps/docs/release-notes/2025-09-05-v7.6.2.mdx | Adds release note content (v7.6.2). |
| apps/docs/release-notes/2025-09-03-v7.6.1.mdx | Adds release note content (v7.6.1). |
| apps/docs/release-notes/2025-08-30-v7.6.0.mdx | Adds release note content (v7.6.0). |
| apps/docs/release-notes/2025-08-30-v7.5.0.mdx | Adds release note content (v7.5.0). |
| apps/docs/release-notes/2025-08-26-v7.4.0.mdx | Adds release note content (v7.4.0). |
| apps/docs/release-notes/2025-08-23-v7.3.5.mdx | Adds release note content (v7.3.5). |
| apps/docs/release-notes/2025-08-23-v7.3.4.mdx | Adds release note content (v7.3.4). |
| apps/docs/release-notes/2025-08-21-v7.3.3.mdx | Adds release note content (v7.3.3). |
| apps/docs/release-notes/2025-08-14-v7.3.2.mdx | Adds release note content (v7.3.2). |
| apps/docs/release-notes/2025-08-11-v7.3.1.mdx | Adds release note content (v7.3.1). |
| apps/docs/release-notes/2025-08-11-v7.3.0.mdx | Adds release note content (v7.3.0). |
| apps/docs/release-notes/2025-08-09-v7.2.0.mdx | Adds release note content (v7.2.0). |
| apps/docs/release-notes/2025-08-09-v7.1.0.mdx | Adds release note content (v7.1.0). |
| apps/docs/release-notes/2025-07-27-v7.0.0.mdx | Adds release note content (v7.0.0). |
Files not reviewed (1)
- pnpm-lock.yaml: Generated file
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| @@ -1,8 +1,9 @@ | |||
| import { css, SerializedStyles } from '@emotion/react'; | |||
| import { AppAbility } from '@jetstream/acl'; | |||
| import { ReleasePlatform } from '@jetstream/release-notes'; | |||
Comment on lines
+58
to
+76
| // `--head` lets the backfill flow gather PRs between two historical tags | ||
| // (e.g. --base v9.14.0 --head v9.15.0). Defaults to the working tree (HEAD). | ||
| if (options.head && !(await refExists(options.head))) { | ||
| fail(`Head ref "${options.head}" not found.`); | ||
| } | ||
| const { headSha, currentBranch, prs, directCommits, totalCommits } = await getMergedPrsSince(baseTag, { | ||
| head: options.head ?? 'HEAD', | ||
| }); | ||
|
|
||
| const enrichedPrs = []; | ||
| for (const pr of prs) { | ||
| enrichedPrs.push(await enrichPr(pr)); | ||
| } | ||
|
|
||
| if (options.json) { | ||
| printJson({ targetVersion, targetDate, baseTag, headSha, currentBranch, totalCommits, prs: enrichedPrs, directCommits }); | ||
| } else { | ||
| printMarkdown({ targetVersion, targetDate, baseTag, headSha, currentBranch, totalCommits, prs: enrichedPrs, directCommits }); | ||
| } |
| lines.push(''); | ||
| lines.push(`- target version: **${ctx.targetVersion}**`); | ||
| lines.push(`- planned date: **${ctx.targetDate}**`); | ||
| lines.push(`- base tag: **${ctx.baseTag}** → head: **${ctx.currentBranch}** (${ctx.headSha.slice(0, 9)})`); |
Comment on lines
+9
to
+14
| import { $ } from 'zx'; | ||
|
|
||
| export const REPO_SLUG = 'jetstreamapp/jetstream'; | ||
| export const REMOTE = 'origin'; | ||
| export const MERGE_PR_REGEX = /^Merge pull request #(\d+) from (\S+)/; | ||
|
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.