WIP: nimbus build target#31721
Conversation
|
This pull request requires reviews from CODEOWNERS as it changes files that match the following patterns:
|
…caping or encoding' Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
|
PR Review: WIP: nimbus build target (#31721) SummaryThis PR introduces a parallel Nimbus documentation build target as priming work for the Starlight → Nimbus migration. It adds:
The strategy is sound: shared content in place, build artifacts isolated ( Labels
Issues Requiring Attention1.
|
|
/bonk review this PR, does it have any side-effects on the Starlight build which will still be used in production |
There was a problem hiding this comment.
This is a focused review of side-effects on the Starlight production build (the default path).
TL;DR
The branching strategy is sound and most of the default Starlight path is unchanged, but two shared files were modified that directly affect the production build:
- — adds visible border-radius to tables (visual side-effect)
- — type-only fix with no runtime side-effect
Verification (ran on this branch)
- �[2m16:33:32�[22m �[34m[astro-skills]�[39m Setting up Agent Skills Discovery routes
�[2m16:33:32�[22m �[34m[astro-skills]�[39m Agent Skills Discovery routes configured
�[2m16:33:33�[22m �[34m[content]�[39m Syncing content
�[33m�[1m16:33:33�[22m [WARN] [skills-loader]�[39m Skills directory "skills" does not exist.
�[2m16:33:33�[22m �[34m[skills-loader]�[39m Loaded 0 skill(s) from "skills"
�[2m16:33:36�[22m �[34m[content]�[39m Synced content
�[2m16:33:36�[22m �[34m[types]�[39m Generated �[2m4.40s�[22m
�[2m16:33:36�[22m �[34m[check]�[39m Getting diagnostics for Astro files in /home/runner/work/cloudflare-docs/cloudflare-docs...
�[96mbin/post-link-validation-comment/index.ts�[0m:�[93m93�[0m:�[93m4�[0m - �[93mwarning�[0m�[90m ts(7027): �[0mUnreachable code detected.
�[7m93�[0m return;
�[7m �[0m �[93m ~~~~~~�[0m
�[96mbin/post-link-validation-comment/index.ts�[0m:�[93m56�[0m:�[93m4�[0m - �[93mwarning�[0m�[90m ts(7027): �[0mUnreachable code detected.
�[7m56�[0m return;
�[7m �[0m �[93m ~~~~~~�[0m
�[96msrc/components/OneTrust.astro�[0m:�[93m20�[0m:�[93m11�[0m - �[93mwarning�[0m�[90m ts(6133): �[0m'OptanonWrapper' is declared but its value is never read.
�[7m20�[0m function OptanonWrapper() {}
�[7m �[0m �[93m ~~~~~~~~~~~~~~�[0m
�[96msrc/util/custom-loaders.ts�[0m:�[93m27�[0m:�[93m28�[0m - �[93mwarning�[0m�[90m ts(6385): �[0m'(params?: string | { normalize?: boolean | undefined; abort?: boolean | undefined; pattern?: RegExp | undefined; protocol?: RegExp | undefined; hostname?: RegExp | undefined; error?: string | ... 1 more ... | undefined; message?: string | undefined; } | undefined): ZodString' is deprecated.
�[7m27�[0m const source = z.string().url().parse(url);
�[7m �[0m �[93m ~~~�[0m
Result (375 files):
- 0 errors
- 0 warnings
- 4 hints — passes (0 errors)
- — passes
- Checking formatting...
All matched files use Prettier code style! — passes - �[2m16:34:15�[22m �[34m[astro-skills]�[39m Setting up Agent Skills Discovery routes
�[2m16:34:15�[22m �[34m[astro-skills]�[39m Agent Skills Discovery routes configured
RUN v4.1.9 /home/runner/work/cloudflare-docs/cloudflare-docs
Test Files 7 passed (7)
Tests 72 passed (72)
Start at 16:34:16
Duration 1.95s (transform 207ms, setup 0ms, import 785ms, tests 496ms, environment 2.58s) — 72/72 pass (Workers suite fails as expected without artifacts)
What is safe (no production side-effect)
- — the default path correctly falls back to the exact same Starlight , , and config blocks. The only addition to the default path is , which the inline comment correctly notes is dev-watcher only.
- — new deps (, , iconify sets, fonts, , ) are all that are only imported by , which is behind the conditional dynamic import.
- — the lockfile adds for the optional peer dep of , but existing package versions are unchanged (confirmed by diff: only tarball-URL normalizations for packages). �[2m16:34:23�[22m �[34m[astro-skills]�[39m Setting up Agent Skills Discovery routes
�[2m16:34:23�[22m �[34m[astro-skills]�[39m Agent Skills Discovery routes configured
�[2m16:34:24�[22m �[34m[content]�[39m Syncing content
�[33m�[1m16:34:24�[22m [WARN] [skills-loader]�[39m Skills directory "skills" does not exist.
�[2m16:34:24�[22m �[34m[skills-loader]�[39m Loaded 0 skill(s) from "skills"
�[2m16:34:27�[22m �[34m[content]�[39m Synced content
�[2m16:34:27�[22m �[34m[types]�[39m Generated �[2m4.40s�[22m
�[2m16:34:27�[22m �[34m[check]�[39m Getting diagnostics for Astro files in /home/runner/work/cloudflare-docs/cloudflare-docs...
�[96mbin/post-link-validation-comment/index.ts�[0m:�[93m93�[0m:�[93m4�[0m - �[93mwarning�[0m�[90m ts(7027): �[0mUnreachable code detected.
�[7m93�[0m return;
�[7m �[0m �[93m ~~~~~~�[0m
�[96mbin/post-link-validation-comment/index.ts�[0m:�[93m56�[0m:�[93m4�[0m - �[93mwarning�[0m�[90m ts(7027): �[0mUnreachable code detected.
�[7m56�[0m return;
�[7m �[0m �[93m ~~~~~~�[0m
�[96msrc/components/OneTrust.astro�[0m:�[93m20�[0m:�[93m11�[0m - �[93mwarning�[0m�[90m ts(6133): �[0m'OptanonWrapper' is declared but its value is never read.
�[7m20�[0m function OptanonWrapper() {}
�[7m �[0m �[93m ~~~~~~~~~~~~~~�[0m
�[96msrc/util/custom-loaders.ts�[0m:�[93m27�[0m:�[93m28�[0m - �[93mwarning�[0m�[90m ts(6385): �[0m'(params?: string | { normalize?: boolean | undefined; abort?: boolean | undefined; pattern?: RegExp | undefined; protocol?: RegExp | undefined; hostname?: RegExp | undefined; error?: string | ... 1 more ... | undefined; message?: string | undefined; } | undefined): ZodString' is deprecated.
�[7m27�[0m const source = z.string().url().parse(url);
�[7m �[0m �[93m ~~~�[0m
Result (375 files):
- 0 errors
- 0 warnings
- 4 hints passing confirms it is inert for the Starlight target.
- — correctly scoped to the author's PRs only () and non-deploying. Zero impact on production CI.
- — only adds and to .
What has a production side-effect
**** — This shared stylesheet adds to and border-radius corner rules for first/last header cells. Because in loads every file under into Starlight's , this will change the visual appearance of tables in the current production Starlight build. If this was an intentional design improvement, it should be noted in the PR description. If it was intended only for Nimbus, it should move to instead.
**** — Changes to (two occurrences). This is a correct type-level fix with no runtime behavior change, but it is a modification to shared production code driven by the lockfile changes.
Previous review follow-up
The three items flagged in the earlier review appear resolved in the current branch state:
- The regression is gone (lint passes).
- The type-check failure is fixed via the rename.
- now specifically ignores rather than the whole directory, so being tracked is no longer inconsistent.
Bottom line
The infrastructure branching is clean, but the ** change is a genuine, visible side-effect on the Starlight production build**. I'd flag that for explicit confirmation before merging.
There was a problem hiding this comment.
This is a focused review of side-effects on the Starlight production build (the default BUILD_TARGET path).
TL;DR
The branching strategy is sound and most of the default Starlight path is unchanged, but two shared files were modified that directly affect the production build:
src/styles/table.css— adds visible border-radius to tables (visual side-effect)src/plugins/rehype/heading-slugs.ts— type-only fix with no runtime side-effect
Verification (ran on this branch)
pnpm run check— passes (0 errors)pnpm run lint— passespnpm run format:core:check— passespnpm run test:prebuild— 72/72 pass (Workers suite fails as expected withoutdist/artifacts)
What is safe (no production side-effect)
astro.config.ts— the defaultBUILD_TARGETpath correctly falls back to the exact same Starlightmarkdown,integrations, andviteconfig blocks. The only addition to the default path isvite.server.watch.ignored, which the inline comment correctly notes is dev-watcher only.package.json— new deps (nimbus-docs,satteri, iconify sets, fonts,clsx,tailwind-merge) are alldevDependenciesthat are only imported bysrc/nimbus/astro-config.ts, which is behind the conditionalBUILD_TARGET=nimbusdynamic import.pnpm-lock.yaml— the lockfile adds@astrojs/markdown-satteri@0.2.1for the optional peer dep of@astrojs/mdx, but existing package versions are unchanged (confirmed by diff: only tarball-URL normalizations for@cloudflare/*packages).pnpm run checkpassing confirms it is inert for the Starlight target..github/workflows/nimbus-build.yml— correctly scoped to the author's PRs only (if: github.event.pull_request.user.login == 'MohamedH1998') and non-deploying. Zero impact on production CI.tsconfig.json— only addsdist-nimbusandsrc/nimbustoexclude.
What has a production side-effect
src/styles/table.css — This shared stylesheet adds border-radius: 0.75rem to .sl-markdown-content table and border-radius corner rules for first/last header cells. Because autogenStyles() in astro.config.ts loads every file under src/styles/ into Starlight's customCss, this will change the visual appearance of tables in the current production Starlight build. If this was an intentional design improvement, it should be noted in the PR description. If it was intended only for Nimbus, it should move to src/nimbus/styles/ instead.
src/plugins/rehype/heading-slugs.ts — Changes MdxTextExpression to MdxTextExpressionHast (two occurrences). This is a correct type-level fix with no runtime behavior change, but it is a modification to shared production code driven by the lockfile changes.
Previous review follow-up
The three items flagged in the earlier ask-bonk review appear resolved in the current branch state:
- The
@ts-ignoreregression is gone (lint passes). - The
heading-slugs.tstype-check failure is fixed via theMdxTextExpressionHastrename. .gitignorenow specifically ignores.nimbus/lint.jsonrather than the whole.nimbus/directory, so.nimbus/routes.jsonbeing tracked is no longer inconsistent.
Bottom line
The infrastructure branching is clean, but the table.css change is a genuine, visible side-effect on the Starlight production build. I'd flag that for explicit confirmation before merging.
|
Review posted to PR #31721. Short answer: The branching strategy is clean and the default Starlight build path is almost entirely untouched, but I found one genuine visual side-effect on production Starlight:
Everything else is safe:
I also flagged that |
Summary
Priming work for the Starlight → Nimbus migration. Single branch by design — this will not be split. It's large because it vendors the Nimbus app in one place; review is aided by the fact that none of it is wired into production.
What it adds
Derisked — no impact on production, contributors, or CI (verified on this branch vs production):
Out of scope / later PRs: output contracts, parity gate, and the cutover (the flip to Nimbus is its own reversible PR).
Documentation checklist