docs: Migrate docs site to @vercel/geistdocs package - #13320
Conversation
Replace the locally-vendored geistdocs runtime in apps/docs with the published @vercel/geistdocs package, keeping site-specific content, routes, and product UI local as thin package-backed adapters. Adopted from the package: - Docs page via createDocsPage (MobileDocsBar, page actions, feedback) - Docs/home layouts, provider, OSS navbar, search and Ask AI routes - Per-page markdown (llms.mdx), sitemap.md, new agents.md, proxy with AI-agent rewrites and markdown negotiation - MDX component defaults, design tokens via package styles.css Kept custom (deliberate deviations): - Curated /llms.txt index and /llms-full.txt (public contract) - HMAC-signed OG images, rss/feed.xml, robots, Redis crawler sitemap - Four-column footer (Fides cookie link), versioned-docs banner via the sidebarTop slot, RemoteCacheCounter via page-action extras - PackageManagerTabs, reactflow diagram system, heading-badge pipeline Version alignment: next 16.2.6 (exact peer pin), fumadocs-core/ui 16.2.2, fumadocs-mdx 14.0.4, fumadocs-openapi 10.2.7. Removed ~20 dependencies owned by deleted vendored code. Site components written against Tailwind default palettes were translated to the Geist scale (the package remaps gray/blue/red/green etc. to --ds-* tokens, which are much lighter at the same step). .npmrc: hoist tailwindcss so the package styles.css can resolve its internal @import under this repo's restricted hoist-pattern list.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Re: Navbar is the package OSS variant (Vercel OSS products dropdown; no Turborepo logo asset exists upstream yet) I will fix this upstream, and bump the geistdocs version on this PR to pull in the Turborepo name and logo into the nav dropdown |
|
Upstream PR to add the Turborepo lockup to the geistdocs OSS navbar dropdown: vercel/geistdocs#139. Once that's merged and released, this PR will bump |
Pulls in vercel/geistdocs#139, which adds the Turborepo lockup to the default OSS products dropdown in the package navbar.
|
vercel/geistdocs#139 is merged and released as 1.9.0 (after fixing the release pipeline in vercel/geistdocs#141 — npm 12.0.0 broke trusted publishing). Bumped |
|
Team feedback: the old header's GitHub repo link is missing from the package navbar. Upstream fix: vercel/geistdocs#144 — renders the GitHub icon in the navbar action cluster from |
Pulls in vercel/geistdocs#144, which renders a GitHub icon link in the navbar action cluster (plus a mobile menu entry) from the site's github config, restoring the header GitHub link from the pre-migration navbar.
|
vercel/geistdocs#144 released as 1.11.0 — bumped in 2defae2. The navbar now renders the GitHub icon link ( |
## Release v2.10.5-canary.5 > [!CAUTION] > Versioned docs aliasing FAILED. [View logs](https://github.com/vercel/turborepo/actions/runs/29092745941) ### Changes - release(turborepo): 2.10.5-canary.4 (#13325) (`6626261`) - feat: Run the Rust workspace tests through nextest via command override (#13316) (`6711bbc`) - feat: Engage the Remote Cache and sccache compile cache for Rust CI (#13292) (`1ae2065`) - ci: Pin GitHub Actions to full commit SHAs (#13143) (`ad614d6`) - fix: Make npm prune rehoisting deterministic and complete (#13323) (`2dac737`) - feat: Report incremental cache reuse in the run summary (#13327) (`9f3d24a`) - chore: Remove planning docs (#13329) (`5cd1d02`) - docs: Migrate docs site to @vercel/geistdocs package (#13320) (`5517bb2`) - ci: Update Remote Cache action (#13330) (`4a39887`) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
## Release v2.10.5-canary.6 > [!CAUTION] > Versioned docs aliasing FAILED. [View logs](https://github.com/vercel/turborepo/actions/runs/29208587549) ### Changes - chore: Remove planning docs (#13329) (`5cd1d02`) - docs: Migrate docs site to @vercel/geistdocs package (#13320) (`5517bb2`) - ci: Update Remote Cache action (#13330) (`4a39887`) - release(turborepo): 2.10.5-canary.5 (#13331) (`f699719`) - ci: Remove path-based workflow scheduling (#13332) (`84f2b2c`) - fix: Resolve EADDRINUSE in kitchen-sink api dev script (#13328) (`5886c71`) - ci: Disable telemetry messages in workflows (#13334) (`2218dea`) - fix: Prevent Cargo run tasks from being cached (#13335) (`68f449b`) - fix: Isolate Cargo cache by host platform (#13337) (`c71f5cd`) - fix: Continue TUI text selection beyond viewport (#13338) (`9cbfd90`) - ci: Dogfood Cargo target restoration (#13336) (`8ad90a7`) - fix: Require current Cargo lockfiles for caching (#13339) (`3a3d381`) - fix: Reject unsupported Cargo local packages (#13340) (`708d656`) - fix: Allow outputs outside package roots (#13342) (`de6a0d3`) - fix: Resolve Cargo lock dependencies by source (#13343) (`2223a33`) - docs: Update Cargo workspace support (#13349) (`241ada8`) - fix: Build Ghostty for baseline CPUs (#13352) (`a2a04cc`) - fix: Preserve watch rerun semantics for task inputs (#13351) (`6ed5eab`) - fix: Isolate Command Overrides From Toolchain Cache I/O (#13354) (`e76f0b4`) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
## Release v2.10.5 > [!CAUTION] > Versioned docs aliasing FAILED. [View logs](https://github.com/vercel/turborepo/actions/runs/29267191097) ### Changes - perf: Evaluate simple include globs without wax compilation (#13285) (`189897a`) - chore: Dogfood native Cargo support in this repository (#13283) (`42f067b`) - release(turborepo): 2.10.4 (#13286) (`f2fce38`) - ci: Remove dead sccache configuration (#13289) (`558df3f`) - feat: Serve the Remote Cache as an sccache backend for Cargo tasks (#13288) (`0d9803f`) - fix: Reject output path traversal (#13290) (`733ccca`) - fix: Disable the sccache proxy when remote cache use is off (#13291) (`3249e22`) - feat: Embed sccache so the Cargo compile cache needs no installation (#13293) (`b6d0035`) - release(turborepo): 2.10.5-canary.1 (#13294) (`e6cd498`) - fix: Pin a flag-aware turbo canary for the eve-agent deployment (#13295) (`e60a4bd`) - fix: Make the sccache compile cache actually cache (#13296) (`2ac099c`) - release(turborepo): 2.10.5-canary.2 (#13297) (`e6e6fb6`) - fix: Stop ambient CARGO_INCREMENTAL from suppressing compile cache injection (#13298) (`784af75`) - fix: Never let compile cache storage failures fail the build (#13299) (`a6fc6c5`) - test: Add outputs path-traversal negative-case regression tests (#13300) (`2ff6df9`) - release(turborepo): 2.10.5-canary.3 (#13302) (`7e44a29`) - ci: Authenticate to Remote Cache via OIDC token exchange (#13303) (`a86839c`) - fix: Keep pnpm patches with version range keys during prune (#13307) (`3c27a89`) - test: Scrub ambient turbo configuration from integration test children (#13306) (`b03d0d6`) - fix: Show toolchain tasks in the TUI and never run in silence (#13308) (`d7622b6`) - ci: Fix change detection on push events (#13304) (`eec3d61`) - refactor: Rename the Cargo toolchain id to rust (#13311) (`a548b02`) - fix: Remove extraneous bun.lock entries during prune (#13317) (`382e9f5`) - feat: Require a user-declared name for the Cargo workspace package (#13312) (`5f01746`) - feat: Parse and validate the task command field (#13313) (`389ea49`) - chore: Harden turbo-vsc to invoke turbo without a shell (#13319) (`4a19b6e`) - feat: Resolve and execute task command overrides (#13315) (`a549baa`) - release(turborepo): 2.10.5-canary.4 (#13325) (`6626261`) - feat: Run the Rust workspace tests through nextest via command override (#13316) (`6711bbc`) - feat: Engage the Remote Cache and sccache compile cache for Rust CI (#13292) (`1ae2065`) - ci: Pin GitHub Actions to full commit SHAs (#13143) (`ad614d6`) - fix: Make npm prune rehoisting deterministic and complete (#13323) (`2dac737`) - feat: Report incremental cache reuse in the run summary (#13327) (`9f3d24a`) - chore: Remove planning docs (#13329) (`5cd1d02`) - docs: Migrate docs site to @vercel/geistdocs package (#13320) (`5517bb2`) - ci: Update Remote Cache action (#13330) (`4a39887`) - release(turborepo): 2.10.5-canary.5 (#13331) (`f699719`) - ci: Remove path-based workflow scheduling (#13332) (`84f2b2c`) - fix: Resolve EADDRINUSE in kitchen-sink api dev script (#13328) (`5886c71`) - ci: Disable telemetry messages in workflows (#13334) (`2218dea`) - fix: Prevent Cargo run tasks from being cached (#13335) (`68f449b`) - fix: Isolate Cargo cache by host platform (#13337) (`c71f5cd`) - fix: Continue TUI text selection beyond viewport (#13338) (`9cbfd90`) - ci: Dogfood Cargo target restoration (#13336) (`8ad90a7`) - fix: Require current Cargo lockfiles for caching (#13339) (`3a3d381`) - fix: Reject unsupported Cargo local packages (#13340) (`708d656`) - fix: Allow outputs outside package roots (#13342) (`de6a0d3`) - fix: Resolve Cargo lock dependencies by source (#13343) (`2223a33`) - docs: Update Cargo workspace support (#13349) (`241ada8`) - fix: Build Ghostty for baseline CPUs (#13352) (`a2a04cc`) - fix: Preserve watch rerun semantics for task inputs (#13351) (`6ed5eab`) - fix: Isolate Command Overrides From Toolchain Cache I/O (#13354) (`e76f0b4`) - release(turborepo): 2.10.5-canary.6 (#13355) (`f82e2c7`) - fix: Include patched Ghostty crate in Cargo workspace (#13357) (`b3cd7a1`) - ci: Shard Rust tests across runners (#13356) (`ef122d9`) - fix: Hash Cargo build environment inputs (#13348) (`d533266`) - fix: Synchronize Cargo prune Docker lockfile (#13350) (`ed17249`) - chore: Update agents app Eve dependency (#13364) (`38aa7d2`) - fix: Preserve Yarn package extension ranges when pruning (#13363) (`6ed2fb4`) - refactor: Add `Toolchain` output availability (#13360) (`82bcfb6`) --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

Description
Migrates
apps/docsfrom locally-vendored geistdocs components to the published@vercel/geistdocspackage (1.8.2), following the official migration guide. Site-specific content, routes, and product UI stay local as thin package-backed adapters.~127 files, +2.2k/−14.4k lines (net −12.2k).
Adopted from the package
createDocsPage(MobileDocsBar, page actions, built-in feedback withsiteId: "turborepo")GEISTDOCS_CHAT_PROXY_URLproxy mode)llms.mdx,sitemap.md, newagents.md(with a new agent-readiness config ingeistdocs.tsx)createProxy: markdown negotiation,.mdURL rewrites, new AI-agent UA rewrites, md-tracking aligned to the package event shapestyles.cssapps/docs/content/docs/{path})Kept custom (deliberate deviations)
/llms.txtindex +/llms-full.txt— the package route is a full corpus, which would change the public contractmetadatacallback), OG routes, rss/feed.xml, robots, Redis crawler sitemap, binaries/version + remote-cache APIsVersionWarningbanner via the packagesidebarTopslot;RemoteCacheCountermoved from TOC header to page-action extras (no TOC-header hook exists)PackageManagerTabs, reactflow diagram system, heading-badge rehype pipeline, shiki notation transformersVersion alignment
next16.2.9 → 16.2.6 (the package peer-pins next exactly)fumadocs-core/ui→ 16.2.2,fumadocs-mdx→ 14.0.4 (package pins)fumadocs-openapi→ 10.2.7 (10.3+ peers fumadocs ^16.5, incompatible)ai@5,@ai-sdk/react@2, dexie, jotai, streamdown, cmdk, vaul, recharts, …)Repo-level change
.npmrc: addedhoist-pattern[]=tailwindcss— this repo's explicit hoist list disables pnpm's default hoisting, which broke the package CSS's internal@import "tailwindcss"resolution.Palette translation
The package remaps Tailwind's default
gray/blue/red/green/… scales to Geist--ds-*tokens (much lighter at the same step). Site components written against Tailwind defaults (blog back-link/dates, version banner, devtools error banner, green file trees) were translated to the equivalent Geist steps;dark:variants dropped since Geist tokens are theme-aware.Behavior changes to review
/api/chatis gone (package gateway route has none)agents.mddescribes/llms.txtas a full-content surface, though this site keeps it as an indexTesting Instructions
cd apps/docs fnm use 24 rm -rf .next OG_IMAGE_SECRET=local-dev-secret pnpm devVerified locally (node 24):
check-types(TS6),check-openapi, fullnext build+next start; curled/docs,/docs.md,Accept: text/markdownnegotiation, agent-UA rewrite,/llms.txt(still the index),/llms-full.txt,/sitemap.md,/agents.md, search API, blog, showcase, terms, devtools, openapi; HTML greps confirm page actions, signedog:image, markdown alternates, edit-source URLs, and RemoteCacheCounter.check-linksflags 2 pre-existing broken content links (zero content changes in this PR).