Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .changeset/config.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"$schema": "https://unpkg.com/@changesets/config@3.1.4/schema.json",
"$schema": "https://unpkg.com/@changesets/config@4.0.1/schema.json",
"changelog": [
"@changesets/changelog-github",
{ "repo": "cloudflare/nimbus" }
Expand Down
10 changes: 10 additions & 0 deletions .changeset/dependency-compatibility.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
"@cloudflare/nimbus-docs": minor
"@cloudflare/create-nimbus-docs": minor
---

Update Astro, Markdown, API parsing, image processing, and starter dependencies. Support Satori 0.63 alongside 0.26, while retaining the declaration bundler that preserves API extension types.

Node.js 22.23.4 or newer is now required by Nimbus and newly generated sites. Upgrade Node locally and in CI and hosting build environments before updating Nimbus. Sites using Astro below 7.2.10 must also update Astro; new starters use Astro 7.4.2.

Keep deployment-root sitemap URLs aligned with Astro's canonical URL for static and request-rendered pages, including sites hosted under a base path.
5 changes: 4 additions & 1 deletion .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,10 @@ updates:
patterns:
- "*"
ignore:
# Types track the oldest supported node (engines: >=22.12.0).
# Types track the oldest supported Node major.
- dependency-name: "@types/node"
update-types:
- version-update:semver-major
# Keep 0.20.3: newer declaration bundling regressed public ApiExtensions augmentation.
# Revisit manually with packages/nimbus-docs/test/api-extensions.test.ts.
- dependency-name: "tsdown"
2 changes: 1 addition & 1 deletion .github/workflows/mirror-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ jobs:

- uses: pnpm/action-setup@f40ffcd9367d9f12939873eb1018b921a783ffaa # v4
with:
version: 9
package_json_file: monorepo/package.json

- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
Expand Down
11 changes: 4 additions & 7 deletions .github/workflows/templates.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,7 @@ jobs:
strategy:
fail-fast: false
matrix:
# netlify runs under pnpm@latest below: under pnpm 9 its site's
# esbuild 0.28.1 postinstall intermittently finds 0.28.2's binary.
lane: [static, vercel, node, cloudflare]
lane: [static, vercel, node, cloudflare, netlify]
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4

Expand All @@ -68,9 +66,7 @@ jobs:
node --test scripts/release.test.mjs
node scripts/release.mjs publish --halt-after verify

# Scaffold + install a variant under pnpm@latest, so a build-scripts gate
# regression fails a PR instead of a user. The monorepo's pin to pnpm 9
# predates the gate, so the pnpm-9 checks above can't catch it.
# Check docs and API-only scaffolds with the workspace package manager.
site-parts:
runs-on: ubuntu-latest
steps:
Expand All @@ -88,12 +84,13 @@ jobs:
- name: Scaffold, build and check sites with an API reference
run: node scripts/site-parts-check.mjs

# Catch build-policy changes in newer pnpm majors.
templates-modern-pnpm:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
lane: [static, cloudflare, netlify]
lane: [cloudflare, netlify]
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/verify.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ jobs:

- uses: pnpm/action-setup@f40ffcd9367d9f12939873eb1018b921a783ffaa # v4
with:
version: 9
version: 10

- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
Expand Down
4 changes: 3 additions & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,9 @@ one production corpus is not sufficient evidence of consumer compatibility.

### Local development

Requires **Node ≥ 22.12.0** and **pnpm 9** (pinned via `packageManager`, so Corepack fetches it for you).
Requires **Node 22.23.4+, 24.15.0+, or 26+** and **pnpm 10** (pinned via `packageManager`, so Corepack fetches it for you). Node 23 and 25 are not supported for contributing. Use the latest patched release of your Node line.

Node 25+ no longer bundles Corepack; install it with `npm install -g corepack && corepack enable`, or install pnpm 10 directly.

```sh
pnpm install
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Docs: [nimbus-docs.com](https://nimbus-docs.com)

## Quickstart

Requires Node.js 22.12.0 or later.
Requires Node.js 22.23.4 or later.

```sh
npx @cloudflare/create-nimbus-docs@latest my-docs --yes --package-manager npm
Expand Down
46 changes: 23 additions & 23 deletions apps/demo/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,35 +14,35 @@
"screenshots": "node scripts/screenshots.mjs"
},
"dependencies": {
"@astrojs/cloudflare": "~14.3.0",
"@astrojs/react": "^6.0.1",
"@astrojs/cloudflare": "~14.4.2",
"@astrojs/react": "^6.0.6",
"@astrojs/rss": "^4.0.19",
"@cloudflare/nimbus-docs": "workspace:*",
"@fontsource-variable/inter": "^5.2.8",
"@fontsource-variable/jetbrains-mono": "^5.2.8",
"@iconify-json/ph": "^1.2.0",
"@readme/httpsnippet": "11.4.0",
"@fontsource-variable/inter": "^5.3.0",
"@fontsource-variable/jetbrains-mono": "^5.3.0",
"@iconify-json/ph": "^1.2.2",
"@readme/httpsnippet": "11.4.1",
"@resvg/resvg-js": "^2.6.2",
"@scalar/openapi-parser": "0.28.12",
"astro": "7.3.3",
"@scalar/openapi-parser": "0.29.16",
"astro": "7.4.2",
"clsx": "^2.1.1",
"openapi-sampler": "1.7.4",
"react": "^19.2.0",
"react-dom": "^19.2.0",
"satori": "^0.26.0",
"tailwind-merge": "^3.5.0"
"openapi-sampler": "1.7.9",
"react": "^19.3.1",
"react-dom": "^19.3.1",
"satori": "^0.63.2",
"tailwind-merge": "^3.7.0"
},
"devDependencies": {
"@astrojs/check": "^0.9.8",
"@tailwindcss/vite": "^4.1.4",
"@types/react": "^19.2.0",
"@types/react-dom": "^19.2.0",
"@astrojs/check": "^0.9.12",
"@tailwindcss/vite": "^4.3.3",
"@types/react": "^19.3.0",
"@types/react-dom": "^19.3.0",
"pagefind": "^1.5.2",
"playwright": "1.62.1",
"tailwindcss": "^4.1.4",
"tsx": "^4.19.2",
"typescript": "^5.8.3",
"wrangler": "^4.151.0",
"yaml": "2.9.0"
"playwright": "1.64.1",
"tailwindcss": "^4.3.3",
"tsx": "^4.23.15",
"typescript": "^5.9.3",
"wrangler": "^4.153.0",
"yaml": "2.9.1"
}
}
44 changes: 22 additions & 22 deletions apps/www/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,40 +17,40 @@
"build:workers": "pnpm run predeploy && printf '%s\\n' \"${WORKERS_CI_COMMIT_SHA:?}\" > dist/_nimbus-preview-sha.txt && printf '\\n/*\\n X-Robots-Tag: noindex\\n' >> dist/_headers"
},
"dependencies": {
"@astrojs/markdown-satteri": "^0.4.0",
"@astrojs/react": "^6.0.1",
"@astrojs/markdown-satteri": "^0.4.5",
"@astrojs/react": "^6.0.6",
"@astrojs/rss": "^4.0.19",
"@cloudflare/nimbus-docs": "workspace:*",
"@fontsource-variable/bricolage-grotesque": "^5",
"@fontsource-variable/inter": "^5.2.8",
"@fontsource-variable/jetbrains-mono": "^5.2.8",
"@iconify-json/ph": "^1.2.0",
"@fontsource-variable/bricolage-grotesque": "^5.3.0",
"@fontsource-variable/inter": "^5.3.0",
"@fontsource-variable/jetbrains-mono": "^5.3.0",
"@iconify-json/ph": "^1.2.2",
"@resvg/resvg-js": "^2.6.2",
"astro": "7.3.3",
"astro": "7.4.2",
"clsx": "^2.1.1",
"framer-motion": "^13.2.0",
"framer-motion": "^13.5.1",
"hast-util-from-html": "^2.0.3",
"hast-util-sanitize": "^5.0.2",
"hast-util-to-html": "^9.0.5",
"react": "^19.2.0",
"react-dom": "^19.2.0",
"satori": "^0.26.0",
"tailwind-merge": "^3.5.0"
"react": "^19.3.1",
"react-dom": "^19.3.1",
"satori": "^0.63.2",
"tailwind-merge": "^3.7.0"
},
"devDependencies": {
"@astrojs/check": "^0.9.8",
"@astrojs/mdx": "~8.0.0",
"@notionhq/client": "^5.27.0",
"@tailwindcss/vite": "^4.1.4",
"@astrojs/check": "^0.9.12",
"@astrojs/mdx": "~8.1.1",
"@notionhq/client": "^5.28.0",
"@tailwindcss/vite": "^4.3.3",
"@types/node": "^22.20.5",
"@types/react": "^19.2.6",
"@types/react-dom": "^19.2.3",
"@types/react": "^19.3.0",
"@types/react-dom": "^19.3.0",
"notion-to-md": "^3.1.9",
"pagefind": "^1.5.2",
"satteri": "^0.10.5",
"tailwindcss": "^4.1.4",
"tsx": "^4.19.2",
"typescript": "^5.8.3",
"wrangler": "^4.149.0"
"tailwindcss": "^4.3.3",
"tsx": "^4.23.15",
"typescript": "^5.9.3",
"wrangler": "^4.153.0"
}
}
2 changes: 1 addition & 1 deletion apps/www/skills/build-a-nimbus-site/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Full docs: https://nimbus-docs.com/llms.txt. Every page has a Markdown version a

## Create a site

Requires Node 22.12 or later.
Requires Node 22.23.4 or later.

```sh
npm create @cloudflare/nimbus-docs@latest my-docs -- --yes
Expand Down
2 changes: 1 addition & 1 deletion apps/www/src/content/docs/quickstart.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ By the end you'll have a docs site running locally, with a page you've edited.

## Prerequisites

- Node 22.12 or later (`node --version`)
- Node 22.23.4 or later (`node --version`)

## Steps

Expand Down
2 changes: 1 addition & 1 deletion apps/www/src/content/docs/reference/scaffolder-options.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import { FileTree } from "@/components/ui/file-tree";

## Requirements

- **Node** 22.12 or later
- **Node** 22.23.4 or later
- **A package manager** — npm, pnpm, yarn, or bun
- **Git** — for last-updated dates, which come from commit history

Expand Down
2 changes: 1 addition & 1 deletion apps/www/src/content/docs/writing/reusable-snippets.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ export const collections = {
```

```md title="src/content/partials/install-note.md"
Nimbus requires Node 22.12 or later and any package manager.
Nimbus requires Node 22.23.4 or later and any package manager.
```

## Include it
Expand Down
21 changes: 11 additions & 10 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"version": "0.0.0",
"private": true,
"type": "module",
"packageManager": "pnpm@9.0.0",
"packageManager": "pnpm@10.34.9",
"scripts": {
"build": "pnpm -r build",
"test": "pnpm -r test",
Expand All @@ -19,29 +19,30 @@
"site-parts:check": "node scripts/site-parts-check.mjs",
"templates:sync": "node scripts/sync-templates-repo.mjs",
"upgrades:check": "node scripts/upgrade-manifest.mjs",
"test:upgrades": "node --test scripts/upgrade-manifest.test.mjs scripts/sync-reviewed-baselines.test.mjs scripts/freshness-guard.test.mjs",
"test:upgrades": "node --test scripts/upgrade-manifest.test.mjs scripts/sync-reviewed-baselines.test.mjs scripts/freshness-guard.test.mjs scripts/changeset-version.test.mjs",
"local": "node scripts/local.mjs",
"local:auto": "node scripts/local.mjs --auto",
"local:reset": "node scripts/local.mjs --auto --reset",
"local:add": "node scripts/local-add.mjs",
"changeset": "changeset",
"changeset:version": "changeset version && node scripts/sync-reviewed-baselines.mjs && pnpm --filter @nimbus/www generate-registry",
"changeset:version": "node scripts/changeset-version.mjs && node scripts/sync-reviewed-baselines.mjs && pnpm --filter @nimbus/www generate-registry",
"changeset:publish": "changeset publish"
},
"engines": {
"node": ">=22.12.0"
"node": "^22.23.4 || ^24.15.0 || >=26.0.0"
},
"devDependencies": {
"@playwright/test": "1.62.1",
"@changesets/changelog-github": "^0.7.0",
"@changesets/cli": "^2.31.0",
"@changesets/cli": "^3.0.3",
"@changesets/get-release-plan": "^5.0.2",
"@eslint/js": "^10.0.1",
"@playwright/test": "1.64.1",
"cross-spawn": "7.0.6",
"eslint": "^10.8.0",
"eslint": "^10.13.0",
"eslint-plugin-react-hooks": "^7.1.1",
"pkg-pr-new": "^0.0.79",
"pkg-pr-new": "^0.0.91",
"semver": "7.8.5",
"typescript-eslint": "^8.66.0",
"yaml": "2.9.0"
"typescript-eslint": "^8.72.1",
"yaml": "2.9.1"
}
}
2 changes: 1 addition & 1 deletion packages/create-nimbus-docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Create a [Nimbus](https://nimbus-docs.com) docs site.

Requires Node.js 22.12.0 or later.
Requires Node.js 22.23.4 or later.

```sh
npx @cloudflare/create-nimbus-docs@latest my-docs
Expand Down
18 changes: 10 additions & 8 deletions packages/create-nimbus-docs/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
"create-nimbus-docs": "./dist/index.js"
},
"engines": {
"node": ">=22.12.0"
"node": ">=22.23.4"
},
"files": [
"dist"
Expand All @@ -44,17 +44,19 @@
"prepack": "tsdown"
},
"dependencies": {
"@clack/prompts": "^1.8.0",
"giget": "^3.3.0",
"@clack/prompts": "^1.8.1",
"giget": "^3.3.1",
"mri": "^1.2.0",
"typescript": "^5.8.3",
"yaml": "^2.7.1"
"semver": "^7.8.5",
"typescript": "^5.9.3",
"yaml": "^2.9.1"
},
"devDependencies": {
"@cloudflare/nimbus-docs": "workspace:*",
"@types/mri": "^1.1.4",
"@types/mri": "^1.2.0",
"@types/node": "^22.20.5",
"tsdown": "^0.20.3",
"tsx": "^4.22.3"
"@types/semver": "^7.8.0",
"tsdown": "0.20.3",
"tsx": "^4.23.15"
}
}
5 changes: 2 additions & 3 deletions packages/create-nimbus-docs/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import { existsSync } from "node:fs";
import { extname, resolve } from "node:path";
import * as p from "@clack/prompts";
import mri from "mri";
import { lt } from "semver";
import { scaffold, ScaffoldError, type ScaffoldResult } from "./scaffold.js";
import {
getPromptResponses,
Expand Down Expand Up @@ -142,9 +143,7 @@ if (args.version) {
process.exit(0);
}

const [nodeMajor] = process.versions.node.split(".");
const [minMajor] = __MIN_NODE_VERSION__.split(".");
if (Number(nodeMajor) < Number(minMajor)) {
if (lt(process.versions.node, __MIN_NODE_VERSION__)) {
console.error(
`create-nimbus-docs requires Node ${__MIN_NODE_VERSION__} or later. You are running ${process.versions.node}.`,
);
Expand Down
5 changes: 3 additions & 2 deletions packages/create-nimbus-docs/tsdown.config.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
import { readFileSync } from "node:fs";
import { resolve } from "node:path";
import { minVersion } from "semver";
import { defineConfig } from "tsdown";

const pkg = JSON.parse(
readFileSync(new URL("./package.json", import.meta.url), "utf-8"),
) as { version: string; engines?: { node?: string } };
) as { version: string; engines: { node: string } };

// Minimum Node is taken from this package's own `engines.node`.
const minNodeVersion = pkg.engines?.node?.replace(/^>=/, "") ?? "20.0.0";
const minNodeVersion = minVersion(pkg.engines.node)!.version;
const isPreview = process.env.NIMBUS_PREVIEW === "1";
const previewPr = process.env.PR_NUMBER ?? null;
const previewRef = process.env.NIMBUS_PREVIEW_REF ?? null;
Expand Down
Loading
Loading