feat: serve blog, learning center, and articles from the static build (wave 2)#2075
Merged
Conversation
moonming
force-pushed
the
feat/astro-wave2
branch
4 times, most recently
from
July 23, 2026 08:23
da13842 to
9f154e0
Compare
juzhiyuan
previously approved these changes
Jul 23, 2026
LiteSun
previously approved these changes
Jul 23, 2026
moonming
force-pushed
the
feat/astro-wave2
branch
from
July 23, 2026 08:36
9f154e0 to
c48a16d
Compare
moonming
force-pushed
the
feat/astro-wave2
branch
from
July 23, 2026 08:48
c48a16d to
92a2198
Compare
… (wave 2) Second wave of the incremental migration in next/MIGRATION.md. The /blog/ (EN+ZH), /learning-center/, /articles/, and /events/archive/ subtrees are now produced by the zero-JS Astro build; every other URL is still produced by Docusaurus. Deploy pipeline: - the Astro step syncs blog/learning-center/articles markdown from this very checkout (WEBSITE_REPO env) before building — no external fetches - a parity gate fails the deploy if any URL Docusaurus produced under a migrated prefix is missing from the Astro build - the overlay allowlist extends to the wave-2 subtrees; Docusaurus' RSS/atom feeds for learning-center/articles are carried into the tree so feed URLs stay alive Astro pages: - blog tag pages (10 EN + 6 ZH + index) and per-post tag links, matching the production URL set exactly - article pages emit og:type=article like production Old homepage removal: - the React homepage and its section components leave the website workspace (the / route is produced by Astro since wave 1; keeping it in the bundle showed the stale page on client-side navigations) - all four workspaces' navbar logos use pathname:/// for a full-page navigation to the static homepage - update-sitemap-loc.js re-adds the / and /zh/ entries the website workspace's sitemap no longer contains Verified against the current asf-site tree: index.html count unchanged (4306), wave-2 subtree URL sets byte-exact vs production (0 missing, 0 extra), 8/8 feeds byte-identical, all 8681 files outside the allowlist untouched, sitemap.xml untouched, head parity on sampled posts (canonical/title/og:type/JSON-LD/hreflang). NOT for direct merge: needs the usual reviews.
moonming
force-pushed
the
feat/astro-wave2
branch
from
July 23, 2026 08:59
92a2198 to
4c80f39
Compare
LiteSun
approved these changes
Jul 23, 2026
juzhiyuan
approved these changes
Jul 23, 2026
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.
What
Wave 2 of the incremental migration in
next/MIGRATION.md(wave 1 = the landing pages, #2073): the/blog/(EN+ZH, ~735 URLs),/learning-center/,/articles/, and/events/archive/subtrees are now produced by the zero-JS Astro build. Every other URL — docs, plugins, team, downloads — is still produced by Docusaurus, byte-identical.These subtrees were chosen because their markdown lives in this repo: the Astro step syncs it straight from the checkout, no external fetches, and the build stays fast (~13 s for 924 pages).
Deploy pipeline
index.html, zh/index.html, _astro, imgto the wave-2 subtrees (whole-subtree replacement).Old React homepage removal
The
/route has been produced by Astro since wave 1, but the React homepage stayed inside the website workspace's bundle — so a client-side navigation to/(e.g. clicking the navbar logo from/plugins/) rendered the stale page. This PR:website/src/pages/index.tsx+ its section components and landing styles (Video.tsx/video.cssandHeroCanvas.tsxare pre-existing unreferenced code, left as-is)href: 'pathname:///'withtarget: '_self'— the Link resolver injectstarget="_blank"onpathname://URLs otherwise, which is why the repo's existing locale-dropdown usages also pass an explicit targetto="/"would dead-end in the SPA now that/is not a client route)update-sitemap-loc.jsto re-add the/and/zh/entries the website workspace's sitemap no longer contains (verified against the real sitemap: idempotent, +1 entry, priority 1.0)Contract & verification
Assembled against the current
asf-sitetree and asserted:/blog/blog/...; blog tag pages 10 EN + 6 ZH match the production dirs exactly)sitemap.xmluntouched by the overlayog:type=article, JSON-LDBlogPosting, hreflang — all match production (including the one post whose frontmatter slug starts with/— its leading slash is stripped so the canonical is single-slash, exactly as Docusaurus normalizes it)Notes for reviewers
<head>shape; the visible chrome is the same header/footer as the wave-1 landing page./blog/tags/and/blog/page/remain robots-disallowed and out of the sitemap, as today.pull_requesttrigger), so a regression aborts the deploy before publishing rather than failing a PR check; and a wrongWEBSITE_REPOwould sync zero posts, which the same gate then catches as hundreds of missing URLs.