diff --git a/MIGRATION.md b/MIGRATION.md new file mode 100644 index 000000000000000..622c020aee16f4d --- /dev/null +++ b/MIGRATION.md @@ -0,0 +1,174 @@ +# Astro v6 + Starlight Beta — Migration POC + +> **Reference links:** +> +> - Starlight beta: [withastro/starlight#3644] +> - Astro Docs example: [withastro/docs#13230] +> - [Astro migration guide] +> - [Zod 4 migration guide] +> - [Cloudflare adapter migration guide] + +[withastro/starlight#3644]: https://github.com/withastro/starlight/pull/3644 +[withastro/docs#13230]: https://github.com/withastro/docs/pull/13230 +[Astro Migration guide]: https://v6.docs.astro.build/en/guides/upgrade-to/v6/ +[Zod 4 migration guide]: https://zod.dev/v4/changelog +[Cloudflare adapter migration guide]: https://v6.docs.astro.build/en/guides/integrations-guide/cloudflare/#upgrading-to-v13-and-astro-6 +[STARLIGHT_CUSTOMIZATIONS.md]: ./STARLIGHT_CUSTOMIZATIONS.md + +## High-risk items and unknowns + +| Item | Risk | Status | +|-------------------------------------------------------|--------|---------------------------------------------------------------| +| **`Page.astro` Vite alias** | HIGH | Unknown — We're coupled to low-level private implementation | +| **`patch-package` hunks against Starlight internals** | HIGH | Unknown — We're coupled to low-level private implementation | +| **`starlight-links-validator` Zod 4 incompatibility** | HIGH | Confirmed broken upstream | +| **Community Starlight plugins vs. beta** | MEDIUM | Unknown — must investigate each | +| **Vitest compatibility** | LOW | Must stay on Vitest v3.2.x, but we don't have a lot of tests. | +| **Zod 4** | LOW | Will result in warnings, not errors | + +## Background notes + +- We do **not** use the `@astrojs/cloudflare` adapter. + The site is compiled to static HTML and served by a custom Cloudflare Worker defined in `worker/index.ts`. + The [Cloudflare adapter migration guide] does not apply here. +- We have **six layers of Starlight customization** documented in [STARLIGHT_CUSTOMIZATIONS.md]. + This should be read beforehand. + The most invasive is `patch-package`, which directly modifies Starlight files in `node_modules` after every install. +- We use several **community Starlight plugins** alongside the official ones. + +## Version targets + +Targets are determined by [withastro/docs#13230]. +That is the north star. + +| Package | Current | Target | +| ------------------------------ | -------- |--------------------------------------------------------| +| `astro` | `5.13.7` | `6.0.0-beta.8` | +| `@astrojs/starlight` | `0.36.0` | `https://pkg.pr.new/@astrojs/starlight@3644` | +| `@astrojs/starlight-docsearch` | `0.6.0` | `https://pkg.pr.new/@astrojs/starlight-docsearch@3644` | +| `@astrojs/starlight-tailwind` | `4.0.1` | `https://pkg.pr.new/@astrojs/starlight-tailwind@3644` | +| `@astrojs/check` | `0.9.4` | `0.9.7-beta.1` | +| `@astrojs/react` | `4.2.5` | ? | +| `@astrojs/sitemap` | `3.5.1` | `3.6.1-beta.3` | +| `@astrojs/rss` | `4.0.12` | ? | + +The Starlight packages use `pkg.pr.new` URLs. +These are preview builds cut directly from the PR branch, not published to npm. + +## Can any of this be done in a separate PR first? + +Must be done in the final big-bang PR: + +- `astro/zod` (the Astro 6 replacement for `astro:schema`) does not exist in Astro 5. The + 18-file import rename must happen in the same commit as the version bump. +- `experimental.contentIntellisense` is still behind the experimental flag in Astro 5; it + can only be removed once Astro 6 is installed. +- All `patch-package` patches are pinned to exact package version strings and must be + regenerated against whatever versions the new packages install as. +- Zod 4 cannot be upgraded independently — it is bundled by Astro and upgrades with it. + +## Things to ignore + +Both of these are deprecated in Zod 4 but not removed. The old names still work at runtime; the only consequence is TypeScript deprecation warnings. + +| Usage | Deprecated in favor of | +| ---------------------------- | ------------------------------- | +| `.catch((ctx) => ctx.input)` | `ctx.value` | +| `.describe("...")` | `.meta({ description: "..." })` | + +--- + +## Migration steps + +### Step 1 — Update versions + +```shell +npx @astrojs/upgrade beta +``` + +This likely takes care of most Astro packages. +Starlight package must be manually set to the PR. + +```shell +npm install \ + @astrojs/starlight@https://pkg.pr.new/@astrojs/starlight@3644 \ + @astrojs/starlight-docsearch@https://pkg.pr.new/@astrojs/starlight-docsearch@3644 \ + @astrojs/starlight-tailwind@https://pkg.pr.new/@astrojs/starlight-tailwind@3644 +``` + +> **Note on Vitest:** `vitest` must stay at `3.2.x`. `vitest.workspace.ts` uses +> `getViteConfig()` from `astro/config`, which Astro 6 only supports with Vitest v3.2. +> Vitest v4 is not yet supported. + +### Step 2 — Regenerate patch-package patches ⚠️ HIGH RISK + +See `STARLIGHT_CUSTOMIZATIONS.md` for full context on what each patch does. +It's likely these patches don't work out the box for the new Starlight beta. + +Open question: Why did we do this? +This makes _every_ upgrade nearly impossible. + +### Step 3 — Update `astro:schema` imports to `astro/zod` + +All 18 files in `src/schemas/` import `z` from `"astro:schema"`. +Astro 6 deprecates this virtual module in favor of `"astro/zod"`. + +```diff +-import { z } from "astro:schema"; ++import { z } from "astro/zod"; +``` + +Note: The [zod code mod] is likely useful. + +Open question: Is there an Astro-specific code mod? Should there be? + +Without a code mod: + +```shell +find src/schemas -name "*.ts" | xargs sed -i '' 's|from "astro:schema"|from "astro/zod"|g' +``` + +[zod code mod]: https://github.com/nicoespeon/zod-v3-to-v4 + +### Step 4 — Remove `experimental.contentIntellisense` from `astro.config.ts` + +Content Intellisense was behind an experimental flag in Astro 5 and is stable by default in Astro 6. +The flag will either be silently ignored or cause a type error. + +In `astro.config.ts`, remove: + +```ts +experimental: { + contentIntellisense: true, +}, +``` + +### Step 5 — Investigate the `Page.astro` Vite alias ⚠️ HIGH RISK + +**File:** `astro.config.ts`, `vite.resolve.alias` block + +We shim Starlight's non-overridable `Page.astro` at the Vite bundler level: + +```ts +vite: { + resolve: { + alias: { + "./Page.astro": fileURLToPath(...), + "../components/Page.astro": fileURLToPath(...), + }, + }, +}, +``` + +Open question: Can we even keep doing such a low-level override? +This likely wasn't exposed for a reason. + +### Step 6 — Check community Starlight plugins + +| Plugin | Current version | Status | +| ---------------------------- | --------------- | -------------------------------------------- | +| `starlight-links-validator` | `0.17.2` | **Confirmed broken** — Zod 4 incompatibility | +| `starlight-image-zoom` | `0.13.0` | ? | +| `starlight-scroll-to-top` | `0.4.0` | ? | +| `starlight-package-managers` | `0.11.0` | ? | +| `starlight-showcases` | `0.3.0` | ? | diff --git a/STARLIGHT_CUSTOMIZATIONS.md b/STARLIGHT_CUSTOMIZATIONS.md new file mode 100644 index 000000000000000..cf1a1313bfbafce --- /dev/null +++ b/STARLIGHT_CUSTOMIZATIONS.md @@ -0,0 +1,181 @@ +# Starlight Customizations + +This doc explains every way we've extended or patched Starlight. There are six distinct layers, ordered roughly from most to least invasive. + +## 1. `patch-package` — Direct node_modules patches + +**Trigger:** `postinstall` in `package.json` runs `npx patch-package` after every `npm install`. + +Patch files live in `patches/`. These are the nuclear option — used when Starlight gives us no other extension point. + +### `patches/@astrojs+starlight+0.36.0.patch` + +Three hunks against three different files: + +**`components/SidebarSublist.astro`** — Sidebar icons + +Starlight has no native API for per-item icons in the sidebar. We inject `~/components/SidebarIcon.astro` (Lottie animations) before each sidebar label: + +```diff +-{entry.label} ++{entry.icon && }{entry.label} +``` + +The `icon` property comes from sidebar entry `attrs` set in our sidebar generation logic. + +**`integrations/remark-rehype-utils.ts`** — Remark/rehype pipeline scope + +Starlight's remark/rehype processing originally bails out for any file not inside the `docs` collection. We widen the guard to also process `partials/` and `changelog/`: + +```diff +-if (!normalizePath(file.path).startsWith(docsCollectionPath)) return false; ++if ( ++ !normalizePath(file.path).startsWith(docsCollectionPath) && ++ !normalizePath(file.path).includes("/src/content/partials/") && ++ !normalizePath(file.path).includes("/src/content/changelog/") ++) return false; +``` + +Without this, heading transforms, tab components, etc. don't run inside partials or changelogs. + +**`user-components/Tabs.astro`** — Injectable icon component + +Makes the `Icon` component inside `` replaceable via prop, so callers (e.g. `TypeScriptExample`) can swap in a custom icon renderer: + +```diff ++IconComponent?: typeof Icon; +-const { syncKey } = Astro.props; ++const { syncKey, IconComponent = Icon } = Astro.props; + ... +-{icon && } ++{icon && } +``` + +### `patches/@astrojs+starlight-docsearch+0.6.0.patch` + +**`DocSearch.astro`** — Keyboard shortcut hint UI + +We disable the `/` shortcut in DocSearch (re-routing it to the sidebar search input instead). The original button always rendered a `/` slash icon. The patch makes the hint adaptive: + +- Default: renders styled ``-style key badges (`Ctrl K`) +- Only shows the slash SVG icon when `/` is enabled AND `Ctrl/Cmd+K` is disabled + +The slash icon CSS is moved from a static ` diff --git a/src/components/realtimekit/RTKCodeSnippet/RTKCodeSnippet.astro b/src/components/realtimekit/RTKCodeSnippet/RTKCodeSnippet.astro index dd639d42f827bcd..38d864a4e582dff 100644 --- a/src/components/realtimekit/RTKCodeSnippet/RTKCodeSnippet.astro +++ b/src/components/realtimekit/RTKCodeSnippet/RTKCodeSnippet.astro @@ -1,5 +1,5 @@ --- -import { z } from "astro:schema"; +import { z } from "astro/zod"; import CodeSnippet from "./RTKCodeSnippet"; const props = z.object({ diff --git a/src/components/realtimekit/RTKSDKSelector/RTKSDKSelector.astro b/src/components/realtimekit/RTKSDKSelector/RTKSDKSelector.astro index a264d2f0cc3a275..84861bdd8baaabb 100644 --- a/src/components/realtimekit/RTKSDKSelector/RTKSDKSelector.astro +++ b/src/components/realtimekit/RTKSDKSelector/RTKSDKSelector.astro @@ -1,5 +1,5 @@ --- -import { z } from "astro:schema"; +import { z } from "astro/zod"; import SDKSelector from "./RTKSDKSelector"; const platform = z.enum([ diff --git a/src/components/realtimekit/RTKicons/RTKIcon.astro b/src/components/realtimekit/RTKicons/RTKIcon.astro index 6c5fc753c2cb603..0e6a432dc867882 100644 --- a/src/components/realtimekit/RTKicons/RTKIcon.astro +++ b/src/components/realtimekit/RTKicons/RTKIcon.astro @@ -1,5 +1,5 @@ --- -import { z } from "astro:schema"; +import { z } from "astro/zod"; import Icon from "./RTKIcon"; const props = z.object({ diff --git a/src/pages/changelog/post/[...slug].astro b/src/pages/changelog/post/[...slug].astro index 98d13a6407b536c..c04570968742321 100644 --- a/src/pages/changelog/post/[...slug].astro +++ b/src/pages/changelog/post/[...slug].astro @@ -62,15 +62,14 @@ const props = { + diff --git a/src/schemas/apps.ts b/src/schemas/apps.ts index c5d488887bf59dd..82135185c207e94 100644 --- a/src/schemas/apps.ts +++ b/src/schemas/apps.ts @@ -1,9 +1,9 @@ -import { z } from "astro:schema"; +import { z } from "astro/zod"; export const appsSchema = z .object({ id: z.string(), - link: z.string().url(), + link: z.url(), description: z.string(), tags: z.string().array().optional(), products: z.string().array(), diff --git a/src/schemas/base.ts b/src/schemas/base.ts index ec3a445c7ae5929..29ef1401fa8129c 100644 --- a/src/schemas/base.ts +++ b/src/schemas/base.ts @@ -1,40 +1,17 @@ -import { z } from "astro:schema"; +import { z } from "astro/zod"; import { reference, type SchemaContext } from "astro:content"; import { sidebar } from "./types/sidebar"; export const baseSchema = ({ image }: SchemaContext) => z.object({ - preview_image: image() - .optional() + preview_image: z + .optional(image()) .describe( "A `src` path to the image that you want to use as a custom preview image for social sharing.", ), pcx_content_type: z - .union([ - z.literal("changelog"), - z.literal("changelog-entry"), - z.literal("configuration"), - z.literal("concept"), - z.literal("design-guide"), - z.literal("example"), - z.literal("faq"), - z.literal("get-started"), - z.literal("how-to"), - z.literal("integration-guide"), - z.literal("implementation-guide"), - z.literal("learning-unit"), - z.literal("navigation"), - z.literal("overview"), - z.literal("reference"), - z.literal("reference-architecture"), - z.literal("reference-architecture-diagram"), - z.literal("release-notes"), - z.literal("troubleshooting"), - z.literal("tutorial"), - z.literal("video"), - ]) - .catch((ctx) => ctx.input) + .string() .optional() .describe( "The purpose of the page, and defined through specific pages in [Content strategy](/style-guide/documentation-content-strategy/content-types/).", @@ -53,12 +30,7 @@ export const baseSchema = ({ image }: SchemaContext) => "Path to another page in our docs or elsewhere. Used to add a crosslink entry to the lefthand navigation sidebar.", ), difficulty: z - .union([ - z.literal("Beginner"), - z.literal("Intermediate"), - z.literal("Advanced"), - ]) - .catch((ctx) => ctx.input) + .string() .optional() .describe( "Difficulty is displayed as a column in the [ListTutorials component](/style-guide/components/list-tutorials/).", diff --git a/src/schemas/changelog.ts b/src/schemas/changelog.ts index d8c27850fbc47c6..07956bcd8758a2a 100644 --- a/src/schemas/changelog.ts +++ b/src/schemas/changelog.ts @@ -1,5 +1,5 @@ import { reference, type SchemaContext } from "astro:content"; -import { z } from "astro:schema"; +import { z } from "astro/zod"; export const changelogSchema = ({ image }: SchemaContext) => z.object({ @@ -13,7 +13,7 @@ export const changelogSchema = ({ image }: SchemaContext) => .describe( "An array of directory entries to associate this changelog entry with. You may omit the entry named after the folder this entry is in.", ), - preview_image: image().optional(), + preview_image: z.optional(image()), hidden: z .boolean() .default(false) diff --git a/src/schemas/compatibility-flags.ts b/src/schemas/compatibility-flags.ts index f35f8b572a14973..ab4143ebb96e408 100644 --- a/src/schemas/compatibility-flags.ts +++ b/src/schemas/compatibility-flags.ts @@ -1,4 +1,4 @@ -import { z } from "astro:schema"; +import { z } from "astro/zod"; export type CompatibilityFlagsSchema = z.infer; diff --git a/src/schemas/fields.ts b/src/schemas/fields.ts index 13da40948a6f4de..2724798fe967288 100644 --- a/src/schemas/fields.ts +++ b/src/schemas/fields.ts @@ -1,4 +1,4 @@ -import { z } from "astro:schema"; +import { z } from "astro/zod"; export const fieldsSchema = z.object({ entries: z diff --git a/src/schemas/glossary.ts b/src/schemas/glossary.ts index cc2cfa915482fa3..4f8d9422c4df1ca 100644 --- a/src/schemas/glossary.ts +++ b/src/schemas/glossary.ts @@ -1,4 +1,4 @@ -import { z } from "astro:schema"; +import { z } from "astro/zod"; export const glossarySchema = z.object({ productName: z.string(), diff --git a/src/schemas/learning-paths.ts b/src/schemas/learning-paths.ts index fae2a986410b33b..7d5eb038d788f94 100644 --- a/src/schemas/learning-paths.ts +++ b/src/schemas/learning-paths.ts @@ -1,4 +1,4 @@ -import { z } from "astro:schema"; +import { z } from "astro/zod"; import { reference } from "astro:content"; export const learningPathsSchema = z diff --git a/src/schemas/notifications.ts b/src/schemas/notifications.ts index c2e27af1b35a5ed..6373fcc59f10997 100644 --- a/src/schemas/notifications.ts +++ b/src/schemas/notifications.ts @@ -1,4 +1,4 @@ -import { z } from "astro:schema"; +import { z } from "astro/zod"; export const notificationsSchema = z .object({ diff --git a/src/schemas/pages-build-environment.ts b/src/schemas/pages-build-environment.ts index 1ac6030a9c51eb5..b66c4c1f03e5855 100644 --- a/src/schemas/pages-build-environment.ts +++ b/src/schemas/pages-build-environment.ts @@ -1,4 +1,4 @@ -import { z } from "astro:schema"; +import { z } from "astro/zod"; const supportInfo = z .object({ diff --git a/src/schemas/pages-framework-presets.ts b/src/schemas/pages-framework-presets.ts index a4af9a4096c61c9..46b9f548d1bc336 100644 --- a/src/schemas/pages-framework-presets.ts +++ b/src/schemas/pages-framework-presets.ts @@ -1,4 +1,4 @@ -import { z } from "astro:schema"; +import { z } from "astro/zod"; const preset = z .object({ diff --git a/src/schemas/partials.ts b/src/schemas/partials.ts index 58e1c6075535219..77535cd14bad86d 100644 --- a/src/schemas/partials.ts +++ b/src/schemas/partials.ts @@ -1,4 +1,4 @@ -import { z } from "astro:schema"; +import { z } from "astro/zod"; const paramsDocs = "https://developers.cloudflare.com/style-guide/components/render/#defining-expected-properties-in-frontmatter"; diff --git a/src/schemas/release-notes.ts b/src/schemas/release-notes.ts index 2f3f581c8d0155a..3c195e74cc523e6 100644 --- a/src/schemas/release-notes.ts +++ b/src/schemas/release-notes.ts @@ -1,4 +1,4 @@ -import { z } from "astro:schema"; +import { z } from "astro/zod"; export const releaseNotesSchema = z.object({ link: z.string(), diff --git a/src/schemas/stream.ts b/src/schemas/stream.ts index 4b4cfd24405ae36..eb9fb113b5e20fd 100644 --- a/src/schemas/stream.ts +++ b/src/schemas/stream.ts @@ -1,4 +1,4 @@ -import { z } from "astro:schema"; +import { z } from "astro/zod"; import { reference } from "astro:content"; export const streamSchema = z.object({ diff --git a/src/schemas/types/badge.ts b/src/schemas/types/badge.ts index 187c0add88a2f57..adf43ff7759ed9e 100644 --- a/src/schemas/types/badge.ts +++ b/src/schemas/types/badge.ts @@ -1,5 +1,5 @@ // Vendored from https://github.com/withastro/starlight/blob/a171a996b842f1fdb37a0bdbb2c9d86e1073e1a4/packages/starlight/schemas/badge.ts# -import { z } from "astro:schema"; +import { z } from "astro/zod"; const badgeBaseSchema = z.object({ variant: z @@ -13,14 +13,13 @@ const badgeSchema = badgeBaseSchema.extend({ }); const i18nBadgeSchema = badgeBaseSchema.extend({ - text: z.union([z.string(), z.record(z.string())]), + text: z.union([z.string(), z.record(z.string(), z.string())]), }); -export const BadgeComponentSchema = badgeSchema - .extend({ - size: z.enum(["small", "medium", "large"]).default("small"), - }) - .passthrough(); +export const BadgeComponentSchema = z.looseObject({ + ...badgeSchema.shape, + size: z.enum(["small", "medium", "large"]).default("small"), +}); export type BadgeComponentProps = z.input; diff --git a/src/schemas/types/sidebar.ts b/src/schemas/types/sidebar.ts index d69ba71b73754c3..e5b367e75875e83 100644 --- a/src/schemas/types/sidebar.ts +++ b/src/schemas/types/sidebar.ts @@ -6,22 +6,19 @@ * https://github.com/withastro/starlight/blob/main/packages/starlight/schema.ts */ -import { z } from "astro:schema"; -import type { AstroBuiltinAttributes } from "astro"; -import type { HTMLAttributes } from "astro/types"; +import { z } from "astro/zod"; /** * From https://github.com/withastro/starlight/blob/main/packages/starlight/schemas/badge.ts */ const linkHTMLAttributesSchema = z.record( + z.string(), z.union([z.string(), z.number(), z.boolean(), z.undefined()]), -) as z.Schema< - Omit, keyof AstroBuiltinAttributes | "children"> ->; +); const SidebarLinkItemHTMLAttributesSchema = () => - linkHTMLAttributesSchema.default({}); + linkHTMLAttributesSchema.prefault({}); /** * https://github.com/withastro/starlight/blob/main/packages/starlight/schemas/sidebar.ts @@ -74,7 +71,7 @@ export const sidebar = z }) .optional(), }) - .default({}) + .prefault({}) .describe( "Used to configure various sidebar options. Refer to [Sidebar](/style-guide/frontmatter/sidebar/).", ); diff --git a/src/schemas/videos.ts b/src/schemas/videos.ts index 48b75e70aedfcbe..fcffefeb38d22cf 100644 --- a/src/schemas/videos.ts +++ b/src/schemas/videos.ts @@ -1,9 +1,9 @@ -import { z } from "astro:schema"; +import { z } from "astro/zod"; export const videosSchema = z .object({ id: z.string(), - link: z.string().url(), + link: z.url(), description: z.string(), tags: z.string().array().optional(), products: z.string().array(), diff --git a/src/schemas/warp-releases.ts b/src/schemas/warp-releases.ts index ead196975dff28a..d70389f972db886 100644 --- a/src/schemas/warp-releases.ts +++ b/src/schemas/warp-releases.ts @@ -1,4 +1,4 @@ -import { z } from "astro:schema"; +import { z } from "astro/zod"; export const warpReleasesSchema = z .object({ diff --git a/src/schemas/workers-ai-models.ts b/src/schemas/workers-ai-models.ts index 346c8df6f662f4b..571db79880bc160 100644 --- a/src/schemas/workers-ai-models.ts +++ b/src/schemas/workers-ai-models.ts @@ -1,4 +1,4 @@ -import { z } from "astro:schema"; +import { z } from "astro/zod"; export type WorkersAIModelsSchema = z.infer; @@ -17,11 +17,11 @@ export const workersAiModelsSchema = z.object({ properties: z .object({ property_id: z.string(), - value: z.string().or(z.array(z.object({}).passthrough())), + value: z.string().or(z.array(z.looseObject({}))), }) .array(), schema: z.object({ - input: z.object({}).passthrough(), - output: z.object({}).passthrough(), + input: z.looseObject({}), + output: z.looseObject({}), }), }); diff --git a/src/util/container.ts b/src/util/container.ts index 944b555f17f4999..bf22794f0a13d96 100644 --- a/src/util/container.ts +++ b/src/util/container.ts @@ -19,7 +19,6 @@ export async function entryToString( }); container.addServerRenderer({ name: "@astrojs/react", - // @ts-expect-error incompatible types renderer: reactRenderer, }); @@ -44,7 +43,6 @@ export async function componentToString( }); container.addServerRenderer({ name: "@astrojs/react", - // @ts-expect-error incompatible types renderer: reactRenderer, }); diff --git a/src/util/helpers.ts b/src/util/helpers.ts index 158c6cd81ff7f2b..258f531b978c03d 100644 --- a/src/util/helpers.ts +++ b/src/util/helpers.ts @@ -1,10 +1,9 @@ -import { z, type ZodEnum } from "astro/zod"; +import { z } from "astro/zod"; -export function zodEnumFromObjKeys( - obj: Record, -): ZodEnum<[K, ...K[]]> { - const [firstKey, ...otherKeys] = Object.keys(obj) as K[]; - return z.enum([firstKey, ...otherKeys]); +export function zodEnumFromObjKeys>(obj: T) { + type Keys = keyof T & string; + const keys = Object.keys(obj) as [Keys, ...Keys[]]; + return z.enum(keys); } export function formatBytes(bytes: number, decimals?: number) { diff --git a/v6_deps.md b/v6_deps.md new file mode 100644 index 000000000000000..e21f769fcf93b26 --- /dev/null +++ b/v6_deps.md @@ -0,0 +1,71 @@ +# cloudflare-docs + +| Package | Current version | Beta version | Owner | v6 compatible? | Notes | +|------------------------------|-----------------|------------------------------------------------------|--------------------------|--------------------|----------------------------------------| +| @astrojs/starlight | 0.36.0 | https://pkg.pr.new/@astrojs/starlight@3644 | @astrojs | Yes | | +| @astrojs/starlight-docsearch | 0.6.0 | https://pkg.pr.new/@astrojs/starlight-docsearch@3644 | @astrojs | Yes | | +| @astrojs/starlight-tailwind | 4.0.1 | https://pkg.pr.new/@astrojs/starlight-tailwind@3644 | @astrojs | Yes | | +| @astrojs/check | 0.9.4 | 0.9.7-beta.1 | @astrojs | Yes | | +| @astrojs/react | 4.2.5 | 5.0.0-beta.3 | @astrojs | Yes | | +| @astrojs/sitemap | 3.5.1 | 3.6.1-beta.3 | @astrojs | Yes | | +| @astrojs/rss | 4.0.12 | 4.0.15-beta.4 | @astrojs | Yes | | +| astro-skills | 0.0.5 | None | fredkschott (core team) | Yes | | +| starlight-image-zoom | 0.13.2 | None | HiDeoo (core team) | Yes (eventually) | | +| starlight-links-validator | 0.19.2 | None | HiDeoo (core team) | Known Zod 4 issues | | +| starlight-package-managers | 0.12.0 | None | HiDeoo (core team) | Yes (eventually) | | +| starlight-showcases | 0.3.1 | None | HiDeoo (core team) | Yes (eventually) | | +| astro-breadcrumbs | 3.3.1 | Unrelated | felix-berlin (community) | No | | +| astro-icon | 1.1.5 | None | natemoo-re (community) | Maybe | No peers declared; devDeps us astro@4 | +| astro-live-code | 0.0.6 | None | mattjennings (community) | Maybe | No peers declared; devDeps use astro@5 | +| starlight-scroll-to-top | 0.4.0 | None | frostybee (community) | Likely yes | peer: @astrojs/starlight@>=0.35 | + +# astro-icon + +| Package | Current version | Beta version | Owner | v6 compatible? | Notes | +|--------------------|-----------------|--------------------------------------------|----------|----------------|------------------------------------------| +| astro | ^4.0.0 (dev) | 6.0.0-beta.15 | @astrojs | Yes | peerDeps cap at ^4; no v6 range declared | +| @astrojs/starlight | ^0.15.1 (www) | https://pkg.pr.new/@astrojs/starlight@3644 | @astrojs | Yes | A dep of the docs, not the plugin | +| @astrojs/check | ^0.3.4 (www) | 0.9.7-beta.1 | @astrojs | Yes | A dep of the docs, not the plugin | + +# astro-breadcrumbs + +| Package | Current version | Beta version | Owner | v6 compatible? | Notes | +|---------------------------|-----------------|-----------------------------------------------------|--------------------------|--------------------|-----------------------------------| +| @astrojs/starlight | 0.37.6 | https://pkg.pr.new/@astrojs/starlight@3644 | @astrojs | Yes | A dep of the docs, not the plugin | +| @astrojs/mdx | 4.3.13 | 5.0.0-beta.8 | @astrojs | Yes | A dep of the demo, not the plugin | +| starlight-links-validator | 0.19.2 | None | HiDeoo ( core team) | Known Zod 4 issues | A dep of the docs, not the plugin | +| astro-matomo | 1.9.0 | https://pkg.pr.new/colbywhite/astro-matomo@12c1d60 | felix-berlin (community) | Yes | A dep of the docs, not the plugin | + +# astro-live-code + +| Package | Current version | Beta version | Owner | v6 compatible? | Notes | +|--------------------|-----------------|--------------------------------------------|----------|----------------|-------| +| astro | ^5.4.2 (dev) | 6.0.0-beta.15 | @astrojs | Yes | | +| @astrojs/starlight | ^0.32.2 (dev) | https://pkg.pr.new/@astrojs/starlight@3644 | @astrojs | Yes | | +| @astrojs/preact | ^4.0.1 (dev) | 5.0.0-beta.4 | @astrojs | Yes | | +| @astrojs/solid-js | ^5.0.5 (dev) | 6.0.0-beta.2 | @astrojs | Yes | | +| @astrojs/svelte | ^7.0.0 (dev) | 8.0.0-beta.3 | @astrojs | Yes | | +| @astrojs/vue | ^5.0.0 (dev) | 6.0.0-beta.1 | @astrojs | Yes | | + +No vitest. + +# starlight-scroll-to-top + +Monorepo with `packages/starlight-scroll-to-top` (plugin) and `docs/` (docs site). Plugin peerDeps: +`@astrojs/starlight: >=0.35` only — no direct `astro` version constraint. + +| Package | Current version | Beta version | Owner | v6 compatible? | Notes | +|--------------------|----------------------|--------------------------------------------|----------|----------------|----------------| +| astro | ^5.12.8 (dev + docs) | 6.0.0-beta.15 | @astrojs | Yes | | +| @astrojs/starlight | ^0.35.2 (dev + docs) | https://pkg.pr.new/@astrojs/starlight@3644 | @astrojs | Yes | | +| @astrojs/check | ^0.9.4 (docs) | 0.9.7-beta.1 | @astrojs | Yes | docs site only | + +No vitest. + +# astro-matomo + +| Package | Current version | Beta version | Owner | v6 compatible? | Notes | +|---------|-----------------|---------------|----------|----------------|-------| +| astro | ^5.16.5 (dev) | 6.0.0-beta.15 | @astrojs | Yes | | + +No other deps