Migrate docs to package-backed geistdocs - #2222

Merged
molebox merged 14 commits into
mainfrom
migrate-docs
Jul 13, 2026
Merged

Migrate docs to package-backed geistdocs#2222
molebox merged 14 commits into
mainfrom
migrate-docs

Conversation

@molebox

@moleboxmolebox commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

Previews

Summary

Migrates the docs app from the old copied geist/Fumadocs/custom runtime to the package-backed @vercel/geistdocs architecture.

Changes

  • Added @vercel/geistdocs and aligned supported Next/React versions.
  • Replaced local docs page, layout, MDX, search, chat, Markdown, sitemap, agents, and proxy runtime code with thin package-backed adapters.
  • Preserved public docs route families:
    • /docs
    • /cookbook
    • /v5/docs
    • /v5/cookbook
    • /worlds
    • /llms.txt
    • /sitemap.md
    • /agents.md
    • page-level .md routes
  • Kept project-specific content, homepage, worlds pages, OG routes, RSS, metadata, and styling overrides local.
  • Removed copied Geistdocs/AI chat/search/sidebar/page-action runtime code.

Verification

  • pnpm --filter docs build passes.
  • Manually checked local docs routes and machine-readable surfaces.
  • Verified code blocks include Shiki token styles and package stylesheet palette.
  • Verified no deep imports from @vercel/geistdocs/dist.
  • Verified no public/llms.txt masks the App Router route.

Notes

Full docs lint/typecheck still have pre-existing unrelated failures in generated .source, homepage visual lint, components/worlds/BenchmarkChart.tsx, and lib/github.ts.

@vercel

vercelBot commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

@changeset-bot

changeset-botBot commented Jun 2, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 3e0bc8f

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@github-actions

github-actionsBot commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

🧪 E2E Test Results

All tests passed

Summary

PassedFailedSkippedTotal
✅ ▲ Vercel Production145302301683
✅ 💻 Local Development161702191836
✅ 📦 Local Production161702191836
✅ 🐘 Local Postgres161702191836
✅ 🪟 Windows15300153
✅ 📋 Other89401771071
Total7351010648415

Details by Category

✅ ▲ Vercel Production
AppPassedFailedSkipped
✅ astro126027
✅ example126027
✅ express126027
✅ fastify126027
✅ hono126027
✅ nextjs-turbopack15003
✅ nextjs-webpack15003
✅ nitro126027
✅ nuxt126027
✅ sveltekit14508
✅ vite126027
✅ 💻 Local Development
AppPassedFailedSkipped
✅ astro-stable128025
✅ express-stable128025
✅ fastify-stable128025
✅ hono-stable128025
✅ nextjs-turbopack-canary134019
✅ nextjs-turbopack-stable15300
✅ nextjs-webpack-canary134019
✅ nextjs-webpack-stable15300
✅ nitro-stable128025
✅ nuxt-stable128025
✅ sveltekit-stable14706
✅ vite-stable128025
✅ 📦 Local Production
AppPassedFailedSkipped
✅ astro-stable128025
✅ express-stable128025
✅ fastify-stable128025
✅ hono-stable128025
✅ nextjs-turbopack-canary134019
✅ nextjs-turbopack-stable15300
✅ nextjs-webpack-canary134019
✅ nextjs-webpack-stable15300
✅ nitro-stable128025
✅ nuxt-stable128025
✅ sveltekit-stable14706
✅ vite-stable128025
✅ 🐘 Local Postgres
AppPassedFailedSkipped
✅ astro-stable128025
✅ express-stable128025
✅ fastify-stable128025
✅ hono-stable128025
✅ nextjs-turbopack-canary134019
✅ nextjs-turbopack-stable15300
✅ nextjs-webpack-canary134019
✅ nextjs-webpack-stable15300
✅ nitro-stable128025
✅ nuxt-stable128025
✅ sveltekit-stable14706
✅ vite-stable128025
✅ 🪟 Windows
AppPassedFailedSkipped
✅ nextjs-turbopack15300
✅ 📋 Other
AppPassedFailedSkipped
✅ e2e-local-dev-nest-stable128025
✅ e2e-local-dev-tanstack-start-128025
✅ e2e-local-postgres-nest-stable128025
✅ e2e-local-postgres-tanstack-start-128025
✅ e2e-local-prod-nest-stable128025
✅ e2e-local-prod-tanstack-start-128025
✅ e2e-vercel-prod-tanstack-start126027

📋 View full workflow run

@github-actions

github-actionsBot commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

📊 Workflow Benchmarks

commit 3e0bc8f · Mon, 13 Jul 2026 12:56:24 GMT · run logs

Backend: vercel · app: nextjs-turbopack

MetricScenarioAvg (ms)P75 (ms)P90 (ms)P99 (ms)Samples
TTFSstream1299 (-13%)1731 🔴1781 🔴2206 🔴30
TTFShook + stream1694 (+6.9%)2000 🔴2239 🔴2860 🔴30
STSO1020 steps (1-20)272 (-18%)311 🔴399 🔴421 🔴19
STSO1020 steps (101-120)483 (+11%)533 🔴709 🔴747 🔴19
STSO1020 steps (1001-1020)902 (+8.5%)954 🔴983 🔴992 🔴19
WOstream1299 (-13%)17311781220630
WOhook + stream1694 (+6.9%)20002239286030
SLstream4194 (-19%)5537 🔴5833 🔴6044 🔴30
SLhook + stream4878 (-1.7%)5622 🔴5753 🔴5987 🔴30
📜 Previous results (3)

dc75b65

Fri, 10 Jul 2026 11:18:50 GMT · run logs

vercel / nextjs-turbopack

MetricScenarioAvg (ms)P75 (ms)P90 (ms)P99 (ms)Samples
TTFSstream1310 (+12%)1673 🔴1713 🔴2696 🔴30
TTFShook + stream1596 (+16%)1933 🔴1999 🔴2123 🔴30
STSO1020 steps (1-20)274 (+0.7%)293 🔴379 🔴524 🔴19
STSO1020 steps (101-120)435 (+4.3%)449 🔴631 🔴922 🔴19
STSO1020 steps (1001-1020)880 (-18%)946 🔴972 🔴1012 🔴19
WOstream1310 (+12%)16731713269630
WOhook + stream1596 (+16%)19331999212330
SLstream4706 (-4.4%)5595 🔴5837 🔴6162 🔴30
SLhook + stream4966 (-1.1%)5618 🔴5707 🔴5786 🔴30

8e0829a

Fri, 10 Jul 2026 10:21:25 GMT · run logs

vercel / nextjs-turbopack

MetricScenarioAvg (ms)P75 (ms)P90 (ms)P99 (ms)Samples
TTFSstream1254 (+7.3%)1683 🔴1716 🔴2022 🔴30
TTFShook + stream1487 (+8.1%)1888 🔴2026 🔴2132 🔴30
STSO1020 steps (1-20)278 (+2.4%)311 🔴412 🔴451 🔴19
STSO1020 steps (101-120)399 (-4.3%)412 🔴577 🔴648 🔴19
STSO1020 steps (1001-1020)876 (-19%)930 🔴960 🔴1001 🔴19
WOstream1254 (+7.3%)16831716202230
WOhook + stream1487 (+8.1%)18882026213230
SLstream4356 (-12%)5088 🔴5618 🔴5770 🔴30
SLhook + stream5016 (±0%)5559 🔴5592 🔴6653 🔴30

3b0b5fc

Thu, 09 Jul 2026 19:04:54 GMT · run logs

vercel / nextjs-turbopack

MetricScenarioAvg (ms)P75 (ms)P90 (ms)P99 (ms)Samples
TTFSstream1124 (+5.9%)1606 🔴1626 🔴2762 🔴30
TTFShook + stream1612 (+24%)1901 🔴1986 🔴2153 🔴30
STSO1020 steps (1-20)275 (+1.1%)297 🔴401 🔴461 🔴19
STSO1020 steps (101-120)404 (+0.7%)415 🔴629 🔴700 🔴19
STSO1020 steps (1001-1020)917 (+9.9%)991 🔴1095 🔴1194 🔴19
WOstream1124 (+5.9%)16061626276230
WOhook + stream1612 (+24%)19011986215330
SLstream4633 (-2.7%)5573 🔴5720 🔴5894 🔴30
SLhook + stream4853 (-1.4%)5313 🔴5535 🔴5756 🔴30

Avg deltas compare against the most recent benchmark run on main at the time of this run.

Metrics — TTFS: time to first step body execution · STSO: step-to-step overhead (gap between consecutive step bodies) · WO: workflow overhead (time outside step bodies, client start → last step body exit) · SL: stream latency (first chunk write → visible to the reader)

Scenarios — stream: one step that streams chunks back to the client; no hooks, so the run stays in turbo mode · hook + stream: registers a hook before the same streaming step, which exits turbo mode · 1020 steps: 1020 trivial sequential steps; STSO is measured between consecutive steps in the given step ranges

🟢/🔴 mark percentiles within/above target. Targets (p75/p90/p99, ms) — TTFS 200/300/600 · SL 50/60/125 · STSO (1-20) 20/30/60 · STSO (101-120) 30/45/90 · STSO (1001-1020) 40/60/120

TTFS/WO compare client vs deployment clocks and SL compares the step runner’s clock vs the client’s (NTP-synced in CI). WO ends at the last step body exit, the closest observable proxy for the final step-completion request.

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Migrates the docs app from a locally-copied Geist/Fumadocs runtime to the package-backed @vercel/geistdocs architecture, keeping existing public route families while replacing most runtime/UI plumbing with thin adapters around the upstream package.

Changes:

  • Adopt @vercel/geistdocs for docs layout/MDX/rendering, plus package-provided search/chat/LLMs/sitemap/agents/mcp routes.
  • Remove large amounts of locally maintained UI/runtime code (chat/search/sidebar/layout/actions) in favor of upstream components and helpers.
  • Update docs tooling/config (source config + link lint + sitemap/RSS generation) to work with versioned Geistdocs sources.

Reviewed changes

Copilot reviewed 223 out of 224 changed files in this pull request and generated 2 comments.

Show a summary per file
FileDescription
packages/docs-typecheck/src/tests/sitemap-guard.test.tsUpdates the sitemap guard to account for package-backed markdown routes.
docs/source.config.tsSwitches to Geistdocs-provided Zod schemas and default source config.
docs/scripts/lint.tsAdapts link linting to pull raw MDX content from Geistdocs pages.
docs/package.jsonAdds @vercel/geistdocs, updates Next/React versions, removes unused local deps.
docs/next.config.tsRemoves Accept-header rewrites now handled elsewhere in the new architecture.
docs/lib/tsdoc/tsdoc.tsxAdds error handling + switches Callout import to Geistdocs package component.
docs/lib/geistdocs/versions.tsMakes v4/v5 version selection explicit and updates versioned URL docstring.
docs/lib/geistdocs/version-source.tsTightens typing for rewriteUrl and preserves URL rewriting behavior.
docs/lib/geistdocs/i18n.tsRemoves local i18n wiring in favor of package-backed provider/layout.
docs/lib/geistdocs/db.tsRemoves local Dexie chat persistence (chat now handled via package route/proxy).
docs/lib/geistdocs/config.tsxIntroduces centralized Geistdocs config (nav/content/versions/ai).
docs/hooks/geistdocs/use-version.tsxRemoves local version state provider/hook (replaced by package version select).
docs/hooks/geistdocs/use-sidebar.tsRemoves local jotai-based sidebar state hook (package-owned UI).
docs/hooks/geistdocs/use-chat.tsRemoves local jotai-based chat state hook (package-owned UI).
docs/geistdocs.tsxExtends site metadata (GitHub edit config + agent readiness config).
docs/content/docs/v5/migration-guides/migrating-from-trigger-dev.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/migration-guides/migrating-from-temporal.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/migration-guides/migrating-from-inngest.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/migration-guides/migrating-from-aws-step-functions.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/vite.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/tanstack-start.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/sveltekit.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/python.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/nuxt.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/nitro.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/next.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/nestjs.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/hono.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/fastify.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/express.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/astro.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/webhook-response-not-sent.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/timeout-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/start-invalid-workflow-function.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/serialization-failed.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/node-js-module-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/hook-conflict.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/fetch-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/abort-signal-timeout-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/integrations/sandbox.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/integrations/chat-sdk.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/integrations/ai-sdk.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/common-patterns/webhooks.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/common-patterns/scheduling.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/common-patterns/saga.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/common-patterns/rate-limiting.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/common-patterns/batching.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/agent-patterns/human-in-the-loop.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/agent-patterns/durable-agent.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/agent-patterns/agent-cancellation.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/advanced/upgrading-workflows.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/advanced/child-workflows.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/migration-guides/migrating-from-trigger-dev.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/migration-guides/migrating-from-temporal.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/migration-guides/migrating-from-inngest.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/migration-guides/migrating-from-aws-step-functions.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/vite.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/tanstack-start.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/sveltekit.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/python.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/nuxt.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/nitro.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/next.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/nestjs.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/hono.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/fastify.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/express.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/astro.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/webhook-response-not-sent.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/timeout-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/start-invalid-workflow-function.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/serialization-failed.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/node-js-module-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/hook-conflict.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/fetch-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/integrations/sandbox.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/integrations/chat-sdk.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/integrations/ai-sdk.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/common-patterns/webhooks.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/common-patterns/scheduling.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/common-patterns/saga.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/common-patterns/rate-limiting.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/common-patterns/batching.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/agent-patterns/human-in-the-loop.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/agent-patterns/durable-agent.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/agent-patterns/agent-cancellation.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/advanced/upgrading-workflows.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/advanced/child-workflows.mdxAdds CopyPrompt helper content.
docs/components/worlds/WorldTestingPerformance.tsxSwitches Tooltip usage to Geistdocs package tooltip component.
docs/components/worlds/WorldInstructions.tsxSwitches Button usage to Geistdocs package button component.
docs/components/worlds/WorldDetailHero.tsxSwitches Button/Tooltip usage to Geistdocs package components.
docs/components/worlds/WorldCardSimple.tsxSwitches Tooltip usage to Geistdocs package tooltip component.
docs/components/worlds/BenchmarkHistoryChart.tsxSwitches Dialog usage to Geistdocs package dialog component.
docs/components/ui/tooltip.tsxRemoves local tooltip implementation (now using package component).
docs/components/ui/toggle.tsxRemoves local UI component implementation.
docs/components/ui/toggle-group.tsxRemoves local UI component implementation.
docs/components/ui/textarea.tsxRemoves local UI component implementation.
docs/components/ui/switch.tsxRemoves local UI component implementation.
docs/components/ui/spinner.tsxRemoves local UI component implementation.
docs/components/ui/sonner.tsxRemoves local toaster implementation (feedback/chat UI removed).
docs/components/ui/slider.tsxRemoves local UI component implementation.
docs/components/ui/sheet.tsxRemoves local UI component implementation.
docs/components/ui/separator.tsxRemoves local UI component implementation.
docs/components/ui/scroll-area.tsxRemoves local UI component implementation.
docs/components/ui/resizable.tsxRemoves local UI component implementation.
docs/components/ui/radio-group.tsxRemoves local UI component implementation.
docs/components/ui/progress.tsxRemoves local UI component implementation.
docs/components/ui/popover.tsxRemoves local UI component implementation.
docs/components/ui/pagination.tsxRemoves local UI component implementation.
docs/components/ui/label.tsxRemoves local UI component implementation.
docs/components/ui/kbd.tsxRemoves local UI component implementation.
docs/components/ui/input.tsxRemoves local UI component implementation.
docs/components/ui/input-otp.tsxRemoves local UI component implementation.
docs/components/ui/hover-card.tsxRemoves local UI component implementation.
docs/components/ui/form.tsxRemoves local UI component implementation.
docs/components/ui/empty.tsxRemoves local UI component implementation.
docs/components/ui/dialog.tsxRemoves local UI component implementation.
docs/components/ui/collapsible.tsxRemoves local UI component implementation.
docs/components/ui/checkbox.tsxRemoves local UI component implementation.
docs/components/ui/button.tsxRemoves local UI component implementation (use Geistdocs package button).
docs/components/ui/button-group.tsxRemoves local UI component implementation.
docs/components/ui/aspect-ratio.tsxRemoves local UI component implementation.
docs/components/ui/alert.tsxRemoves local UI component implementation.
docs/components/ui/alert-dialog.tsxRemoves local UI component implementation.
docs/components/preview-install.tsxSwitches Button usage to Geistdocs package button component.
docs/components/geistdocs/x-button.tsxRemoves local social button implementation (package navbar/footer).
docs/components/geistdocs/video.tsxRemoves local video component (package MDX/components).
docs/components/geistdocs/version-switcher.tsxRemoves local version switcher UI (package versions UI).
docs/components/geistdocs/theme-toggle.tsxRemoves local theme toggle (package navbar/footer).
docs/components/geistdocs/search.tsxRemoves local search dialog/button (package search).
docs/components/geistdocs/scroll-top.tsxRemoves local scroll-to-top UI (package UI).
docs/components/geistdocs/rss-button.tsxRemoves local RSS button UI (package footer).
docs/components/geistdocs/provider.tsxReplaces local RootProvider wiring with Geistdocs package provider.
docs/components/geistdocs/open-in-chat.tsxRemoves local “open in chat” widget (package AI/chat).
docs/components/geistdocs/navbar.tsxRemoves local navbar (package navbar).
docs/components/geistdocs/navbar-logo.tsxRemoves local navbar logo component (package navbar).
docs/components/geistdocs/mobile-docs-bar.tsxRemoves local mobile docs bar (package docs layout).
docs/components/geistdocs/message-metadata.tsxRemoves local chat message metadata UI.
docs/components/geistdocs/mermaid.tsxRemoves local mermaid renderer (package MDX pipeline).
docs/components/geistdocs/mdx-components.tsxSwitches to createMdxComponents and wires custom components into package MDX system.
docs/components/geistdocs/language-selector.tsxRemoves local language selector (package navbar/footer).
docs/components/geistdocs/installer.tsxRemoves local installer widget (package UI).
docs/components/geistdocs/icons.tsxRemoves local icon helper.
docs/components/geistdocs/home-layout.tsxReplaces local Fumadocs layout wrapper with Geistdocs home layout.
docs/components/geistdocs/github-button.tsxRemoves local GitHub button (package footer).
docs/components/geistdocs/footer.tsxRemoves local footer (package footer).
docs/components/geistdocs/feedback.tsxRemoves local feedback UI flow.
docs/components/geistdocs/edit-source.tsxRemoves local “Edit this page” link (package handles via github config).
docs/components/geistdocs/docs-page.tsxRemoves local docs page wrapper (package docs layout).
docs/components/geistdocs/docs-layout.tsxSwitches to Geistdocs docs layout and adds version select + sidebar badges.
docs/components/geistdocs/desktop-menu.tsxRemoves local desktop menu (package navbar).
docs/components/geistdocs/copy-page.tsxRemoves local copy-page action UI.
docs/components/geistdocs/copy-chat.tsxRemoves local chat copy UI.
docs/components/geistdocs/code-block-tabs.tsxRemoves local code block tabs wrapper (package MDX/code).
docs/components/geistdocs/callout.tsxRemoves local callout wrappers (use package callout).
docs/components/geistdocs/ask-ai.tsxRemoves local ask-ai widget (package chat).
docs/components/custom/fluid-compute-callout.tsxSwitches Callout usage to Geistdocs package component.
docs/components/ai-elements/suggestion.tsxRemoves local AI UI elements.
docs/components/ai-elements/sources.tsxRemoves local AI UI elements.
docs/components/ai-elements/shimmer.tsxRemoves local AI UI elements.
docs/components/ai-elements/conversation.tsxRemoves local AI UI elements.
docs/app/styles/geistdocs.cssSwitches styling baseline to Geistdocs package stylesheet.
docs/app/sitemap.tsUpdates sitemap generation to iterate over versioned sources.
docs/app/sitemap.md/route.tsReplaces custom sitemap.md route with package-backed route.
docs/app/robots.tsMakes robots sitemap host configurable with a local fallback.
docs/app/og/[...slug]/route.tsxMakes OG generation tolerant of missing title/description fields.
docs/app/global.cssRoutes global styling through the new geistdocs stylesheet.
docs/app/api/search/route.tsReplaces custom search indexing route with package-backed search route.
docs/app/api/chat/utils.tsRemoves custom chat system prompt construction (package-backed chat).
docs/app/api/chat/types.tsRemoves custom chat message typing (package-backed chat).
docs/app/api/chat/route.tsReplaces custom chat handler with package-backed chat route + optional proxy.
docs/app/actions/feedback/index.tsRemoves server action for feedback submission.
docs/app/actions/feedback/emotions.tsRemoves feedback emotion list used by deleted UI.
docs/app/[lang]/worlds/page.tsxSwitches Button usage to Geistdocs package button component.
docs/app/[lang]/worlds/compare/page.tsxSwitches Button usage to Geistdocs package button component.
docs/app/[lang]/worlds/[id]/page.tsxTightens types for MDX body/toc extraction.
docs/app/[lang]/v5/docs/layout.tsxPasses explicit currentVersion into docs layout.
docs/app/[lang]/v5/cookbook/layout.tsxPasses explicit currentVersion into docs layout.
docs/app/[lang]/sitemap.md/route.tsReplaces custom localized sitemap.md route with package-backed route.
docs/app/[lang]/rss.xml/route.tsUpdates RSS generation to include pages from current sources with safer fallbacks.
docs/app/[lang]/llms.txt/route.tsReplaces custom llms.txt generator with package-backed route.
docs/app/[lang]/llms.mdx/[[...slug]]/route.tsReplaces custom page-level markdown route with package-backed route.
docs/app/[lang]/layout.tsxSwitches to package Navbar/Footer and uses package-backed config/provider.
docs/app/[lang]/docs/layout.tsxPasses explicit currentVersion into docs layout.
docs/app/[lang]/cookbook/layout.tsxPasses explicit currentVersion into docs layout.
docs/app/[lang]/agents.md/route.tsAdds package-backed agents markdown route.
docs/app/[lang]/.well-known/mcp.json/route.tsAdds package-backed MCP manifest route.
docs/app/[lang]/(home)/components/vercel-com-visuals/vercel-section.tsxSwitches Button usage to Geistdocs package button component.
docs/app/[lang]/(home)/components/vercel-com-visuals/feature-grid.tsxSwitches Button usage to Geistdocs package button component.
docs/app/[lang]/(home)/components/vercel-com-visuals/downtime-visual.tsxSwitches Spinner usage to Geistdocs package spinner component.
docs/app/[lang]/(home)/components/templates/index.tsxSwitches Button usage to Geistdocs package button component.
docs/app/[lang]/(home)/components/run-anywhere.tsxSwitches Button usage to Geistdocs package button component.
docs/app/[lang]/(home)/components/preview-badge.tsxSwitches Button/Dialog usage to Geistdocs package components.
docs/app/[lang]/(home)/components/hero.tsxUpdates agent install command string.
docs/app/[lang]/(home)/components/cta.tsxSwitches Button usage to Geistdocs package button component.
Files not reviewed (1)
  • pnpm-lock.yaml: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threaddocs/components/geistdocs/mdx-components.tsx Outdated
Comment threadpackages/docs-typecheck/src/__tests__/sitemap-guard.test.ts Outdated

@karthikscale3karthikscale3 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

these logos dont look right

Image

@karthikscale3karthikscale3 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@karthikscale3karthikscale3 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Image

should workflow show up in the dropdown again? also should we put the "sdk" badge beside it for the sake of consistency

@pranaygp

pranaygp commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

also should we put the "sdk" badge beside it for the sake of consistency

nope. that's not a valid lockup @karthikscale3 so we're not doing that

@pranaygppranaygp left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I found two user-facing regressions in the package-backed docs migration.

Comment threaddocs/lib/geistdocs/source.ts Outdated
Comment threaddocs/app/[lang]/llms.txt/route.ts Outdated
@karthikscale3

Copy link
Copy Markdown
Contributor

Please let us know when this is ready for a re-review

@molebox

Copy link
Copy Markdown
ContributorAuthor

This PR is un-staled and ready for re-review @karthikscale3@pranaygp.

What changed

Merged main back in (was 221 commits behind, conflicting). Notable ports into the package-backed architecture:

Bumped @vercel/geistdocs 1.4.0 → 1.8.2. This picks up the OSS navbar dropdown fix (1.8.0: real logo lockups, eve added, Streamdown dropped, AI Elements moved to the end — the package default now matches what main shipped in #2586/#2543, and Workflow appears with a proper lockup, no "SDK" badge), plus active-nav highlight, Ask AI markdown style fixes, search breadcrumbs, and code-block polish.

Review feedback addressed:

  • Version dropdown logos — version items now use the Workflow glyph (IconWorkflow from the package assets) instead of the default lucide box/archive icons.
  • CopyPrompt consistency — added prompts to the remaining 13 cookbook recipe pages (sequential-and-parallel, timeouts, idempotency, workflow-composition, serializable-steps, publishing-libraries, distributed-abort-controller — v4 and v5, with version-appropriate wording for the v4/v5 start() and cancellation differences).
  • Edit links — now version-scoped (docs/content/docs/v4/{path} vs .../v5/{path}) via per-page-family github.editPath overrides; previously they dropped the version segment.
  • Copilot's two open threads (WorldTestingPerformance stub, brittle sitemap-guard path) were already fixed in cb573b5 — replied inline.

Still holding from the earlier round:/llms.txt, /api/search, /api/chat read currentSources (v4 only); page-level .md routes read allSources; the v5 markdown URL rewrite stays scoped to local link targets (external vercel.com/docs/... links verified untouched).

Verification

  • pnpm --filter docs build ✅, tsc --noEmit (only the 3 pre-existing failures: BenchmarkChart, lib/github.ts ×2) ✅, biome (same pre-existing error count as main) ✅
  • docs link lint ✅, docs-typecheck suite (1014 code samples) ✅, sitemap-guard ✅, docs smoke checks ✅
  • next start spot checks: .md negotiation, sitemap/llms/agents surfaces, AutoCards markdown expansion, v4/v5 edit links, redirects ✅

@molebox

Copy link
Copy Markdown
ContributorAuthor

Follow-ups from Slack feedback (Chris):

  • Workflow removed from the OSS products dropdown — the geistdocs 1.8.2 default list includes the site's own product, so the docs config now overrides navbarOssProducts with eve, AI SDK, Flags SDK, Chat SDK, and AI Elements (matching what main shipped in [docs] use actual eve logo in OSS nav dropdown #2586). 99a52c2
  • Chat panel vs command menu z-order — fixed upstream as requested: vercel/geistdocs#138 lowers the Ask AI panel to z-45 (above the navbar, below all modal surfaces incl. the search command menu). It'll reach this site with the next geistdocs patch bump; no local workaround added.

@molebox

Copy link
Copy Markdown
ContributorAuthor

Bumped @vercel/geistdocs 1.8.2 → 1.11.0 (dc75b65). What lands here:

  • 1.9.0 — the chat z-order fix from vercel/geistdocs#138 (Ask AI panel now z-45, below the search command menu). Closes out the last piece of Chris's Slack feedback with no local workaround.
  • 1.9.0 — Turborepo joined the default OSS products dropdown; added it to our navbarOssProducts override too (which still drops Workflow itself).
  • 1.11.0 — navbar now renders a GitHub icon link when github is configured, restoring parity with the pre-migration navbar's GitHub button (verified it renders, incl. the mobile menu entry).
  • 1.10.0createChatRoute gained an optional model option; we keep the default (openai/gpt-4.1-mini), no change needed.

Verified: docs build ✅, sitemap-guard ✅, next start spot checks (.md URL + Accept negotiation, /llms.txt, AutoCards markdown expansion, versioned edit links, navbar GitHub link) ✅

@socket-security

socket-securityBot commented Jul 10, 2026

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

DiffPackageSupply Chain
Security
VulnerabilityQualityMaintenanceLicense
Addednpm/​next@​16.2.651100919970
Addednpm/​@​vercel/​geistdocs@​1.11.0771007499100
Addednpm/​hono@​4.12.28991009796100

View full report

@molebox

Copy link
Copy Markdown
ContributorAuthor

@copilot resolve the merge conflicts in this pull request

CopilotAI commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

@copilot resolve the merge conflicts in this pull request

Done. Merged main (12 commits ahead) into migrate-docs in e16a58c. The only conflict was a single line in pnpm-lock.yaml (a vite version string: 7.3.2 vs 7.3.6) — resolved by taking the newer version from main in the follow-up commit.

@karthikscale3karthikscale3 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Thank you!

@github-actions

Copy link
Copy Markdown
Contributor

No backport to stable for aa93cc5 (AI decision).

This commit is a wholesale re-architecture of the docs/ app (outside docs/content/) onto the new @vercel/geistdocs package — that portion of the docs app is not maintained on stable. The pieces touching maintained paths are tightly coupled to this migration and cannot stand alone: the docs/content/*.mdx changes only add <CopyPrompt> components that rely on the new geistdocs MDX runtime introduced here, and the packages/docs-typecheck/sitemap-guard.test.ts rewrite specifically asserts the geistdocs-based createDocsMarkdownRoute structure that doesn't exist on stable, so it would fail there.

To override, re-run the Backport to stable workflow manually via workflow_dispatch and paste this commit SHA into the ref input:

aa93cc5e690649de17b3f28c9ca1c88be0eb23d8

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants

@molebox@pranaygp@karthikscale3@VaguelySerious@christopherkindl
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Migrate docs to package-backed geistdocs - #2222

Merged
molebox merged 14 commits into
mainfrom
migrate-docs
Jul 13, 2026
Merged

Migrate docs to package-backed geistdocs#2222
molebox merged 14 commits into
mainfrom
migrate-docs

Conversation

@molebox

@moleboxmolebox commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

Previews

Summary

Migrates the docs app from the old copied geist/Fumadocs/custom runtime to the package-backed @vercel/geistdocs architecture.

Changes

  • Added @vercel/geistdocs and aligned supported Next/React versions.
  • Replaced local docs page, layout, MDX, search, chat, Markdown, sitemap, agents, and proxy runtime code with thin package-backed adapters.
  • Preserved public docs route families:
    • /docs
    • /cookbook
    • /v5/docs
    • /v5/cookbook
    • /worlds
    • /llms.txt
    • /sitemap.md
    • /agents.md
    • page-level .md routes
  • Kept project-specific content, homepage, worlds pages, OG routes, RSS, metadata, and styling overrides local.
  • Removed copied Geistdocs/AI chat/search/sidebar/page-action runtime code.

Verification

  • pnpm --filter docs build passes.
  • Manually checked local docs routes and machine-readable surfaces.
  • Verified code blocks include Shiki token styles and package stylesheet palette.
  • Verified no deep imports from @vercel/geistdocs/dist.
  • Verified no public/llms.txt masks the App Router route.

Notes

Full docs lint/typecheck still have pre-existing unrelated failures in generated .source, homepage visual lint, components/worlds/BenchmarkChart.tsx, and lib/github.ts.

@vercel

vercelBot commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

@changeset-bot

changeset-botBot commented Jun 2, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 3e0bc8f

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@github-actions

github-actionsBot commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

🧪 E2E Test Results

All tests passed

Summary

PassedFailedSkippedTotal
✅ ▲ Vercel Production145302301683
✅ 💻 Local Development161702191836
✅ 📦 Local Production161702191836
✅ 🐘 Local Postgres161702191836
✅ 🪟 Windows15300153
✅ 📋 Other89401771071
Total7351010648415

Details by Category

✅ ▲ Vercel Production
AppPassedFailedSkipped
✅ astro126027
✅ example126027
✅ express126027
✅ fastify126027
✅ hono126027
✅ nextjs-turbopack15003
✅ nextjs-webpack15003
✅ nitro126027
✅ nuxt126027
✅ sveltekit14508
✅ vite126027
✅ 💻 Local Development
AppPassedFailedSkipped
✅ astro-stable128025
✅ express-stable128025
✅ fastify-stable128025
✅ hono-stable128025
✅ nextjs-turbopack-canary134019
✅ nextjs-turbopack-stable15300
✅ nextjs-webpack-canary134019
✅ nextjs-webpack-stable15300
✅ nitro-stable128025
✅ nuxt-stable128025
✅ sveltekit-stable14706
✅ vite-stable128025
✅ 📦 Local Production
AppPassedFailedSkipped
✅ astro-stable128025
✅ express-stable128025
✅ fastify-stable128025
✅ hono-stable128025
✅ nextjs-turbopack-canary134019
✅ nextjs-turbopack-stable15300
✅ nextjs-webpack-canary134019
✅ nextjs-webpack-stable15300
✅ nitro-stable128025
✅ nuxt-stable128025
✅ sveltekit-stable14706
✅ vite-stable128025
✅ 🐘 Local Postgres
AppPassedFailedSkipped
✅ astro-stable128025
✅ express-stable128025
✅ fastify-stable128025
✅ hono-stable128025
✅ nextjs-turbopack-canary134019
✅ nextjs-turbopack-stable15300
✅ nextjs-webpack-canary134019
✅ nextjs-webpack-stable15300
✅ nitro-stable128025
✅ nuxt-stable128025
✅ sveltekit-stable14706
✅ vite-stable128025
✅ 🪟 Windows
AppPassedFailedSkipped
✅ nextjs-turbopack15300
✅ 📋 Other
AppPassedFailedSkipped
✅ e2e-local-dev-nest-stable128025
✅ e2e-local-dev-tanstack-start-128025
✅ e2e-local-postgres-nest-stable128025
✅ e2e-local-postgres-tanstack-start-128025
✅ e2e-local-prod-nest-stable128025
✅ e2e-local-prod-tanstack-start-128025
✅ e2e-vercel-prod-tanstack-start126027

📋 View full workflow run

@github-actions

github-actionsBot commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

📊 Workflow Benchmarks

commit 3e0bc8f · Mon, 13 Jul 2026 12:56:24 GMT · run logs

Backend: vercel · app: nextjs-turbopack

MetricScenarioAvg (ms)P75 (ms)P90 (ms)P99 (ms)Samples
TTFSstream1299 (-13%)1731 🔴1781 🔴2206 🔴30
TTFShook + stream1694 (+6.9%)2000 🔴2239 🔴2860 🔴30
STSO1020 steps (1-20)272 (-18%)311 🔴399 🔴421 🔴19
STSO1020 steps (101-120)483 (+11%)533 🔴709 🔴747 🔴19
STSO1020 steps (1001-1020)902 (+8.5%)954 🔴983 🔴992 🔴19
WOstream1299 (-13%)17311781220630
WOhook + stream1694 (+6.9%)20002239286030
SLstream4194 (-19%)5537 🔴5833 🔴6044 🔴30
SLhook + stream4878 (-1.7%)5622 🔴5753 🔴5987 🔴30
📜 Previous results (3)

dc75b65

Fri, 10 Jul 2026 11:18:50 GMT · run logs

vercel / nextjs-turbopack

MetricScenarioAvg (ms)P75 (ms)P90 (ms)P99 (ms)Samples
TTFSstream1310 (+12%)1673 🔴1713 🔴2696 🔴30
TTFShook + stream1596 (+16%)1933 🔴1999 🔴2123 🔴30
STSO1020 steps (1-20)274 (+0.7%)293 🔴379 🔴524 🔴19
STSO1020 steps (101-120)435 (+4.3%)449 🔴631 🔴922 🔴19
STSO1020 steps (1001-1020)880 (-18%)946 🔴972 🔴1012 🔴19
WOstream1310 (+12%)16731713269630
WOhook + stream1596 (+16%)19331999212330
SLstream4706 (-4.4%)5595 🔴5837 🔴6162 🔴30
SLhook + stream4966 (-1.1%)5618 🔴5707 🔴5786 🔴30

8e0829a

Fri, 10 Jul 2026 10:21:25 GMT · run logs

vercel / nextjs-turbopack

MetricScenarioAvg (ms)P75 (ms)P90 (ms)P99 (ms)Samples
TTFSstream1254 (+7.3%)1683 🔴1716 🔴2022 🔴30
TTFShook + stream1487 (+8.1%)1888 🔴2026 🔴2132 🔴30
STSO1020 steps (1-20)278 (+2.4%)311 🔴412 🔴451 🔴19
STSO1020 steps (101-120)399 (-4.3%)412 🔴577 🔴648 🔴19
STSO1020 steps (1001-1020)876 (-19%)930 🔴960 🔴1001 🔴19
WOstream1254 (+7.3%)16831716202230
WOhook + stream1487 (+8.1%)18882026213230
SLstream4356 (-12%)5088 🔴5618 🔴5770 🔴30
SLhook + stream5016 (±0%)5559 🔴5592 🔴6653 🔴30

3b0b5fc

Thu, 09 Jul 2026 19:04:54 GMT · run logs

vercel / nextjs-turbopack

MetricScenarioAvg (ms)P75 (ms)P90 (ms)P99 (ms)Samples
TTFSstream1124 (+5.9%)1606 🔴1626 🔴2762 🔴30
TTFShook + stream1612 (+24%)1901 🔴1986 🔴2153 🔴30
STSO1020 steps (1-20)275 (+1.1%)297 🔴401 🔴461 🔴19
STSO1020 steps (101-120)404 (+0.7%)415 🔴629 🔴700 🔴19
STSO1020 steps (1001-1020)917 (+9.9%)991 🔴1095 🔴1194 🔴19
WOstream1124 (+5.9%)16061626276230
WOhook + stream1612 (+24%)19011986215330
SLstream4633 (-2.7%)5573 🔴5720 🔴5894 🔴30
SLhook + stream4853 (-1.4%)5313 🔴5535 🔴5756 🔴30

Avg deltas compare against the most recent benchmark run on main at the time of this run.

Metrics — TTFS: time to first step body execution · STSO: step-to-step overhead (gap between consecutive step bodies) · WO: workflow overhead (time outside step bodies, client start → last step body exit) · SL: stream latency (first chunk write → visible to the reader)

Scenarios — stream: one step that streams chunks back to the client; no hooks, so the run stays in turbo mode · hook + stream: registers a hook before the same streaming step, which exits turbo mode · 1020 steps: 1020 trivial sequential steps; STSO is measured between consecutive steps in the given step ranges

🟢/🔴 mark percentiles within/above target. Targets (p75/p90/p99, ms) — TTFS 200/300/600 · SL 50/60/125 · STSO (1-20) 20/30/60 · STSO (101-120) 30/45/90 · STSO (1001-1020) 40/60/120

TTFS/WO compare client vs deployment clocks and SL compares the step runner’s clock vs the client’s (NTP-synced in CI). WO ends at the last step body exit, the closest observable proxy for the final step-completion request.

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Migrates the docs app from a locally-copied Geist/Fumadocs runtime to the package-backed @vercel/geistdocs architecture, keeping existing public route families while replacing most runtime/UI plumbing with thin adapters around the upstream package.

Changes:

  • Adopt @vercel/geistdocs for docs layout/MDX/rendering, plus package-provided search/chat/LLMs/sitemap/agents/mcp routes.
  • Remove large amounts of locally maintained UI/runtime code (chat/search/sidebar/layout/actions) in favor of upstream components and helpers.
  • Update docs tooling/config (source config + link lint + sitemap/RSS generation) to work with versioned Geistdocs sources.

Reviewed changes

Copilot reviewed 223 out of 224 changed files in this pull request and generated 2 comments.

Show a summary per file
FileDescription
packages/docs-typecheck/src/tests/sitemap-guard.test.tsUpdates the sitemap guard to account for package-backed markdown routes.
docs/source.config.tsSwitches to Geistdocs-provided Zod schemas and default source config.
docs/scripts/lint.tsAdapts link linting to pull raw MDX content from Geistdocs pages.
docs/package.jsonAdds @vercel/geistdocs, updates Next/React versions, removes unused local deps.
docs/next.config.tsRemoves Accept-header rewrites now handled elsewhere in the new architecture.
docs/lib/tsdoc/tsdoc.tsxAdds error handling + switches Callout import to Geistdocs package component.
docs/lib/geistdocs/versions.tsMakes v4/v5 version selection explicit and updates versioned URL docstring.
docs/lib/geistdocs/version-source.tsTightens typing for rewriteUrl and preserves URL rewriting behavior.
docs/lib/geistdocs/i18n.tsRemoves local i18n wiring in favor of package-backed provider/layout.
docs/lib/geistdocs/db.tsRemoves local Dexie chat persistence (chat now handled via package route/proxy).
docs/lib/geistdocs/config.tsxIntroduces centralized Geistdocs config (nav/content/versions/ai).
docs/hooks/geistdocs/use-version.tsxRemoves local version state provider/hook (replaced by package version select).
docs/hooks/geistdocs/use-sidebar.tsRemoves local jotai-based sidebar state hook (package-owned UI).
docs/hooks/geistdocs/use-chat.tsRemoves local jotai-based chat state hook (package-owned UI).
docs/geistdocs.tsxExtends site metadata (GitHub edit config + agent readiness config).
docs/content/docs/v5/migration-guides/migrating-from-trigger-dev.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/migration-guides/migrating-from-temporal.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/migration-guides/migrating-from-inngest.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/migration-guides/migrating-from-aws-step-functions.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/vite.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/tanstack-start.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/sveltekit.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/python.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/nuxt.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/nitro.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/next.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/nestjs.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/hono.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/fastify.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/express.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/astro.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/webhook-response-not-sent.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/timeout-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/start-invalid-workflow-function.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/serialization-failed.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/node-js-module-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/hook-conflict.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/fetch-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/abort-signal-timeout-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/integrations/sandbox.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/integrations/chat-sdk.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/integrations/ai-sdk.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/common-patterns/webhooks.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/common-patterns/scheduling.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/common-patterns/saga.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/common-patterns/rate-limiting.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/common-patterns/batching.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/agent-patterns/human-in-the-loop.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/agent-patterns/durable-agent.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/agent-patterns/agent-cancellation.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/advanced/upgrading-workflows.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/advanced/child-workflows.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/migration-guides/migrating-from-trigger-dev.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/migration-guides/migrating-from-temporal.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/migration-guides/migrating-from-inngest.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/migration-guides/migrating-from-aws-step-functions.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/vite.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/tanstack-start.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/sveltekit.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/python.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/nuxt.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/nitro.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/next.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/nestjs.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/hono.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/fastify.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/express.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/astro.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/webhook-response-not-sent.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/timeout-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/start-invalid-workflow-function.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/serialization-failed.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/node-js-module-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/hook-conflict.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/fetch-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/integrations/sandbox.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/integrations/chat-sdk.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/integrations/ai-sdk.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/common-patterns/webhooks.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/common-patterns/scheduling.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/common-patterns/saga.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/common-patterns/rate-limiting.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/common-patterns/batching.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/agent-patterns/human-in-the-loop.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/agent-patterns/durable-agent.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/agent-patterns/agent-cancellation.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/advanced/upgrading-workflows.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/advanced/child-workflows.mdxAdds CopyPrompt helper content.
docs/components/worlds/WorldTestingPerformance.tsxSwitches Tooltip usage to Geistdocs package tooltip component.
docs/components/worlds/WorldInstructions.tsxSwitches Button usage to Geistdocs package button component.
docs/components/worlds/WorldDetailHero.tsxSwitches Button/Tooltip usage to Geistdocs package components.
docs/components/worlds/WorldCardSimple.tsxSwitches Tooltip usage to Geistdocs package tooltip component.
docs/components/worlds/BenchmarkHistoryChart.tsxSwitches Dialog usage to Geistdocs package dialog component.
docs/components/ui/tooltip.tsxRemoves local tooltip implementation (now using package component).
docs/components/ui/toggle.tsxRemoves local UI component implementation.
docs/components/ui/toggle-group.tsxRemoves local UI component implementation.
docs/components/ui/textarea.tsxRemoves local UI component implementation.
docs/components/ui/switch.tsxRemoves local UI component implementation.
docs/components/ui/spinner.tsxRemoves local UI component implementation.
docs/components/ui/sonner.tsxRemoves local toaster implementation (feedback/chat UI removed).
docs/components/ui/slider.tsxRemoves local UI component implementation.
docs/components/ui/sheet.tsxRemoves local UI component implementation.
docs/components/ui/separator.tsxRemoves local UI component implementation.
docs/components/ui/scroll-area.tsxRemoves local UI component implementation.
docs/components/ui/resizable.tsxRemoves local UI component implementation.
docs/components/ui/radio-group.tsxRemoves local UI component implementation.
docs/components/ui/progress.tsxRemoves local UI component implementation.
docs/components/ui/popover.tsxRemoves local UI component implementation.
docs/components/ui/pagination.tsxRemoves local UI component implementation.
docs/components/ui/label.tsxRemoves local UI component implementation.
docs/components/ui/kbd.tsxRemoves local UI component implementation.
docs/components/ui/input.tsxRemoves local UI component implementation.
docs/components/ui/input-otp.tsxRemoves local UI component implementation.
docs/components/ui/hover-card.tsxRemoves local UI component implementation.
docs/components/ui/form.tsxRemoves local UI component implementation.
docs/components/ui/empty.tsxRemoves local UI component implementation.
docs/components/ui/dialog.tsxRemoves local UI component implementation.
docs/components/ui/collapsible.tsxRemoves local UI component implementation.
docs/components/ui/checkbox.tsxRemoves local UI component implementation.
docs/components/ui/button.tsxRemoves local UI component implementation (use Geistdocs package button).
docs/components/ui/button-group.tsxRemoves local UI component implementation.
docs/components/ui/aspect-ratio.tsxRemoves local UI component implementation.
docs/components/ui/alert.tsxRemoves local UI component implementation.
docs/components/ui/alert-dialog.tsxRemoves local UI component implementation.
docs/components/preview-install.tsxSwitches Button usage to Geistdocs package button component.
docs/components/geistdocs/x-button.tsxRemoves local social button implementation (package navbar/footer).
docs/components/geistdocs/video.tsxRemoves local video component (package MDX/components).
docs/components/geistdocs/version-switcher.tsxRemoves local version switcher UI (package versions UI).
docs/components/geistdocs/theme-toggle.tsxRemoves local theme toggle (package navbar/footer).
docs/components/geistdocs/search.tsxRemoves local search dialog/button (package search).
docs/components/geistdocs/scroll-top.tsxRemoves local scroll-to-top UI (package UI).
docs/components/geistdocs/rss-button.tsxRemoves local RSS button UI (package footer).
docs/components/geistdocs/provider.tsxReplaces local RootProvider wiring with Geistdocs package provider.
docs/components/geistdocs/open-in-chat.tsxRemoves local “open in chat” widget (package AI/chat).
docs/components/geistdocs/navbar.tsxRemoves local navbar (package navbar).
docs/components/geistdocs/navbar-logo.tsxRemoves local navbar logo component (package navbar).
docs/components/geistdocs/mobile-docs-bar.tsxRemoves local mobile docs bar (package docs layout).
docs/components/geistdocs/message-metadata.tsxRemoves local chat message metadata UI.
docs/components/geistdocs/mermaid.tsxRemoves local mermaid renderer (package MDX pipeline).
docs/components/geistdocs/mdx-components.tsxSwitches to createMdxComponents and wires custom components into package MDX system.
docs/components/geistdocs/language-selector.tsxRemoves local language selector (package navbar/footer).
docs/components/geistdocs/installer.tsxRemoves local installer widget (package UI).
docs/components/geistdocs/icons.tsxRemoves local icon helper.
docs/components/geistdocs/home-layout.tsxReplaces local Fumadocs layout wrapper with Geistdocs home layout.
docs/components/geistdocs/github-button.tsxRemoves local GitHub button (package footer).
docs/components/geistdocs/footer.tsxRemoves local footer (package footer).
docs/components/geistdocs/feedback.tsxRemoves local feedback UI flow.
docs/components/geistdocs/edit-source.tsxRemoves local “Edit this page” link (package handles via github config).
docs/components/geistdocs/docs-page.tsxRemoves local docs page wrapper (package docs layout).
docs/components/geistdocs/docs-layout.tsxSwitches to Geistdocs docs layout and adds version select + sidebar badges.
docs/components/geistdocs/desktop-menu.tsxRemoves local desktop menu (package navbar).
docs/components/geistdocs/copy-page.tsxRemoves local copy-page action UI.
docs/components/geistdocs/copy-chat.tsxRemoves local chat copy UI.
docs/components/geistdocs/code-block-tabs.tsxRemoves local code block tabs wrapper (package MDX/code).
docs/components/geistdocs/callout.tsxRemoves local callout wrappers (use package callout).
docs/components/geistdocs/ask-ai.tsxRemoves local ask-ai widget (package chat).
docs/components/custom/fluid-compute-callout.tsxSwitches Callout usage to Geistdocs package component.
docs/components/ai-elements/suggestion.tsxRemoves local AI UI elements.
docs/components/ai-elements/sources.tsxRemoves local AI UI elements.
docs/components/ai-elements/shimmer.tsxRemoves local AI UI elements.
docs/components/ai-elements/conversation.tsxRemoves local AI UI elements.
docs/app/styles/geistdocs.cssSwitches styling baseline to Geistdocs package stylesheet.
docs/app/sitemap.tsUpdates sitemap generation to iterate over versioned sources.
docs/app/sitemap.md/route.tsReplaces custom sitemap.md route with package-backed route.
docs/app/robots.tsMakes robots sitemap host configurable with a local fallback.
docs/app/og/[...slug]/route.tsxMakes OG generation tolerant of missing title/description fields.
docs/app/global.cssRoutes global styling through the new geistdocs stylesheet.
docs/app/api/search/route.tsReplaces custom search indexing route with package-backed search route.
docs/app/api/chat/utils.tsRemoves custom chat system prompt construction (package-backed chat).
docs/app/api/chat/types.tsRemoves custom chat message typing (package-backed chat).
docs/app/api/chat/route.tsReplaces custom chat handler with package-backed chat route + optional proxy.
docs/app/actions/feedback/index.tsRemoves server action for feedback submission.
docs/app/actions/feedback/emotions.tsRemoves feedback emotion list used by deleted UI.
docs/app/[lang]/worlds/page.tsxSwitches Button usage to Geistdocs package button component.
docs/app/[lang]/worlds/compare/page.tsxSwitches Button usage to Geistdocs package button component.
docs/app/[lang]/worlds/[id]/page.tsxTightens types for MDX body/toc extraction.
docs/app/[lang]/v5/docs/layout.tsxPasses explicit currentVersion into docs layout.
docs/app/[lang]/v5/cookbook/layout.tsxPasses explicit currentVersion into docs layout.
docs/app/[lang]/sitemap.md/route.tsReplaces custom localized sitemap.md route with package-backed route.
docs/app/[lang]/rss.xml/route.tsUpdates RSS generation to include pages from current sources with safer fallbacks.
docs/app/[lang]/llms.txt/route.tsReplaces custom llms.txt generator with package-backed route.
docs/app/[lang]/llms.mdx/[[...slug]]/route.tsReplaces custom page-level markdown route with package-backed route.
docs/app/[lang]/layout.tsxSwitches to package Navbar/Footer and uses package-backed config/provider.
docs/app/[lang]/docs/layout.tsxPasses explicit currentVersion into docs layout.
docs/app/[lang]/cookbook/layout.tsxPasses explicit currentVersion into docs layout.
docs/app/[lang]/agents.md/route.tsAdds package-backed agents markdown route.
docs/app/[lang]/.well-known/mcp.json/route.tsAdds package-backed MCP manifest route.
docs/app/[lang]/(home)/components/vercel-com-visuals/vercel-section.tsxSwitches Button usage to Geistdocs package button component.
docs/app/[lang]/(home)/components/vercel-com-visuals/feature-grid.tsxSwitches Button usage to Geistdocs package button component.
docs/app/[lang]/(home)/components/vercel-com-visuals/downtime-visual.tsxSwitches Spinner usage to Geistdocs package spinner component.
docs/app/[lang]/(home)/components/templates/index.tsxSwitches Button usage to Geistdocs package button component.
docs/app/[lang]/(home)/components/run-anywhere.tsxSwitches Button usage to Geistdocs package button component.
docs/app/[lang]/(home)/components/preview-badge.tsxSwitches Button/Dialog usage to Geistdocs package components.
docs/app/[lang]/(home)/components/hero.tsxUpdates agent install command string.
docs/app/[lang]/(home)/components/cta.tsxSwitches Button usage to Geistdocs package button component.
Files not reviewed (1)
  • pnpm-lock.yaml: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threaddocs/components/geistdocs/mdx-components.tsx Outdated
Comment threadpackages/docs-typecheck/src/__tests__/sitemap-guard.test.ts Outdated

@karthikscale3karthikscale3 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

these logos dont look right

Image

@karthikscale3karthikscale3 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@karthikscale3karthikscale3 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Image

should workflow show up in the dropdown again? also should we put the "sdk" badge beside it for the sake of consistency

@pranaygp

pranaygp commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

also should we put the "sdk" badge beside it for the sake of consistency

nope. that's not a valid lockup @karthikscale3 so we're not doing that

@pranaygppranaygp left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I found two user-facing regressions in the package-backed docs migration.

Comment threaddocs/lib/geistdocs/source.ts Outdated
Comment threaddocs/app/[lang]/llms.txt/route.ts Outdated
@karthikscale3

Copy link
Copy Markdown
Contributor

Please let us know when this is ready for a re-review

@molebox

Copy link
Copy Markdown
ContributorAuthor

This PR is un-staled and ready for re-review @karthikscale3@pranaygp.

What changed

Merged main back in (was 221 commits behind, conflicting). Notable ports into the package-backed architecture:

Bumped @vercel/geistdocs 1.4.0 → 1.8.2. This picks up the OSS navbar dropdown fix (1.8.0: real logo lockups, eve added, Streamdown dropped, AI Elements moved to the end — the package default now matches what main shipped in #2586/#2543, and Workflow appears with a proper lockup, no "SDK" badge), plus active-nav highlight, Ask AI markdown style fixes, search breadcrumbs, and code-block polish.

Review feedback addressed:

  • Version dropdown logos — version items now use the Workflow glyph (IconWorkflow from the package assets) instead of the default lucide box/archive icons.
  • CopyPrompt consistency — added prompts to the remaining 13 cookbook recipe pages (sequential-and-parallel, timeouts, idempotency, workflow-composition, serializable-steps, publishing-libraries, distributed-abort-controller — v4 and v5, with version-appropriate wording for the v4/v5 start() and cancellation differences).
  • Edit links — now version-scoped (docs/content/docs/v4/{path} vs .../v5/{path}) via per-page-family github.editPath overrides; previously they dropped the version segment.
  • Copilot's two open threads (WorldTestingPerformance stub, brittle sitemap-guard path) were already fixed in cb573b5 — replied inline.

Still holding from the earlier round:/llms.txt, /api/search, /api/chat read currentSources (v4 only); page-level .md routes read allSources; the v5 markdown URL rewrite stays scoped to local link targets (external vercel.com/docs/... links verified untouched).

Verification

  • pnpm --filter docs build ✅, tsc --noEmit (only the 3 pre-existing failures: BenchmarkChart, lib/github.ts ×2) ✅, biome (same pre-existing error count as main) ✅
  • docs link lint ✅, docs-typecheck suite (1014 code samples) ✅, sitemap-guard ✅, docs smoke checks ✅
  • next start spot checks: .md negotiation, sitemap/llms/agents surfaces, AutoCards markdown expansion, v4/v5 edit links, redirects ✅

@molebox

Copy link
Copy Markdown
ContributorAuthor

Follow-ups from Slack feedback (Chris):

  • Workflow removed from the OSS products dropdown — the geistdocs 1.8.2 default list includes the site's own product, so the docs config now overrides navbarOssProducts with eve, AI SDK, Flags SDK, Chat SDK, and AI Elements (matching what main shipped in [docs] use actual eve logo in OSS nav dropdown #2586). 99a52c2
  • Chat panel vs command menu z-order — fixed upstream as requested: vercel/geistdocs#138 lowers the Ask AI panel to z-45 (above the navbar, below all modal surfaces incl. the search command menu). It'll reach this site with the next geistdocs patch bump; no local workaround added.

@molebox

Copy link
Copy Markdown
ContributorAuthor

Bumped @vercel/geistdocs 1.8.2 → 1.11.0 (dc75b65). What lands here:

  • 1.9.0 — the chat z-order fix from vercel/geistdocs#138 (Ask AI panel now z-45, below the search command menu). Closes out the last piece of Chris's Slack feedback with no local workaround.
  • 1.9.0 — Turborepo joined the default OSS products dropdown; added it to our navbarOssProducts override too (which still drops Workflow itself).
  • 1.11.0 — navbar now renders a GitHub icon link when github is configured, restoring parity with the pre-migration navbar's GitHub button (verified it renders, incl. the mobile menu entry).
  • 1.10.0createChatRoute gained an optional model option; we keep the default (openai/gpt-4.1-mini), no change needed.

Verified: docs build ✅, sitemap-guard ✅, next start spot checks (.md URL + Accept negotiation, /llms.txt, AutoCards markdown expansion, versioned edit links, navbar GitHub link) ✅

@socket-security

socket-securityBot commented Jul 10, 2026

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

DiffPackageSupply Chain
Security
VulnerabilityQualityMaintenanceLicense
Addednpm/​next@​16.2.651100919970
Addednpm/​@​vercel/​geistdocs@​1.11.0771007499100
Addednpm/​hono@​4.12.28991009796100

View full report

@molebox

Copy link
Copy Markdown
ContributorAuthor

@copilot resolve the merge conflicts in this pull request

CopilotAI commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

@copilot resolve the merge conflicts in this pull request

Done. Merged main (12 commits ahead) into migrate-docs in e16a58c. The only conflict was a single line in pnpm-lock.yaml (a vite version string: 7.3.2 vs 7.3.6) — resolved by taking the newer version from main in the follow-up commit.

@karthikscale3karthikscale3 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Thank you!

@github-actions

Copy link
Copy Markdown
Contributor

No backport to stable for aa93cc5 (AI decision).

This commit is a wholesale re-architecture of the docs/ app (outside docs/content/) onto the new @vercel/geistdocs package — that portion of the docs app is not maintained on stable. The pieces touching maintained paths are tightly coupled to this migration and cannot stand alone: the docs/content/*.mdx changes only add <CopyPrompt> components that rely on the new geistdocs MDX runtime introduced here, and the packages/docs-typecheck/sitemap-guard.test.ts rewrite specifically asserts the geistdocs-based createDocsMarkdownRoute structure that doesn't exist on stable, so it would fail there.

To override, re-run the Backport to stable workflow manually via workflow_dispatch and paste this commit SHA into the ref input:

aa93cc5e690649de17b3f28c9ca1c88be0eb23d8

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants

@molebox@pranaygp@karthikscale3@VaguelySerious@christopherkindl
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Migrate docs to package-backed geistdocs - #2222

Merged
molebox merged 14 commits into
mainfrom
migrate-docs
Jul 13, 2026
Merged

Migrate docs to package-backed geistdocs#2222
molebox merged 14 commits into
mainfrom
migrate-docs

Conversation

@molebox

@moleboxmolebox commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

Previews

Summary

Migrates the docs app from the old copied geist/Fumadocs/custom runtime to the package-backed @vercel/geistdocs architecture.

Changes

  • Added @vercel/geistdocs and aligned supported Next/React versions.
  • Replaced local docs page, layout, MDX, search, chat, Markdown, sitemap, agents, and proxy runtime code with thin package-backed adapters.
  • Preserved public docs route families:
    • /docs
    • /cookbook
    • /v5/docs
    • /v5/cookbook
    • /worlds
    • /llms.txt
    • /sitemap.md
    • /agents.md
    • page-level .md routes
  • Kept project-specific content, homepage, worlds pages, OG routes, RSS, metadata, and styling overrides local.
  • Removed copied Geistdocs/AI chat/search/sidebar/page-action runtime code.

Verification

  • pnpm --filter docs build passes.
  • Manually checked local docs routes and machine-readable surfaces.
  • Verified code blocks include Shiki token styles and package stylesheet palette.
  • Verified no deep imports from @vercel/geistdocs/dist.
  • Verified no public/llms.txt masks the App Router route.

Notes

Full docs lint/typecheck still have pre-existing unrelated failures in generated .source, homepage visual lint, components/worlds/BenchmarkChart.tsx, and lib/github.ts.

@vercel

vercelBot commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

@changeset-bot

changeset-botBot commented Jun 2, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 3e0bc8f

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@github-actions

github-actionsBot commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

🧪 E2E Test Results

All tests passed

Summary

PassedFailedSkippedTotal
✅ ▲ Vercel Production145302301683
✅ 💻 Local Development161702191836
✅ 📦 Local Production161702191836
✅ 🐘 Local Postgres161702191836
✅ 🪟 Windows15300153
✅ 📋 Other89401771071
Total7351010648415

Details by Category

✅ ▲ Vercel Production
AppPassedFailedSkipped
✅ astro126027
✅ example126027
✅ express126027
✅ fastify126027
✅ hono126027
✅ nextjs-turbopack15003
✅ nextjs-webpack15003
✅ nitro126027
✅ nuxt126027
✅ sveltekit14508
✅ vite126027
✅ 💻 Local Development
AppPassedFailedSkipped
✅ astro-stable128025
✅ express-stable128025
✅ fastify-stable128025
✅ hono-stable128025
✅ nextjs-turbopack-canary134019
✅ nextjs-turbopack-stable15300
✅ nextjs-webpack-canary134019
✅ nextjs-webpack-stable15300
✅ nitro-stable128025
✅ nuxt-stable128025
✅ sveltekit-stable14706
✅ vite-stable128025
✅ 📦 Local Production
AppPassedFailedSkipped
✅ astro-stable128025
✅ express-stable128025
✅ fastify-stable128025
✅ hono-stable128025
✅ nextjs-turbopack-canary134019
✅ nextjs-turbopack-stable15300
✅ nextjs-webpack-canary134019
✅ nextjs-webpack-stable15300
✅ nitro-stable128025
✅ nuxt-stable128025
✅ sveltekit-stable14706
✅ vite-stable128025
✅ 🐘 Local Postgres
AppPassedFailedSkipped
✅ astro-stable128025
✅ express-stable128025
✅ fastify-stable128025
✅ hono-stable128025
✅ nextjs-turbopack-canary134019
✅ nextjs-turbopack-stable15300
✅ nextjs-webpack-canary134019
✅ nextjs-webpack-stable15300
✅ nitro-stable128025
✅ nuxt-stable128025
✅ sveltekit-stable14706
✅ vite-stable128025
✅ 🪟 Windows
AppPassedFailedSkipped
✅ nextjs-turbopack15300
✅ 📋 Other
AppPassedFailedSkipped
✅ e2e-local-dev-nest-stable128025
✅ e2e-local-dev-tanstack-start-128025
✅ e2e-local-postgres-nest-stable128025
✅ e2e-local-postgres-tanstack-start-128025
✅ e2e-local-prod-nest-stable128025
✅ e2e-local-prod-tanstack-start-128025
✅ e2e-vercel-prod-tanstack-start126027

📋 View full workflow run

@github-actions

github-actionsBot commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

📊 Workflow Benchmarks

commit 3e0bc8f · Mon, 13 Jul 2026 12:56:24 GMT · run logs

Backend: vercel · app: nextjs-turbopack

MetricScenarioAvg (ms)P75 (ms)P90 (ms)P99 (ms)Samples
TTFSstream1299 (-13%)1731 🔴1781 🔴2206 🔴30
TTFShook + stream1694 (+6.9%)2000 🔴2239 🔴2860 🔴30
STSO1020 steps (1-20)272 (-18%)311 🔴399 🔴421 🔴19
STSO1020 steps (101-120)483 (+11%)533 🔴709 🔴747 🔴19
STSO1020 steps (1001-1020)902 (+8.5%)954 🔴983 🔴992 🔴19
WOstream1299 (-13%)17311781220630
WOhook + stream1694 (+6.9%)20002239286030
SLstream4194 (-19%)5537 🔴5833 🔴6044 🔴30
SLhook + stream4878 (-1.7%)5622 🔴5753 🔴5987 🔴30
📜 Previous results (3)

dc75b65

Fri, 10 Jul 2026 11:18:50 GMT · run logs

vercel / nextjs-turbopack

MetricScenarioAvg (ms)P75 (ms)P90 (ms)P99 (ms)Samples
TTFSstream1310 (+12%)1673 🔴1713 🔴2696 🔴30
TTFShook + stream1596 (+16%)1933 🔴1999 🔴2123 🔴30
STSO1020 steps (1-20)274 (+0.7%)293 🔴379 🔴524 🔴19
STSO1020 steps (101-120)435 (+4.3%)449 🔴631 🔴922 🔴19
STSO1020 steps (1001-1020)880 (-18%)946 🔴972 🔴1012 🔴19
WOstream1310 (+12%)16731713269630
WOhook + stream1596 (+16%)19331999212330
SLstream4706 (-4.4%)5595 🔴5837 🔴6162 🔴30
SLhook + stream4966 (-1.1%)5618 🔴5707 🔴5786 🔴30

8e0829a

Fri, 10 Jul 2026 10:21:25 GMT · run logs

vercel / nextjs-turbopack

MetricScenarioAvg (ms)P75 (ms)P90 (ms)P99 (ms)Samples
TTFSstream1254 (+7.3%)1683 🔴1716 🔴2022 🔴30
TTFShook + stream1487 (+8.1%)1888 🔴2026 🔴2132 🔴30
STSO1020 steps (1-20)278 (+2.4%)311 🔴412 🔴451 🔴19
STSO1020 steps (101-120)399 (-4.3%)412 🔴577 🔴648 🔴19
STSO1020 steps (1001-1020)876 (-19%)930 🔴960 🔴1001 🔴19
WOstream1254 (+7.3%)16831716202230
WOhook + stream1487 (+8.1%)18882026213230
SLstream4356 (-12%)5088 🔴5618 🔴5770 🔴30
SLhook + stream5016 (±0%)5559 🔴5592 🔴6653 🔴30

3b0b5fc

Thu, 09 Jul 2026 19:04:54 GMT · run logs

vercel / nextjs-turbopack

MetricScenarioAvg (ms)P75 (ms)P90 (ms)P99 (ms)Samples
TTFSstream1124 (+5.9%)1606 🔴1626 🔴2762 🔴30
TTFShook + stream1612 (+24%)1901 🔴1986 🔴2153 🔴30
STSO1020 steps (1-20)275 (+1.1%)297 🔴401 🔴461 🔴19
STSO1020 steps (101-120)404 (+0.7%)415 🔴629 🔴700 🔴19
STSO1020 steps (1001-1020)917 (+9.9%)991 🔴1095 🔴1194 🔴19
WOstream1124 (+5.9%)16061626276230
WOhook + stream1612 (+24%)19011986215330
SLstream4633 (-2.7%)5573 🔴5720 🔴5894 🔴30
SLhook + stream4853 (-1.4%)5313 🔴5535 🔴5756 🔴30

Avg deltas compare against the most recent benchmark run on main at the time of this run.

Metrics — TTFS: time to first step body execution · STSO: step-to-step overhead (gap between consecutive step bodies) · WO: workflow overhead (time outside step bodies, client start → last step body exit) · SL: stream latency (first chunk write → visible to the reader)

Scenarios — stream: one step that streams chunks back to the client; no hooks, so the run stays in turbo mode · hook + stream: registers a hook before the same streaming step, which exits turbo mode · 1020 steps: 1020 trivial sequential steps; STSO is measured between consecutive steps in the given step ranges

🟢/🔴 mark percentiles within/above target. Targets (p75/p90/p99, ms) — TTFS 200/300/600 · SL 50/60/125 · STSO (1-20) 20/30/60 · STSO (101-120) 30/45/90 · STSO (1001-1020) 40/60/120

TTFS/WO compare client vs deployment clocks and SL compares the step runner’s clock vs the client’s (NTP-synced in CI). WO ends at the last step body exit, the closest observable proxy for the final step-completion request.

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Migrates the docs app from a locally-copied Geist/Fumadocs runtime to the package-backed @vercel/geistdocs architecture, keeping existing public route families while replacing most runtime/UI plumbing with thin adapters around the upstream package.

Changes:

  • Adopt @vercel/geistdocs for docs layout/MDX/rendering, plus package-provided search/chat/LLMs/sitemap/agents/mcp routes.
  • Remove large amounts of locally maintained UI/runtime code (chat/search/sidebar/layout/actions) in favor of upstream components and helpers.
  • Update docs tooling/config (source config + link lint + sitemap/RSS generation) to work with versioned Geistdocs sources.

Reviewed changes

Copilot reviewed 223 out of 224 changed files in this pull request and generated 2 comments.

Show a summary per file
FileDescription
packages/docs-typecheck/src/tests/sitemap-guard.test.tsUpdates the sitemap guard to account for package-backed markdown routes.
docs/source.config.tsSwitches to Geistdocs-provided Zod schemas and default source config.
docs/scripts/lint.tsAdapts link linting to pull raw MDX content from Geistdocs pages.
docs/package.jsonAdds @vercel/geistdocs, updates Next/React versions, removes unused local deps.
docs/next.config.tsRemoves Accept-header rewrites now handled elsewhere in the new architecture.
docs/lib/tsdoc/tsdoc.tsxAdds error handling + switches Callout import to Geistdocs package component.
docs/lib/geistdocs/versions.tsMakes v4/v5 version selection explicit and updates versioned URL docstring.
docs/lib/geistdocs/version-source.tsTightens typing for rewriteUrl and preserves URL rewriting behavior.
docs/lib/geistdocs/i18n.tsRemoves local i18n wiring in favor of package-backed provider/layout.
docs/lib/geistdocs/db.tsRemoves local Dexie chat persistence (chat now handled via package route/proxy).
docs/lib/geistdocs/config.tsxIntroduces centralized Geistdocs config (nav/content/versions/ai).
docs/hooks/geistdocs/use-version.tsxRemoves local version state provider/hook (replaced by package version select).
docs/hooks/geistdocs/use-sidebar.tsRemoves local jotai-based sidebar state hook (package-owned UI).
docs/hooks/geistdocs/use-chat.tsRemoves local jotai-based chat state hook (package-owned UI).
docs/geistdocs.tsxExtends site metadata (GitHub edit config + agent readiness config).
docs/content/docs/v5/migration-guides/migrating-from-trigger-dev.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/migration-guides/migrating-from-temporal.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/migration-guides/migrating-from-inngest.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/migration-guides/migrating-from-aws-step-functions.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/vite.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/tanstack-start.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/sveltekit.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/python.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/nuxt.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/nitro.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/next.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/nestjs.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/hono.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/fastify.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/express.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/astro.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/webhook-response-not-sent.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/timeout-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/start-invalid-workflow-function.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/serialization-failed.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/node-js-module-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/hook-conflict.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/fetch-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/abort-signal-timeout-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/integrations/sandbox.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/integrations/chat-sdk.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/integrations/ai-sdk.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/common-patterns/webhooks.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/common-patterns/scheduling.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/common-patterns/saga.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/common-patterns/rate-limiting.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/common-patterns/batching.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/agent-patterns/human-in-the-loop.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/agent-patterns/durable-agent.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/agent-patterns/agent-cancellation.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/advanced/upgrading-workflows.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/advanced/child-workflows.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/migration-guides/migrating-from-trigger-dev.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/migration-guides/migrating-from-temporal.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/migration-guides/migrating-from-inngest.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/migration-guides/migrating-from-aws-step-functions.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/vite.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/tanstack-start.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/sveltekit.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/python.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/nuxt.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/nitro.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/next.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/nestjs.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/hono.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/fastify.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/express.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/astro.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/webhook-response-not-sent.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/timeout-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/start-invalid-workflow-function.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/serialization-failed.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/node-js-module-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/hook-conflict.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/fetch-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/integrations/sandbox.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/integrations/chat-sdk.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/integrations/ai-sdk.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/common-patterns/webhooks.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/common-patterns/scheduling.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/common-patterns/saga.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/common-patterns/rate-limiting.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/common-patterns/batching.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/agent-patterns/human-in-the-loop.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/agent-patterns/durable-agent.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/agent-patterns/agent-cancellation.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/advanced/upgrading-workflows.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/advanced/child-workflows.mdxAdds CopyPrompt helper content.
docs/components/worlds/WorldTestingPerformance.tsxSwitches Tooltip usage to Geistdocs package tooltip component.
docs/components/worlds/WorldInstructions.tsxSwitches Button usage to Geistdocs package button component.
docs/components/worlds/WorldDetailHero.tsxSwitches Button/Tooltip usage to Geistdocs package components.
docs/components/worlds/WorldCardSimple.tsxSwitches Tooltip usage to Geistdocs package tooltip component.
docs/components/worlds/BenchmarkHistoryChart.tsxSwitches Dialog usage to Geistdocs package dialog component.
docs/components/ui/tooltip.tsxRemoves local tooltip implementation (now using package component).
docs/components/ui/toggle.tsxRemoves local UI component implementation.
docs/components/ui/toggle-group.tsxRemoves local UI component implementation.
docs/components/ui/textarea.tsxRemoves local UI component implementation.
docs/components/ui/switch.tsxRemoves local UI component implementation.
docs/components/ui/spinner.tsxRemoves local UI component implementation.
docs/components/ui/sonner.tsxRemoves local toaster implementation (feedback/chat UI removed).
docs/components/ui/slider.tsxRemoves local UI component implementation.
docs/components/ui/sheet.tsxRemoves local UI component implementation.
docs/components/ui/separator.tsxRemoves local UI component implementation.
docs/components/ui/scroll-area.tsxRemoves local UI component implementation.
docs/components/ui/resizable.tsxRemoves local UI component implementation.
docs/components/ui/radio-group.tsxRemoves local UI component implementation.
docs/components/ui/progress.tsxRemoves local UI component implementation.
docs/components/ui/popover.tsxRemoves local UI component implementation.
docs/components/ui/pagination.tsxRemoves local UI component implementation.
docs/components/ui/label.tsxRemoves local UI component implementation.
docs/components/ui/kbd.tsxRemoves local UI component implementation.
docs/components/ui/input.tsxRemoves local UI component implementation.
docs/components/ui/input-otp.tsxRemoves local UI component implementation.
docs/components/ui/hover-card.tsxRemoves local UI component implementation.
docs/components/ui/form.tsxRemoves local UI component implementation.
docs/components/ui/empty.tsxRemoves local UI component implementation.
docs/components/ui/dialog.tsxRemoves local UI component implementation.
docs/components/ui/collapsible.tsxRemoves local UI component implementation.
docs/components/ui/checkbox.tsxRemoves local UI component implementation.
docs/components/ui/button.tsxRemoves local UI component implementation (use Geistdocs package button).
docs/components/ui/button-group.tsxRemoves local UI component implementation.
docs/components/ui/aspect-ratio.tsxRemoves local UI component implementation.
docs/components/ui/alert.tsxRemoves local UI component implementation.
docs/components/ui/alert-dialog.tsxRemoves local UI component implementation.
docs/components/preview-install.tsxSwitches Button usage to Geistdocs package button component.
docs/components/geistdocs/x-button.tsxRemoves local social button implementation (package navbar/footer).
docs/components/geistdocs/video.tsxRemoves local video component (package MDX/components).
docs/components/geistdocs/version-switcher.tsxRemoves local version switcher UI (package versions UI).
docs/components/geistdocs/theme-toggle.tsxRemoves local theme toggle (package navbar/footer).
docs/components/geistdocs/search.tsxRemoves local search dialog/button (package search).
docs/components/geistdocs/scroll-top.tsxRemoves local scroll-to-top UI (package UI).
docs/components/geistdocs/rss-button.tsxRemoves local RSS button UI (package footer).
docs/components/geistdocs/provider.tsxReplaces local RootProvider wiring with Geistdocs package provider.
docs/components/geistdocs/open-in-chat.tsxRemoves local “open in chat” widget (package AI/chat).
docs/components/geistdocs/navbar.tsxRemoves local navbar (package navbar).
docs/components/geistdocs/navbar-logo.tsxRemoves local navbar logo component (package navbar).
docs/components/geistdocs/mobile-docs-bar.tsxRemoves local mobile docs bar (package docs layout).
docs/components/geistdocs/message-metadata.tsxRemoves local chat message metadata UI.
docs/components/geistdocs/mermaid.tsxRemoves local mermaid renderer (package MDX pipeline).
docs/components/geistdocs/mdx-components.tsxSwitches to createMdxComponents and wires custom components into package MDX system.
docs/components/geistdocs/language-selector.tsxRemoves local language selector (package navbar/footer).
docs/components/geistdocs/installer.tsxRemoves local installer widget (package UI).
docs/components/geistdocs/icons.tsxRemoves local icon helper.
docs/components/geistdocs/home-layout.tsxReplaces local Fumadocs layout wrapper with Geistdocs home layout.
docs/components/geistdocs/github-button.tsxRemoves local GitHub button (package footer).
docs/components/geistdocs/footer.tsxRemoves local footer (package footer).
docs/components/geistdocs/feedback.tsxRemoves local feedback UI flow.
docs/components/geistdocs/edit-source.tsxRemoves local “Edit this page” link (package handles via github config).
docs/components/geistdocs/docs-page.tsxRemoves local docs page wrapper (package docs layout).
docs/components/geistdocs/docs-layout.tsxSwitches to Geistdocs docs layout and adds version select + sidebar badges.
docs/components/geistdocs/desktop-menu.tsxRemoves local desktop menu (package navbar).
docs/components/geistdocs/copy-page.tsxRemoves local copy-page action UI.
docs/components/geistdocs/copy-chat.tsxRemoves local chat copy UI.
docs/components/geistdocs/code-block-tabs.tsxRemoves local code block tabs wrapper (package MDX/code).
docs/components/geistdocs/callout.tsxRemoves local callout wrappers (use package callout).
docs/components/geistdocs/ask-ai.tsxRemoves local ask-ai widget (package chat).
docs/components/custom/fluid-compute-callout.tsxSwitches Callout usage to Geistdocs package component.
docs/components/ai-elements/suggestion.tsxRemoves local AI UI elements.
docs/components/ai-elements/sources.tsxRemoves local AI UI elements.
docs/components/ai-elements/shimmer.tsxRemoves local AI UI elements.
docs/components/ai-elements/conversation.tsxRemoves local AI UI elements.
docs/app/styles/geistdocs.cssSwitches styling baseline to Geistdocs package stylesheet.
docs/app/sitemap.tsUpdates sitemap generation to iterate over versioned sources.
docs/app/sitemap.md/route.tsReplaces custom sitemap.md route with package-backed route.
docs/app/robots.tsMakes robots sitemap host configurable with a local fallback.
docs/app/og/[...slug]/route.tsxMakes OG generation tolerant of missing title/description fields.
docs/app/global.cssRoutes global styling through the new geistdocs stylesheet.
docs/app/api/search/route.tsReplaces custom search indexing route with package-backed search route.
docs/app/api/chat/utils.tsRemoves custom chat system prompt construction (package-backed chat).
docs/app/api/chat/types.tsRemoves custom chat message typing (package-backed chat).
docs/app/api/chat/route.tsReplaces custom chat handler with package-backed chat route + optional proxy.
docs/app/actions/feedback/index.tsRemoves server action for feedback submission.
docs/app/actions/feedback/emotions.tsRemoves feedback emotion list used by deleted UI.
docs/app/[lang]/worlds/page.tsxSwitches Button usage to Geistdocs package button component.
docs/app/[lang]/worlds/compare/page.tsxSwitches Button usage to Geistdocs package button component.
docs/app/[lang]/worlds/[id]/page.tsxTightens types for MDX body/toc extraction.
docs/app/[lang]/v5/docs/layout.tsxPasses explicit currentVersion into docs layout.
docs/app/[lang]/v5/cookbook/layout.tsxPasses explicit currentVersion into docs layout.
docs/app/[lang]/sitemap.md/route.tsReplaces custom localized sitemap.md route with package-backed route.
docs/app/[lang]/rss.xml/route.tsUpdates RSS generation to include pages from current sources with safer fallbacks.
docs/app/[lang]/llms.txt/route.tsReplaces custom llms.txt generator with package-backed route.
docs/app/[lang]/llms.mdx/[[...slug]]/route.tsReplaces custom page-level markdown route with package-backed route.
docs/app/[lang]/layout.tsxSwitches to package Navbar/Footer and uses package-backed config/provider.
docs/app/[lang]/docs/layout.tsxPasses explicit currentVersion into docs layout.
docs/app/[lang]/cookbook/layout.tsxPasses explicit currentVersion into docs layout.
docs/app/[lang]/agents.md/route.tsAdds package-backed agents markdown route.
docs/app/[lang]/.well-known/mcp.json/route.tsAdds package-backed MCP manifest route.
docs/app/[lang]/(home)/components/vercel-com-visuals/vercel-section.tsxSwitches Button usage to Geistdocs package button component.
docs/app/[lang]/(home)/components/vercel-com-visuals/feature-grid.tsxSwitches Button usage to Geistdocs package button component.
docs/app/[lang]/(home)/components/vercel-com-visuals/downtime-visual.tsxSwitches Spinner usage to Geistdocs package spinner component.
docs/app/[lang]/(home)/components/templates/index.tsxSwitches Button usage to Geistdocs package button component.
docs/app/[lang]/(home)/components/run-anywhere.tsxSwitches Button usage to Geistdocs package button component.
docs/app/[lang]/(home)/components/preview-badge.tsxSwitches Button/Dialog usage to Geistdocs package components.
docs/app/[lang]/(home)/components/hero.tsxUpdates agent install command string.
docs/app/[lang]/(home)/components/cta.tsxSwitches Button usage to Geistdocs package button component.
Files not reviewed (1)
  • pnpm-lock.yaml: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threaddocs/components/geistdocs/mdx-components.tsx Outdated
Comment threadpackages/docs-typecheck/src/__tests__/sitemap-guard.test.ts Outdated

@karthikscale3karthikscale3 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

these logos dont look right

Image

@karthikscale3karthikscale3 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@karthikscale3karthikscale3 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Image

should workflow show up in the dropdown again? also should we put the "sdk" badge beside it for the sake of consistency

@pranaygp

pranaygp commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

also should we put the "sdk" badge beside it for the sake of consistency

nope. that's not a valid lockup @karthikscale3 so we're not doing that

@pranaygppranaygp left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I found two user-facing regressions in the package-backed docs migration.

Comment threaddocs/lib/geistdocs/source.ts Outdated
Comment threaddocs/app/[lang]/llms.txt/route.ts Outdated
@karthikscale3

Copy link
Copy Markdown
Contributor

Please let us know when this is ready for a re-review

@molebox

Copy link
Copy Markdown
ContributorAuthor

This PR is un-staled and ready for re-review @karthikscale3@pranaygp.

What changed

Merged main back in (was 221 commits behind, conflicting). Notable ports into the package-backed architecture:

Bumped @vercel/geistdocs 1.4.0 → 1.8.2. This picks up the OSS navbar dropdown fix (1.8.0: real logo lockups, eve added, Streamdown dropped, AI Elements moved to the end — the package default now matches what main shipped in #2586/#2543, and Workflow appears with a proper lockup, no "SDK" badge), plus active-nav highlight, Ask AI markdown style fixes, search breadcrumbs, and code-block polish.

Review feedback addressed:

  • Version dropdown logos — version items now use the Workflow glyph (IconWorkflow from the package assets) instead of the default lucide box/archive icons.
  • CopyPrompt consistency — added prompts to the remaining 13 cookbook recipe pages (sequential-and-parallel, timeouts, idempotency, workflow-composition, serializable-steps, publishing-libraries, distributed-abort-controller — v4 and v5, with version-appropriate wording for the v4/v5 start() and cancellation differences).
  • Edit links — now version-scoped (docs/content/docs/v4/{path} vs .../v5/{path}) via per-page-family github.editPath overrides; previously they dropped the version segment.
  • Copilot's two open threads (WorldTestingPerformance stub, brittle sitemap-guard path) were already fixed in cb573b5 — replied inline.

Still holding from the earlier round:/llms.txt, /api/search, /api/chat read currentSources (v4 only); page-level .md routes read allSources; the v5 markdown URL rewrite stays scoped to local link targets (external vercel.com/docs/... links verified untouched).

Verification

  • pnpm --filter docs build ✅, tsc --noEmit (only the 3 pre-existing failures: BenchmarkChart, lib/github.ts ×2) ✅, biome (same pre-existing error count as main) ✅
  • docs link lint ✅, docs-typecheck suite (1014 code samples) ✅, sitemap-guard ✅, docs smoke checks ✅
  • next start spot checks: .md negotiation, sitemap/llms/agents surfaces, AutoCards markdown expansion, v4/v5 edit links, redirects ✅

@molebox

Copy link
Copy Markdown
ContributorAuthor

Follow-ups from Slack feedback (Chris):

  • Workflow removed from the OSS products dropdown — the geistdocs 1.8.2 default list includes the site's own product, so the docs config now overrides navbarOssProducts with eve, AI SDK, Flags SDK, Chat SDK, and AI Elements (matching what main shipped in [docs] use actual eve logo in OSS nav dropdown #2586). 99a52c2
  • Chat panel vs command menu z-order — fixed upstream as requested: vercel/geistdocs#138 lowers the Ask AI panel to z-45 (above the navbar, below all modal surfaces incl. the search command menu). It'll reach this site with the next geistdocs patch bump; no local workaround added.

@molebox

Copy link
Copy Markdown
ContributorAuthor

Bumped @vercel/geistdocs 1.8.2 → 1.11.0 (dc75b65). What lands here:

  • 1.9.0 — the chat z-order fix from vercel/geistdocs#138 (Ask AI panel now z-45, below the search command menu). Closes out the last piece of Chris's Slack feedback with no local workaround.
  • 1.9.0 — Turborepo joined the default OSS products dropdown; added it to our navbarOssProducts override too (which still drops Workflow itself).
  • 1.11.0 — navbar now renders a GitHub icon link when github is configured, restoring parity with the pre-migration navbar's GitHub button (verified it renders, incl. the mobile menu entry).
  • 1.10.0createChatRoute gained an optional model option; we keep the default (openai/gpt-4.1-mini), no change needed.

Verified: docs build ✅, sitemap-guard ✅, next start spot checks (.md URL + Accept negotiation, /llms.txt, AutoCards markdown expansion, versioned edit links, navbar GitHub link) ✅

@socket-security

socket-securityBot commented Jul 10, 2026

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

DiffPackageSupply Chain
Security
VulnerabilityQualityMaintenanceLicense
Addednpm/​next@​16.2.651100919970
Addednpm/​@​vercel/​geistdocs@​1.11.0771007499100
Addednpm/​hono@​4.12.28991009796100

View full report

@molebox

Copy link
Copy Markdown
ContributorAuthor

@copilot resolve the merge conflicts in this pull request

CopilotAI commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

@copilot resolve the merge conflicts in this pull request

Done. Merged main (12 commits ahead) into migrate-docs in e16a58c. The only conflict was a single line in pnpm-lock.yaml (a vite version string: 7.3.2 vs 7.3.6) — resolved by taking the newer version from main in the follow-up commit.

@karthikscale3karthikscale3 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Thank you!

@github-actions

Copy link
Copy Markdown
Contributor

No backport to stable for aa93cc5 (AI decision).

This commit is a wholesale re-architecture of the docs/ app (outside docs/content/) onto the new @vercel/geistdocs package — that portion of the docs app is not maintained on stable. The pieces touching maintained paths are tightly coupled to this migration and cannot stand alone: the docs/content/*.mdx changes only add <CopyPrompt> components that rely on the new geistdocs MDX runtime introduced here, and the packages/docs-typecheck/sitemap-guard.test.ts rewrite specifically asserts the geistdocs-based createDocsMarkdownRoute structure that doesn't exist on stable, so it would fail there.

To override, re-run the Backport to stable workflow manually via workflow_dispatch and paste this commit SHA into the ref input:

aa93cc5e690649de17b3f28c9ca1c88be0eb23d8

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants

@molebox@pranaygp@karthikscale3@VaguelySerious@christopherkindl
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Migrate docs to package-backed geistdocs - #2222

Merged
molebox merged 14 commits into
mainfrom
migrate-docs
Jul 13, 2026
Merged

Migrate docs to package-backed geistdocs#2222
molebox merged 14 commits into
mainfrom
migrate-docs

Conversation

@molebox

@moleboxmolebox commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

Previews

Summary

Migrates the docs app from the old copied geist/Fumadocs/custom runtime to the package-backed @vercel/geistdocs architecture.

Changes

  • Added @vercel/geistdocs and aligned supported Next/React versions.
  • Replaced local docs page, layout, MDX, search, chat, Markdown, sitemap, agents, and proxy runtime code with thin package-backed adapters.
  • Preserved public docs route families:
    • /docs
    • /cookbook
    • /v5/docs
    • /v5/cookbook
    • /worlds
    • /llms.txt
    • /sitemap.md
    • /agents.md
    • page-level .md routes
  • Kept project-specific content, homepage, worlds pages, OG routes, RSS, metadata, and styling overrides local.
  • Removed copied Geistdocs/AI chat/search/sidebar/page-action runtime code.

Verification

  • pnpm --filter docs build passes.
  • Manually checked local docs routes and machine-readable surfaces.
  • Verified code blocks include Shiki token styles and package stylesheet palette.
  • Verified no deep imports from @vercel/geistdocs/dist.
  • Verified no public/llms.txt masks the App Router route.

Notes

Full docs lint/typecheck still have pre-existing unrelated failures in generated .source, homepage visual lint, components/worlds/BenchmarkChart.tsx, and lib/github.ts.

@vercel

vercelBot commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

@changeset-bot

changeset-botBot commented Jun 2, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 3e0bc8f

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@github-actions

github-actionsBot commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

🧪 E2E Test Results

All tests passed

Summary

PassedFailedSkippedTotal
✅ ▲ Vercel Production145302301683
✅ 💻 Local Development161702191836
✅ 📦 Local Production161702191836
✅ 🐘 Local Postgres161702191836
✅ 🪟 Windows15300153
✅ 📋 Other89401771071
Total7351010648415

Details by Category

✅ ▲ Vercel Production
AppPassedFailedSkipped
✅ astro126027
✅ example126027
✅ express126027
✅ fastify126027
✅ hono126027
✅ nextjs-turbopack15003
✅ nextjs-webpack15003
✅ nitro126027
✅ nuxt126027
✅ sveltekit14508
✅ vite126027
✅ 💻 Local Development
AppPassedFailedSkipped
✅ astro-stable128025
✅ express-stable128025
✅ fastify-stable128025
✅ hono-stable128025
✅ nextjs-turbopack-canary134019
✅ nextjs-turbopack-stable15300
✅ nextjs-webpack-canary134019
✅ nextjs-webpack-stable15300
✅ nitro-stable128025
✅ nuxt-stable128025
✅ sveltekit-stable14706
✅ vite-stable128025
✅ 📦 Local Production
AppPassedFailedSkipped
✅ astro-stable128025
✅ express-stable128025
✅ fastify-stable128025
✅ hono-stable128025
✅ nextjs-turbopack-canary134019
✅ nextjs-turbopack-stable15300
✅ nextjs-webpack-canary134019
✅ nextjs-webpack-stable15300
✅ nitro-stable128025
✅ nuxt-stable128025
✅ sveltekit-stable14706
✅ vite-stable128025
✅ 🐘 Local Postgres
AppPassedFailedSkipped
✅ astro-stable128025
✅ express-stable128025
✅ fastify-stable128025
✅ hono-stable128025
✅ nextjs-turbopack-canary134019
✅ nextjs-turbopack-stable15300
✅ nextjs-webpack-canary134019
✅ nextjs-webpack-stable15300
✅ nitro-stable128025
✅ nuxt-stable128025
✅ sveltekit-stable14706
✅ vite-stable128025
✅ 🪟 Windows
AppPassedFailedSkipped
✅ nextjs-turbopack15300
✅ 📋 Other
AppPassedFailedSkipped
✅ e2e-local-dev-nest-stable128025
✅ e2e-local-dev-tanstack-start-128025
✅ e2e-local-postgres-nest-stable128025
✅ e2e-local-postgres-tanstack-start-128025
✅ e2e-local-prod-nest-stable128025
✅ e2e-local-prod-tanstack-start-128025
✅ e2e-vercel-prod-tanstack-start126027

📋 View full workflow run

@github-actions

github-actionsBot commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

📊 Workflow Benchmarks

commit 3e0bc8f · Mon, 13 Jul 2026 12:56:24 GMT · run logs

Backend: vercel · app: nextjs-turbopack

MetricScenarioAvg (ms)P75 (ms)P90 (ms)P99 (ms)Samples
TTFSstream1299 (-13%)1731 🔴1781 🔴2206 🔴30
TTFShook + stream1694 (+6.9%)2000 🔴2239 🔴2860 🔴30
STSO1020 steps (1-20)272 (-18%)311 🔴399 🔴421 🔴19
STSO1020 steps (101-120)483 (+11%)533 🔴709 🔴747 🔴19
STSO1020 steps (1001-1020)902 (+8.5%)954 🔴983 🔴992 🔴19
WOstream1299 (-13%)17311781220630
WOhook + stream1694 (+6.9%)20002239286030
SLstream4194 (-19%)5537 🔴5833 🔴6044 🔴30
SLhook + stream4878 (-1.7%)5622 🔴5753 🔴5987 🔴30
📜 Previous results (3)

dc75b65

Fri, 10 Jul 2026 11:18:50 GMT · run logs

vercel / nextjs-turbopack

MetricScenarioAvg (ms)P75 (ms)P90 (ms)P99 (ms)Samples
TTFSstream1310 (+12%)1673 🔴1713 🔴2696 🔴30
TTFShook + stream1596 (+16%)1933 🔴1999 🔴2123 🔴30
STSO1020 steps (1-20)274 (+0.7%)293 🔴379 🔴524 🔴19
STSO1020 steps (101-120)435 (+4.3%)449 🔴631 🔴922 🔴19
STSO1020 steps (1001-1020)880 (-18%)946 🔴972 🔴1012 🔴19
WOstream1310 (+12%)16731713269630
WOhook + stream1596 (+16%)19331999212330
SLstream4706 (-4.4%)5595 🔴5837 🔴6162 🔴30
SLhook + stream4966 (-1.1%)5618 🔴5707 🔴5786 🔴30

8e0829a

Fri, 10 Jul 2026 10:21:25 GMT · run logs

vercel / nextjs-turbopack

MetricScenarioAvg (ms)P75 (ms)P90 (ms)P99 (ms)Samples
TTFSstream1254 (+7.3%)1683 🔴1716 🔴2022 🔴30
TTFShook + stream1487 (+8.1%)1888 🔴2026 🔴2132 🔴30
STSO1020 steps (1-20)278 (+2.4%)311 🔴412 🔴451 🔴19
STSO1020 steps (101-120)399 (-4.3%)412 🔴577 🔴648 🔴19
STSO1020 steps (1001-1020)876 (-19%)930 🔴960 🔴1001 🔴19
WOstream1254 (+7.3%)16831716202230
WOhook + stream1487 (+8.1%)18882026213230
SLstream4356 (-12%)5088 🔴5618 🔴5770 🔴30
SLhook + stream5016 (±0%)5559 🔴5592 🔴6653 🔴30

3b0b5fc

Thu, 09 Jul 2026 19:04:54 GMT · run logs

vercel / nextjs-turbopack

MetricScenarioAvg (ms)P75 (ms)P90 (ms)P99 (ms)Samples
TTFSstream1124 (+5.9%)1606 🔴1626 🔴2762 🔴30
TTFShook + stream1612 (+24%)1901 🔴1986 🔴2153 🔴30
STSO1020 steps (1-20)275 (+1.1%)297 🔴401 🔴461 🔴19
STSO1020 steps (101-120)404 (+0.7%)415 🔴629 🔴700 🔴19
STSO1020 steps (1001-1020)917 (+9.9%)991 🔴1095 🔴1194 🔴19
WOstream1124 (+5.9%)16061626276230
WOhook + stream1612 (+24%)19011986215330
SLstream4633 (-2.7%)5573 🔴5720 🔴5894 🔴30
SLhook + stream4853 (-1.4%)5313 🔴5535 🔴5756 🔴30

Avg deltas compare against the most recent benchmark run on main at the time of this run.

Metrics — TTFS: time to first step body execution · STSO: step-to-step overhead (gap between consecutive step bodies) · WO: workflow overhead (time outside step bodies, client start → last step body exit) · SL: stream latency (first chunk write → visible to the reader)

Scenarios — stream: one step that streams chunks back to the client; no hooks, so the run stays in turbo mode · hook + stream: registers a hook before the same streaming step, which exits turbo mode · 1020 steps: 1020 trivial sequential steps; STSO is measured between consecutive steps in the given step ranges

🟢/🔴 mark percentiles within/above target. Targets (p75/p90/p99, ms) — TTFS 200/300/600 · SL 50/60/125 · STSO (1-20) 20/30/60 · STSO (101-120) 30/45/90 · STSO (1001-1020) 40/60/120

TTFS/WO compare client vs deployment clocks and SL compares the step runner’s clock vs the client’s (NTP-synced in CI). WO ends at the last step body exit, the closest observable proxy for the final step-completion request.

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Migrates the docs app from a locally-copied Geist/Fumadocs runtime to the package-backed @vercel/geistdocs architecture, keeping existing public route families while replacing most runtime/UI plumbing with thin adapters around the upstream package.

Changes:

  • Adopt @vercel/geistdocs for docs layout/MDX/rendering, plus package-provided search/chat/LLMs/sitemap/agents/mcp routes.
  • Remove large amounts of locally maintained UI/runtime code (chat/search/sidebar/layout/actions) in favor of upstream components and helpers.
  • Update docs tooling/config (source config + link lint + sitemap/RSS generation) to work with versioned Geistdocs sources.

Reviewed changes

Copilot reviewed 223 out of 224 changed files in this pull request and generated 2 comments.

Show a summary per file
FileDescription
packages/docs-typecheck/src/tests/sitemap-guard.test.tsUpdates the sitemap guard to account for package-backed markdown routes.
docs/source.config.tsSwitches to Geistdocs-provided Zod schemas and default source config.
docs/scripts/lint.tsAdapts link linting to pull raw MDX content from Geistdocs pages.
docs/package.jsonAdds @vercel/geistdocs, updates Next/React versions, removes unused local deps.
docs/next.config.tsRemoves Accept-header rewrites now handled elsewhere in the new architecture.
docs/lib/tsdoc/tsdoc.tsxAdds error handling + switches Callout import to Geistdocs package component.
docs/lib/geistdocs/versions.tsMakes v4/v5 version selection explicit and updates versioned URL docstring.
docs/lib/geistdocs/version-source.tsTightens typing for rewriteUrl and preserves URL rewriting behavior.
docs/lib/geistdocs/i18n.tsRemoves local i18n wiring in favor of package-backed provider/layout.
docs/lib/geistdocs/db.tsRemoves local Dexie chat persistence (chat now handled via package route/proxy).
docs/lib/geistdocs/config.tsxIntroduces centralized Geistdocs config (nav/content/versions/ai).
docs/hooks/geistdocs/use-version.tsxRemoves local version state provider/hook (replaced by package version select).
docs/hooks/geistdocs/use-sidebar.tsRemoves local jotai-based sidebar state hook (package-owned UI).
docs/hooks/geistdocs/use-chat.tsRemoves local jotai-based chat state hook (package-owned UI).
docs/geistdocs.tsxExtends site metadata (GitHub edit config + agent readiness config).
docs/content/docs/v5/migration-guides/migrating-from-trigger-dev.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/migration-guides/migrating-from-temporal.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/migration-guides/migrating-from-inngest.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/migration-guides/migrating-from-aws-step-functions.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/vite.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/tanstack-start.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/sveltekit.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/python.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/nuxt.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/nitro.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/next.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/nestjs.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/hono.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/fastify.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/express.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/astro.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/webhook-response-not-sent.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/timeout-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/start-invalid-workflow-function.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/serialization-failed.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/node-js-module-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/hook-conflict.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/fetch-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/abort-signal-timeout-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/integrations/sandbox.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/integrations/chat-sdk.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/integrations/ai-sdk.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/common-patterns/webhooks.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/common-patterns/scheduling.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/common-patterns/saga.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/common-patterns/rate-limiting.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/common-patterns/batching.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/agent-patterns/human-in-the-loop.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/agent-patterns/durable-agent.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/agent-patterns/agent-cancellation.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/advanced/upgrading-workflows.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/advanced/child-workflows.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/migration-guides/migrating-from-trigger-dev.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/migration-guides/migrating-from-temporal.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/migration-guides/migrating-from-inngest.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/migration-guides/migrating-from-aws-step-functions.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/vite.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/tanstack-start.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/sveltekit.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/python.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/nuxt.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/nitro.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/next.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/nestjs.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/hono.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/fastify.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/express.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/astro.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/webhook-response-not-sent.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/timeout-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/start-invalid-workflow-function.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/serialization-failed.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/node-js-module-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/hook-conflict.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/fetch-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/integrations/sandbox.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/integrations/chat-sdk.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/integrations/ai-sdk.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/common-patterns/webhooks.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/common-patterns/scheduling.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/common-patterns/saga.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/common-patterns/rate-limiting.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/common-patterns/batching.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/agent-patterns/human-in-the-loop.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/agent-patterns/durable-agent.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/agent-patterns/agent-cancellation.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/advanced/upgrading-workflows.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/advanced/child-workflows.mdxAdds CopyPrompt helper content.
docs/components/worlds/WorldTestingPerformance.tsxSwitches Tooltip usage to Geistdocs package tooltip component.
docs/components/worlds/WorldInstructions.tsxSwitches Button usage to Geistdocs package button component.
docs/components/worlds/WorldDetailHero.tsxSwitches Button/Tooltip usage to Geistdocs package components.
docs/components/worlds/WorldCardSimple.tsxSwitches Tooltip usage to Geistdocs package tooltip component.
docs/components/worlds/BenchmarkHistoryChart.tsxSwitches Dialog usage to Geistdocs package dialog component.
docs/components/ui/tooltip.tsxRemoves local tooltip implementation (now using package component).
docs/components/ui/toggle.tsxRemoves local UI component implementation.
docs/components/ui/toggle-group.tsxRemoves local UI component implementation.
docs/components/ui/textarea.tsxRemoves local UI component implementation.
docs/components/ui/switch.tsxRemoves local UI component implementation.
docs/components/ui/spinner.tsxRemoves local UI component implementation.
docs/components/ui/sonner.tsxRemoves local toaster implementation (feedback/chat UI removed).
docs/components/ui/slider.tsxRemoves local UI component implementation.
docs/components/ui/sheet.tsxRemoves local UI component implementation.
docs/components/ui/separator.tsxRemoves local UI component implementation.
docs/components/ui/scroll-area.tsxRemoves local UI component implementation.
docs/components/ui/resizable.tsxRemoves local UI component implementation.
docs/components/ui/radio-group.tsxRemoves local UI component implementation.
docs/components/ui/progress.tsxRemoves local UI component implementation.
docs/components/ui/popover.tsxRemoves local UI component implementation.
docs/components/ui/pagination.tsxRemoves local UI component implementation.
docs/components/ui/label.tsxRemoves local UI component implementation.
docs/components/ui/kbd.tsxRemoves local UI component implementation.
docs/components/ui/input.tsxRemoves local UI component implementation.
docs/components/ui/input-otp.tsxRemoves local UI component implementation.
docs/components/ui/hover-card.tsxRemoves local UI component implementation.
docs/components/ui/form.tsxRemoves local UI component implementation.
docs/components/ui/empty.tsxRemoves local UI component implementation.
docs/components/ui/dialog.tsxRemoves local UI component implementation.
docs/components/ui/collapsible.tsxRemoves local UI component implementation.
docs/components/ui/checkbox.tsxRemoves local UI component implementation.
docs/components/ui/button.tsxRemoves local UI component implementation (use Geistdocs package button).
docs/components/ui/button-group.tsxRemoves local UI component implementation.
docs/components/ui/aspect-ratio.tsxRemoves local UI component implementation.
docs/components/ui/alert.tsxRemoves local UI component implementation.
docs/components/ui/alert-dialog.tsxRemoves local UI component implementation.
docs/components/preview-install.tsxSwitches Button usage to Geistdocs package button component.
docs/components/geistdocs/x-button.tsxRemoves local social button implementation (package navbar/footer).
docs/components/geistdocs/video.tsxRemoves local video component (package MDX/components).
docs/components/geistdocs/version-switcher.tsxRemoves local version switcher UI (package versions UI).
docs/components/geistdocs/theme-toggle.tsxRemoves local theme toggle (package navbar/footer).
docs/components/geistdocs/search.tsxRemoves local search dialog/button (package search).
docs/components/geistdocs/scroll-top.tsxRemoves local scroll-to-top UI (package UI).
docs/components/geistdocs/rss-button.tsxRemoves local RSS button UI (package footer).
docs/components/geistdocs/provider.tsxReplaces local RootProvider wiring with Geistdocs package provider.
docs/components/geistdocs/open-in-chat.tsxRemoves local “open in chat” widget (package AI/chat).
docs/components/geistdocs/navbar.tsxRemoves local navbar (package navbar).
docs/components/geistdocs/navbar-logo.tsxRemoves local navbar logo component (package navbar).
docs/components/geistdocs/mobile-docs-bar.tsxRemoves local mobile docs bar (package docs layout).
docs/components/geistdocs/message-metadata.tsxRemoves local chat message metadata UI.
docs/components/geistdocs/mermaid.tsxRemoves local mermaid renderer (package MDX pipeline).
docs/components/geistdocs/mdx-components.tsxSwitches to createMdxComponents and wires custom components into package MDX system.
docs/components/geistdocs/language-selector.tsxRemoves local language selector (package navbar/footer).
docs/components/geistdocs/installer.tsxRemoves local installer widget (package UI).
docs/components/geistdocs/icons.tsxRemoves local icon helper.
docs/components/geistdocs/home-layout.tsxReplaces local Fumadocs layout wrapper with Geistdocs home layout.
docs/components/geistdocs/github-button.tsxRemoves local GitHub button (package footer).
docs/components/geistdocs/footer.tsxRemoves local footer (package footer).
docs/components/geistdocs/feedback.tsxRemoves local feedback UI flow.
docs/components/geistdocs/edit-source.tsxRemoves local “Edit this page” link (package handles via github config).
docs/components/geistdocs/docs-page.tsxRemoves local docs page wrapper (package docs layout).
docs/components/geistdocs/docs-layout.tsxSwitches to Geistdocs docs layout and adds version select + sidebar badges.
docs/components/geistdocs/desktop-menu.tsxRemoves local desktop menu (package navbar).
docs/components/geistdocs/copy-page.tsxRemoves local copy-page action UI.
docs/components/geistdocs/copy-chat.tsxRemoves local chat copy UI.
docs/components/geistdocs/code-block-tabs.tsxRemoves local code block tabs wrapper (package MDX/code).
docs/components/geistdocs/callout.tsxRemoves local callout wrappers (use package callout).
docs/components/geistdocs/ask-ai.tsxRemoves local ask-ai widget (package chat).
docs/components/custom/fluid-compute-callout.tsxSwitches Callout usage to Geistdocs package component.
docs/components/ai-elements/suggestion.tsxRemoves local AI UI elements.
docs/components/ai-elements/sources.tsxRemoves local AI UI elements.
docs/components/ai-elements/shimmer.tsxRemoves local AI UI elements.
docs/components/ai-elements/conversation.tsxRemoves local AI UI elements.
docs/app/styles/geistdocs.cssSwitches styling baseline to Geistdocs package stylesheet.
docs/app/sitemap.tsUpdates sitemap generation to iterate over versioned sources.
docs/app/sitemap.md/route.tsReplaces custom sitemap.md route with package-backed route.
docs/app/robots.tsMakes robots sitemap host configurable with a local fallback.
docs/app/og/[...slug]/route.tsxMakes OG generation tolerant of missing title/description fields.
docs/app/global.cssRoutes global styling through the new geistdocs stylesheet.
docs/app/api/search/route.tsReplaces custom search indexing route with package-backed search route.
docs/app/api/chat/utils.tsRemoves custom chat system prompt construction (package-backed chat).
docs/app/api/chat/types.tsRemoves custom chat message typing (package-backed chat).
docs/app/api/chat/route.tsReplaces custom chat handler with package-backed chat route + optional proxy.
docs/app/actions/feedback/index.tsRemoves server action for feedback submission.
docs/app/actions/feedback/emotions.tsRemoves feedback emotion list used by deleted UI.
docs/app/[lang]/worlds/page.tsxSwitches Button usage to Geistdocs package button component.
docs/app/[lang]/worlds/compare/page.tsxSwitches Button usage to Geistdocs package button component.
docs/app/[lang]/worlds/[id]/page.tsxTightens types for MDX body/toc extraction.
docs/app/[lang]/v5/docs/layout.tsxPasses explicit currentVersion into docs layout.
docs/app/[lang]/v5/cookbook/layout.tsxPasses explicit currentVersion into docs layout.
docs/app/[lang]/sitemap.md/route.tsReplaces custom localized sitemap.md route with package-backed route.
docs/app/[lang]/rss.xml/route.tsUpdates RSS generation to include pages from current sources with safer fallbacks.
docs/app/[lang]/llms.txt/route.tsReplaces custom llms.txt generator with package-backed route.
docs/app/[lang]/llms.mdx/[[...slug]]/route.tsReplaces custom page-level markdown route with package-backed route.
docs/app/[lang]/layout.tsxSwitches to package Navbar/Footer and uses package-backed config/provider.
docs/app/[lang]/docs/layout.tsxPasses explicit currentVersion into docs layout.
docs/app/[lang]/cookbook/layout.tsxPasses explicit currentVersion into docs layout.
docs/app/[lang]/agents.md/route.tsAdds package-backed agents markdown route.
docs/app/[lang]/.well-known/mcp.json/route.tsAdds package-backed MCP manifest route.
docs/app/[lang]/(home)/components/vercel-com-visuals/vercel-section.tsxSwitches Button usage to Geistdocs package button component.
docs/app/[lang]/(home)/components/vercel-com-visuals/feature-grid.tsxSwitches Button usage to Geistdocs package button component.
docs/app/[lang]/(home)/components/vercel-com-visuals/downtime-visual.tsxSwitches Spinner usage to Geistdocs package spinner component.
docs/app/[lang]/(home)/components/templates/index.tsxSwitches Button usage to Geistdocs package button component.
docs/app/[lang]/(home)/components/run-anywhere.tsxSwitches Button usage to Geistdocs package button component.
docs/app/[lang]/(home)/components/preview-badge.tsxSwitches Button/Dialog usage to Geistdocs package components.
docs/app/[lang]/(home)/components/hero.tsxUpdates agent install command string.
docs/app/[lang]/(home)/components/cta.tsxSwitches Button usage to Geistdocs package button component.
Files not reviewed (1)
  • pnpm-lock.yaml: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threaddocs/components/geistdocs/mdx-components.tsx Outdated
Comment threadpackages/docs-typecheck/src/__tests__/sitemap-guard.test.ts Outdated

@karthikscale3karthikscale3 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

these logos dont look right

Image

@karthikscale3karthikscale3 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@karthikscale3karthikscale3 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Image

should workflow show up in the dropdown again? also should we put the "sdk" badge beside it for the sake of consistency

@pranaygp

pranaygp commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

also should we put the "sdk" badge beside it for the sake of consistency

nope. that's not a valid lockup @karthikscale3 so we're not doing that

@pranaygppranaygp left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I found two user-facing regressions in the package-backed docs migration.

Comment threaddocs/lib/geistdocs/source.ts Outdated
Comment threaddocs/app/[lang]/llms.txt/route.ts Outdated
@karthikscale3

Copy link
Copy Markdown
Contributor

Please let us know when this is ready for a re-review

@molebox

Copy link
Copy Markdown
ContributorAuthor

This PR is un-staled and ready for re-review @karthikscale3@pranaygp.

What changed

Merged main back in (was 221 commits behind, conflicting). Notable ports into the package-backed architecture:

Bumped @vercel/geistdocs 1.4.0 → 1.8.2. This picks up the OSS navbar dropdown fix (1.8.0: real logo lockups, eve added, Streamdown dropped, AI Elements moved to the end — the package default now matches what main shipped in #2586/#2543, and Workflow appears with a proper lockup, no "SDK" badge), plus active-nav highlight, Ask AI markdown style fixes, search breadcrumbs, and code-block polish.

Review feedback addressed:

  • Version dropdown logos — version items now use the Workflow glyph (IconWorkflow from the package assets) instead of the default lucide box/archive icons.
  • CopyPrompt consistency — added prompts to the remaining 13 cookbook recipe pages (sequential-and-parallel, timeouts, idempotency, workflow-composition, serializable-steps, publishing-libraries, distributed-abort-controller — v4 and v5, with version-appropriate wording for the v4/v5 start() and cancellation differences).
  • Edit links — now version-scoped (docs/content/docs/v4/{path} vs .../v5/{path}) via per-page-family github.editPath overrides; previously they dropped the version segment.
  • Copilot's two open threads (WorldTestingPerformance stub, brittle sitemap-guard path) were already fixed in cb573b5 — replied inline.

Still holding from the earlier round:/llms.txt, /api/search, /api/chat read currentSources (v4 only); page-level .md routes read allSources; the v5 markdown URL rewrite stays scoped to local link targets (external vercel.com/docs/... links verified untouched).

Verification

  • pnpm --filter docs build ✅, tsc --noEmit (only the 3 pre-existing failures: BenchmarkChart, lib/github.ts ×2) ✅, biome (same pre-existing error count as main) ✅
  • docs link lint ✅, docs-typecheck suite (1014 code samples) ✅, sitemap-guard ✅, docs smoke checks ✅
  • next start spot checks: .md negotiation, sitemap/llms/agents surfaces, AutoCards markdown expansion, v4/v5 edit links, redirects ✅

@molebox

Copy link
Copy Markdown
ContributorAuthor

Follow-ups from Slack feedback (Chris):

  • Workflow removed from the OSS products dropdown — the geistdocs 1.8.2 default list includes the site's own product, so the docs config now overrides navbarOssProducts with eve, AI SDK, Flags SDK, Chat SDK, and AI Elements (matching what main shipped in [docs] use actual eve logo in OSS nav dropdown #2586). 99a52c2
  • Chat panel vs command menu z-order — fixed upstream as requested: vercel/geistdocs#138 lowers the Ask AI panel to z-45 (above the navbar, below all modal surfaces incl. the search command menu). It'll reach this site with the next geistdocs patch bump; no local workaround added.

@molebox

Copy link
Copy Markdown
ContributorAuthor

Bumped @vercel/geistdocs 1.8.2 → 1.11.0 (dc75b65). What lands here:

  • 1.9.0 — the chat z-order fix from vercel/geistdocs#138 (Ask AI panel now z-45, below the search command menu). Closes out the last piece of Chris's Slack feedback with no local workaround.
  • 1.9.0 — Turborepo joined the default OSS products dropdown; added it to our navbarOssProducts override too (which still drops Workflow itself).
  • 1.11.0 — navbar now renders a GitHub icon link when github is configured, restoring parity with the pre-migration navbar's GitHub button (verified it renders, incl. the mobile menu entry).
  • 1.10.0createChatRoute gained an optional model option; we keep the default (openai/gpt-4.1-mini), no change needed.

Verified: docs build ✅, sitemap-guard ✅, next start spot checks (.md URL + Accept negotiation, /llms.txt, AutoCards markdown expansion, versioned edit links, navbar GitHub link) ✅

@socket-security

socket-securityBot commented Jul 10, 2026

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

DiffPackageSupply Chain
Security
VulnerabilityQualityMaintenanceLicense
Addednpm/​next@​16.2.651100919970
Addednpm/​@​vercel/​geistdocs@​1.11.0771007499100
Addednpm/​hono@​4.12.28991009796100

View full report

@molebox

Copy link
Copy Markdown
ContributorAuthor

@copilot resolve the merge conflicts in this pull request

CopilotAI commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

@copilot resolve the merge conflicts in this pull request

Done. Merged main (12 commits ahead) into migrate-docs in e16a58c. The only conflict was a single line in pnpm-lock.yaml (a vite version string: 7.3.2 vs 7.3.6) — resolved by taking the newer version from main in the follow-up commit.

@karthikscale3karthikscale3 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Thank you!

@github-actions

Copy link
Copy Markdown
Contributor

No backport to stable for aa93cc5 (AI decision).

This commit is a wholesale re-architecture of the docs/ app (outside docs/content/) onto the new @vercel/geistdocs package — that portion of the docs app is not maintained on stable. The pieces touching maintained paths are tightly coupled to this migration and cannot stand alone: the docs/content/*.mdx changes only add <CopyPrompt> components that rely on the new geistdocs MDX runtime introduced here, and the packages/docs-typecheck/sitemap-guard.test.ts rewrite specifically asserts the geistdocs-based createDocsMarkdownRoute structure that doesn't exist on stable, so it would fail there.

To override, re-run the Backport to stable workflow manually via workflow_dispatch and paste this commit SHA into the ref input:

aa93cc5e690649de17b3f28c9ca1c88be0eb23d8

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants

@molebox@pranaygp@karthikscale3@VaguelySerious@christopherkindl
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Migrate docs to package-backed geistdocs - #2222

Merged
molebox merged 14 commits into
mainfrom
migrate-docs
Jul 13, 2026
Merged

Migrate docs to package-backed geistdocs#2222
molebox merged 14 commits into
mainfrom
migrate-docs

Conversation

@molebox

@moleboxmolebox commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

Previews

Summary

Migrates the docs app from the old copied geist/Fumadocs/custom runtime to the package-backed @vercel/geistdocs architecture.

Changes

  • Added @vercel/geistdocs and aligned supported Next/React versions.
  • Replaced local docs page, layout, MDX, search, chat, Markdown, sitemap, agents, and proxy runtime code with thin package-backed adapters.
  • Preserved public docs route families:
    • /docs
    • /cookbook
    • /v5/docs
    • /v5/cookbook
    • /worlds
    • /llms.txt
    • /sitemap.md
    • /agents.md
    • page-level .md routes
  • Kept project-specific content, homepage, worlds pages, OG routes, RSS, metadata, and styling overrides local.
  • Removed copied Geistdocs/AI chat/search/sidebar/page-action runtime code.

Verification

  • pnpm --filter docs build passes.
  • Manually checked local docs routes and machine-readable surfaces.
  • Verified code blocks include Shiki token styles and package stylesheet palette.
  • Verified no deep imports from @vercel/geistdocs/dist.
  • Verified no public/llms.txt masks the App Router route.

Notes

Full docs lint/typecheck still have pre-existing unrelated failures in generated .source, homepage visual lint, components/worlds/BenchmarkChart.tsx, and lib/github.ts.

@vercel

vercelBot commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

@changeset-bot

changeset-botBot commented Jun 2, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 3e0bc8f

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@github-actions

github-actionsBot commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

🧪 E2E Test Results

All tests passed

Summary

PassedFailedSkippedTotal
✅ ▲ Vercel Production145302301683
✅ 💻 Local Development161702191836
✅ 📦 Local Production161702191836
✅ 🐘 Local Postgres161702191836
✅ 🪟 Windows15300153
✅ 📋 Other89401771071
Total7351010648415

Details by Category

✅ ▲ Vercel Production
AppPassedFailedSkipped
✅ astro126027
✅ example126027
✅ express126027
✅ fastify126027
✅ hono126027
✅ nextjs-turbopack15003
✅ nextjs-webpack15003
✅ nitro126027
✅ nuxt126027
✅ sveltekit14508
✅ vite126027
✅ 💻 Local Development
AppPassedFailedSkipped
✅ astro-stable128025
✅ express-stable128025
✅ fastify-stable128025
✅ hono-stable128025
✅ nextjs-turbopack-canary134019
✅ nextjs-turbopack-stable15300
✅ nextjs-webpack-canary134019
✅ nextjs-webpack-stable15300
✅ nitro-stable128025
✅ nuxt-stable128025
✅ sveltekit-stable14706
✅ vite-stable128025
✅ 📦 Local Production
AppPassedFailedSkipped
✅ astro-stable128025
✅ express-stable128025
✅ fastify-stable128025
✅ hono-stable128025
✅ nextjs-turbopack-canary134019
✅ nextjs-turbopack-stable15300
✅ nextjs-webpack-canary134019
✅ nextjs-webpack-stable15300
✅ nitro-stable128025
✅ nuxt-stable128025
✅ sveltekit-stable14706
✅ vite-stable128025
✅ 🐘 Local Postgres
AppPassedFailedSkipped
✅ astro-stable128025
✅ express-stable128025
✅ fastify-stable128025
✅ hono-stable128025
✅ nextjs-turbopack-canary134019
✅ nextjs-turbopack-stable15300
✅ nextjs-webpack-canary134019
✅ nextjs-webpack-stable15300
✅ nitro-stable128025
✅ nuxt-stable128025
✅ sveltekit-stable14706
✅ vite-stable128025
✅ 🪟 Windows
AppPassedFailedSkipped
✅ nextjs-turbopack15300
✅ 📋 Other
AppPassedFailedSkipped
✅ e2e-local-dev-nest-stable128025
✅ e2e-local-dev-tanstack-start-128025
✅ e2e-local-postgres-nest-stable128025
✅ e2e-local-postgres-tanstack-start-128025
✅ e2e-local-prod-nest-stable128025
✅ e2e-local-prod-tanstack-start-128025
✅ e2e-vercel-prod-tanstack-start126027

📋 View full workflow run

@github-actions

github-actionsBot commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

📊 Workflow Benchmarks

commit 3e0bc8f · Mon, 13 Jul 2026 12:56:24 GMT · run logs

Backend: vercel · app: nextjs-turbopack

MetricScenarioAvg (ms)P75 (ms)P90 (ms)P99 (ms)Samples
TTFSstream1299 (-13%)1731 🔴1781 🔴2206 🔴30
TTFShook + stream1694 (+6.9%)2000 🔴2239 🔴2860 🔴30
STSO1020 steps (1-20)272 (-18%)311 🔴399 🔴421 🔴19
STSO1020 steps (101-120)483 (+11%)533 🔴709 🔴747 🔴19
STSO1020 steps (1001-1020)902 (+8.5%)954 🔴983 🔴992 🔴19
WOstream1299 (-13%)17311781220630
WOhook + stream1694 (+6.9%)20002239286030
SLstream4194 (-19%)5537 🔴5833 🔴6044 🔴30
SLhook + stream4878 (-1.7%)5622 🔴5753 🔴5987 🔴30
📜 Previous results (3)

dc75b65

Fri, 10 Jul 2026 11:18:50 GMT · run logs

vercel / nextjs-turbopack

MetricScenarioAvg (ms)P75 (ms)P90 (ms)P99 (ms)Samples
TTFSstream1310 (+12%)1673 🔴1713 🔴2696 🔴30
TTFShook + stream1596 (+16%)1933 🔴1999 🔴2123 🔴30
STSO1020 steps (1-20)274 (+0.7%)293 🔴379 🔴524 🔴19
STSO1020 steps (101-120)435 (+4.3%)449 🔴631 🔴922 🔴19
STSO1020 steps (1001-1020)880 (-18%)946 🔴972 🔴1012 🔴19
WOstream1310 (+12%)16731713269630
WOhook + stream1596 (+16%)19331999212330
SLstream4706 (-4.4%)5595 🔴5837 🔴6162 🔴30
SLhook + stream4966 (-1.1%)5618 🔴5707 🔴5786 🔴30

8e0829a

Fri, 10 Jul 2026 10:21:25 GMT · run logs

vercel / nextjs-turbopack

MetricScenarioAvg (ms)P75 (ms)P90 (ms)P99 (ms)Samples
TTFSstream1254 (+7.3%)1683 🔴1716 🔴2022 🔴30
TTFShook + stream1487 (+8.1%)1888 🔴2026 🔴2132 🔴30
STSO1020 steps (1-20)278 (+2.4%)311 🔴412 🔴451 🔴19
STSO1020 steps (101-120)399 (-4.3%)412 🔴577 🔴648 🔴19
STSO1020 steps (1001-1020)876 (-19%)930 🔴960 🔴1001 🔴19
WOstream1254 (+7.3%)16831716202230
WOhook + stream1487 (+8.1%)18882026213230
SLstream4356 (-12%)5088 🔴5618 🔴5770 🔴30
SLhook + stream5016 (±0%)5559 🔴5592 🔴6653 🔴30

3b0b5fc

Thu, 09 Jul 2026 19:04:54 GMT · run logs

vercel / nextjs-turbopack

MetricScenarioAvg (ms)P75 (ms)P90 (ms)P99 (ms)Samples
TTFSstream1124 (+5.9%)1606 🔴1626 🔴2762 🔴30
TTFShook + stream1612 (+24%)1901 🔴1986 🔴2153 🔴30
STSO1020 steps (1-20)275 (+1.1%)297 🔴401 🔴461 🔴19
STSO1020 steps (101-120)404 (+0.7%)415 🔴629 🔴700 🔴19
STSO1020 steps (1001-1020)917 (+9.9%)991 🔴1095 🔴1194 🔴19
WOstream1124 (+5.9%)16061626276230
WOhook + stream1612 (+24%)19011986215330
SLstream4633 (-2.7%)5573 🔴5720 🔴5894 🔴30
SLhook + stream4853 (-1.4%)5313 🔴5535 🔴5756 🔴30

Avg deltas compare against the most recent benchmark run on main at the time of this run.

Metrics — TTFS: time to first step body execution · STSO: step-to-step overhead (gap between consecutive step bodies) · WO: workflow overhead (time outside step bodies, client start → last step body exit) · SL: stream latency (first chunk write → visible to the reader)

Scenarios — stream: one step that streams chunks back to the client; no hooks, so the run stays in turbo mode · hook + stream: registers a hook before the same streaming step, which exits turbo mode · 1020 steps: 1020 trivial sequential steps; STSO is measured between consecutive steps in the given step ranges

🟢/🔴 mark percentiles within/above target. Targets (p75/p90/p99, ms) — TTFS 200/300/600 · SL 50/60/125 · STSO (1-20) 20/30/60 · STSO (101-120) 30/45/90 · STSO (1001-1020) 40/60/120

TTFS/WO compare client vs deployment clocks and SL compares the step runner’s clock vs the client’s (NTP-synced in CI). WO ends at the last step body exit, the closest observable proxy for the final step-completion request.

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Migrates the docs app from a locally-copied Geist/Fumadocs runtime to the package-backed @vercel/geistdocs architecture, keeping existing public route families while replacing most runtime/UI plumbing with thin adapters around the upstream package.

Changes:

  • Adopt @vercel/geistdocs for docs layout/MDX/rendering, plus package-provided search/chat/LLMs/sitemap/agents/mcp routes.
  • Remove large amounts of locally maintained UI/runtime code (chat/search/sidebar/layout/actions) in favor of upstream components and helpers.
  • Update docs tooling/config (source config + link lint + sitemap/RSS generation) to work with versioned Geistdocs sources.

Reviewed changes

Copilot reviewed 223 out of 224 changed files in this pull request and generated 2 comments.

Show a summary per file
FileDescription
packages/docs-typecheck/src/tests/sitemap-guard.test.tsUpdates the sitemap guard to account for package-backed markdown routes.
docs/source.config.tsSwitches to Geistdocs-provided Zod schemas and default source config.
docs/scripts/lint.tsAdapts link linting to pull raw MDX content from Geistdocs pages.
docs/package.jsonAdds @vercel/geistdocs, updates Next/React versions, removes unused local deps.
docs/next.config.tsRemoves Accept-header rewrites now handled elsewhere in the new architecture.
docs/lib/tsdoc/tsdoc.tsxAdds error handling + switches Callout import to Geistdocs package component.
docs/lib/geistdocs/versions.tsMakes v4/v5 version selection explicit and updates versioned URL docstring.
docs/lib/geistdocs/version-source.tsTightens typing for rewriteUrl and preserves URL rewriting behavior.
docs/lib/geistdocs/i18n.tsRemoves local i18n wiring in favor of package-backed provider/layout.
docs/lib/geistdocs/db.tsRemoves local Dexie chat persistence (chat now handled via package route/proxy).
docs/lib/geistdocs/config.tsxIntroduces centralized Geistdocs config (nav/content/versions/ai).
docs/hooks/geistdocs/use-version.tsxRemoves local version state provider/hook (replaced by package version select).
docs/hooks/geistdocs/use-sidebar.tsRemoves local jotai-based sidebar state hook (package-owned UI).
docs/hooks/geistdocs/use-chat.tsRemoves local jotai-based chat state hook (package-owned UI).
docs/geistdocs.tsxExtends site metadata (GitHub edit config + agent readiness config).
docs/content/docs/v5/migration-guides/migrating-from-trigger-dev.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/migration-guides/migrating-from-temporal.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/migration-guides/migrating-from-inngest.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/migration-guides/migrating-from-aws-step-functions.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/vite.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/tanstack-start.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/sveltekit.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/python.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/nuxt.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/nitro.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/next.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/nestjs.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/hono.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/fastify.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/express.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/astro.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/webhook-response-not-sent.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/timeout-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/start-invalid-workflow-function.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/serialization-failed.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/node-js-module-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/hook-conflict.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/fetch-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/abort-signal-timeout-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/integrations/sandbox.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/integrations/chat-sdk.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/integrations/ai-sdk.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/common-patterns/webhooks.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/common-patterns/scheduling.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/common-patterns/saga.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/common-patterns/rate-limiting.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/common-patterns/batching.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/agent-patterns/human-in-the-loop.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/agent-patterns/durable-agent.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/agent-patterns/agent-cancellation.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/advanced/upgrading-workflows.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/advanced/child-workflows.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/migration-guides/migrating-from-trigger-dev.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/migration-guides/migrating-from-temporal.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/migration-guides/migrating-from-inngest.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/migration-guides/migrating-from-aws-step-functions.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/vite.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/tanstack-start.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/sveltekit.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/python.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/nuxt.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/nitro.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/next.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/nestjs.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/hono.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/fastify.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/express.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/astro.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/webhook-response-not-sent.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/timeout-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/start-invalid-workflow-function.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/serialization-failed.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/node-js-module-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/hook-conflict.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/fetch-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/integrations/sandbox.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/integrations/chat-sdk.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/integrations/ai-sdk.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/common-patterns/webhooks.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/common-patterns/scheduling.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/common-patterns/saga.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/common-patterns/rate-limiting.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/common-patterns/batching.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/agent-patterns/human-in-the-loop.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/agent-patterns/durable-agent.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/agent-patterns/agent-cancellation.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/advanced/upgrading-workflows.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/advanced/child-workflows.mdxAdds CopyPrompt helper content.
docs/components/worlds/WorldTestingPerformance.tsxSwitches Tooltip usage to Geistdocs package tooltip component.
docs/components/worlds/WorldInstructions.tsxSwitches Button usage to Geistdocs package button component.
docs/components/worlds/WorldDetailHero.tsxSwitches Button/Tooltip usage to Geistdocs package components.
docs/components/worlds/WorldCardSimple.tsxSwitches Tooltip usage to Geistdocs package tooltip component.
docs/components/worlds/BenchmarkHistoryChart.tsxSwitches Dialog usage to Geistdocs package dialog component.
docs/components/ui/tooltip.tsxRemoves local tooltip implementation (now using package component).
docs/components/ui/toggle.tsxRemoves local UI component implementation.
docs/components/ui/toggle-group.tsxRemoves local UI component implementation.
docs/components/ui/textarea.tsxRemoves local UI component implementation.
docs/components/ui/switch.tsxRemoves local UI component implementation.
docs/components/ui/spinner.tsxRemoves local UI component implementation.
docs/components/ui/sonner.tsxRemoves local toaster implementation (feedback/chat UI removed).
docs/components/ui/slider.tsxRemoves local UI component implementation.
docs/components/ui/sheet.tsxRemoves local UI component implementation.
docs/components/ui/separator.tsxRemoves local UI component implementation.
docs/components/ui/scroll-area.tsxRemoves local UI component implementation.
docs/components/ui/resizable.tsxRemoves local UI component implementation.
docs/components/ui/radio-group.tsxRemoves local UI component implementation.
docs/components/ui/progress.tsxRemoves local UI component implementation.
docs/components/ui/popover.tsxRemoves local UI component implementation.
docs/components/ui/pagination.tsxRemoves local UI component implementation.
docs/components/ui/label.tsxRemoves local UI component implementation.
docs/components/ui/kbd.tsxRemoves local UI component implementation.
docs/components/ui/input.tsxRemoves local UI component implementation.
docs/components/ui/input-otp.tsxRemoves local UI component implementation.
docs/components/ui/hover-card.tsxRemoves local UI component implementation.
docs/components/ui/form.tsxRemoves local UI component implementation.
docs/components/ui/empty.tsxRemoves local UI component implementation.
docs/components/ui/dialog.tsxRemoves local UI component implementation.
docs/components/ui/collapsible.tsxRemoves local UI component implementation.
docs/components/ui/checkbox.tsxRemoves local UI component implementation.
docs/components/ui/button.tsxRemoves local UI component implementation (use Geistdocs package button).
docs/components/ui/button-group.tsxRemoves local UI component implementation.
docs/components/ui/aspect-ratio.tsxRemoves local UI component implementation.
docs/components/ui/alert.tsxRemoves local UI component implementation.
docs/components/ui/alert-dialog.tsxRemoves local UI component implementation.
docs/components/preview-install.tsxSwitches Button usage to Geistdocs package button component.
docs/components/geistdocs/x-button.tsxRemoves local social button implementation (package navbar/footer).
docs/components/geistdocs/video.tsxRemoves local video component (package MDX/components).
docs/components/geistdocs/version-switcher.tsxRemoves local version switcher UI (package versions UI).
docs/components/geistdocs/theme-toggle.tsxRemoves local theme toggle (package navbar/footer).
docs/components/geistdocs/search.tsxRemoves local search dialog/button (package search).
docs/components/geistdocs/scroll-top.tsxRemoves local scroll-to-top UI (package UI).
docs/components/geistdocs/rss-button.tsxRemoves local RSS button UI (package footer).
docs/components/geistdocs/provider.tsxReplaces local RootProvider wiring with Geistdocs package provider.
docs/components/geistdocs/open-in-chat.tsxRemoves local “open in chat” widget (package AI/chat).
docs/components/geistdocs/navbar.tsxRemoves local navbar (package navbar).
docs/components/geistdocs/navbar-logo.tsxRemoves local navbar logo component (package navbar).
docs/components/geistdocs/mobile-docs-bar.tsxRemoves local mobile docs bar (package docs layout).
docs/components/geistdocs/message-metadata.tsxRemoves local chat message metadata UI.
docs/components/geistdocs/mermaid.tsxRemoves local mermaid renderer (package MDX pipeline).
docs/components/geistdocs/mdx-components.tsxSwitches to createMdxComponents and wires custom components into package MDX system.
docs/components/geistdocs/language-selector.tsxRemoves local language selector (package navbar/footer).
docs/components/geistdocs/installer.tsxRemoves local installer widget (package UI).
docs/components/geistdocs/icons.tsxRemoves local icon helper.
docs/components/geistdocs/home-layout.tsxReplaces local Fumadocs layout wrapper with Geistdocs home layout.
docs/components/geistdocs/github-button.tsxRemoves local GitHub button (package footer).
docs/components/geistdocs/footer.tsxRemoves local footer (package footer).
docs/components/geistdocs/feedback.tsxRemoves local feedback UI flow.
docs/components/geistdocs/edit-source.tsxRemoves local “Edit this page” link (package handles via github config).
docs/components/geistdocs/docs-page.tsxRemoves local docs page wrapper (package docs layout).
docs/components/geistdocs/docs-layout.tsxSwitches to Geistdocs docs layout and adds version select + sidebar badges.
docs/components/geistdocs/desktop-menu.tsxRemoves local desktop menu (package navbar).
docs/components/geistdocs/copy-page.tsxRemoves local copy-page action UI.
docs/components/geistdocs/copy-chat.tsxRemoves local chat copy UI.
docs/components/geistdocs/code-block-tabs.tsxRemoves local code block tabs wrapper (package MDX/code).
docs/components/geistdocs/callout.tsxRemoves local callout wrappers (use package callout).
docs/components/geistdocs/ask-ai.tsxRemoves local ask-ai widget (package chat).
docs/components/custom/fluid-compute-callout.tsxSwitches Callout usage to Geistdocs package component.
docs/components/ai-elements/suggestion.tsxRemoves local AI UI elements.
docs/components/ai-elements/sources.tsxRemoves local AI UI elements.
docs/components/ai-elements/shimmer.tsxRemoves local AI UI elements.
docs/components/ai-elements/conversation.tsxRemoves local AI UI elements.
docs/app/styles/geistdocs.cssSwitches styling baseline to Geistdocs package stylesheet.
docs/app/sitemap.tsUpdates sitemap generation to iterate over versioned sources.
docs/app/sitemap.md/route.tsReplaces custom sitemap.md route with package-backed route.
docs/app/robots.tsMakes robots sitemap host configurable with a local fallback.
docs/app/og/[...slug]/route.tsxMakes OG generation tolerant of missing title/description fields.
docs/app/global.cssRoutes global styling through the new geistdocs stylesheet.
docs/app/api/search/route.tsReplaces custom search indexing route with package-backed search route.
docs/app/api/chat/utils.tsRemoves custom chat system prompt construction (package-backed chat).
docs/app/api/chat/types.tsRemoves custom chat message typing (package-backed chat).
docs/app/api/chat/route.tsReplaces custom chat handler with package-backed chat route + optional proxy.
docs/app/actions/feedback/index.tsRemoves server action for feedback submission.
docs/app/actions/feedback/emotions.tsRemoves feedback emotion list used by deleted UI.
docs/app/[lang]/worlds/page.tsxSwitches Button usage to Geistdocs package button component.
docs/app/[lang]/worlds/compare/page.tsxSwitches Button usage to Geistdocs package button component.
docs/app/[lang]/worlds/[id]/page.tsxTightens types for MDX body/toc extraction.
docs/app/[lang]/v5/docs/layout.tsxPasses explicit currentVersion into docs layout.
docs/app/[lang]/v5/cookbook/layout.tsxPasses explicit currentVersion into docs layout.
docs/app/[lang]/sitemap.md/route.tsReplaces custom localized sitemap.md route with package-backed route.
docs/app/[lang]/rss.xml/route.tsUpdates RSS generation to include pages from current sources with safer fallbacks.
docs/app/[lang]/llms.txt/route.tsReplaces custom llms.txt generator with package-backed route.
docs/app/[lang]/llms.mdx/[[...slug]]/route.tsReplaces custom page-level markdown route with package-backed route.
docs/app/[lang]/layout.tsxSwitches to package Navbar/Footer and uses package-backed config/provider.
docs/app/[lang]/docs/layout.tsxPasses explicit currentVersion into docs layout.
docs/app/[lang]/cookbook/layout.tsxPasses explicit currentVersion into docs layout.
docs/app/[lang]/agents.md/route.tsAdds package-backed agents markdown route.
docs/app/[lang]/.well-known/mcp.json/route.tsAdds package-backed MCP manifest route.
docs/app/[lang]/(home)/components/vercel-com-visuals/vercel-section.tsxSwitches Button usage to Geistdocs package button component.
docs/app/[lang]/(home)/components/vercel-com-visuals/feature-grid.tsxSwitches Button usage to Geistdocs package button component.
docs/app/[lang]/(home)/components/vercel-com-visuals/downtime-visual.tsxSwitches Spinner usage to Geistdocs package spinner component.
docs/app/[lang]/(home)/components/templates/index.tsxSwitches Button usage to Geistdocs package button component.
docs/app/[lang]/(home)/components/run-anywhere.tsxSwitches Button usage to Geistdocs package button component.
docs/app/[lang]/(home)/components/preview-badge.tsxSwitches Button/Dialog usage to Geistdocs package components.
docs/app/[lang]/(home)/components/hero.tsxUpdates agent install command string.
docs/app/[lang]/(home)/components/cta.tsxSwitches Button usage to Geistdocs package button component.
Files not reviewed (1)
  • pnpm-lock.yaml: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threaddocs/components/geistdocs/mdx-components.tsx Outdated
Comment threadpackages/docs-typecheck/src/__tests__/sitemap-guard.test.ts Outdated

@karthikscale3karthikscale3 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

these logos dont look right

Image

@karthikscale3karthikscale3 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@karthikscale3karthikscale3 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Image

should workflow show up in the dropdown again? also should we put the "sdk" badge beside it for the sake of consistency

@pranaygp

pranaygp commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

also should we put the "sdk" badge beside it for the sake of consistency

nope. that's not a valid lockup @karthikscale3 so we're not doing that

@pranaygppranaygp left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I found two user-facing regressions in the package-backed docs migration.

Comment threaddocs/lib/geistdocs/source.ts Outdated
Comment threaddocs/app/[lang]/llms.txt/route.ts Outdated
@karthikscale3

Copy link
Copy Markdown
Contributor

Please let us know when this is ready for a re-review

@molebox

Copy link
Copy Markdown
ContributorAuthor

This PR is un-staled and ready for re-review @karthikscale3@pranaygp.

What changed

Merged main back in (was 221 commits behind, conflicting). Notable ports into the package-backed architecture:

Bumped @vercel/geistdocs 1.4.0 → 1.8.2. This picks up the OSS navbar dropdown fix (1.8.0: real logo lockups, eve added, Streamdown dropped, AI Elements moved to the end — the package default now matches what main shipped in #2586/#2543, and Workflow appears with a proper lockup, no "SDK" badge), plus active-nav highlight, Ask AI markdown style fixes, search breadcrumbs, and code-block polish.

Review feedback addressed:

  • Version dropdown logos — version items now use the Workflow glyph (IconWorkflow from the package assets) instead of the default lucide box/archive icons.
  • CopyPrompt consistency — added prompts to the remaining 13 cookbook recipe pages (sequential-and-parallel, timeouts, idempotency, workflow-composition, serializable-steps, publishing-libraries, distributed-abort-controller — v4 and v5, with version-appropriate wording for the v4/v5 start() and cancellation differences).
  • Edit links — now version-scoped (docs/content/docs/v4/{path} vs .../v5/{path}) via per-page-family github.editPath overrides; previously they dropped the version segment.
  • Copilot's two open threads (WorldTestingPerformance stub, brittle sitemap-guard path) were already fixed in cb573b5 — replied inline.

Still holding from the earlier round:/llms.txt, /api/search, /api/chat read currentSources (v4 only); page-level .md routes read allSources; the v5 markdown URL rewrite stays scoped to local link targets (external vercel.com/docs/... links verified untouched).

Verification

  • pnpm --filter docs build ✅, tsc --noEmit (only the 3 pre-existing failures: BenchmarkChart, lib/github.ts ×2) ✅, biome (same pre-existing error count as main) ✅
  • docs link lint ✅, docs-typecheck suite (1014 code samples) ✅, sitemap-guard ✅, docs smoke checks ✅
  • next start spot checks: .md negotiation, sitemap/llms/agents surfaces, AutoCards markdown expansion, v4/v5 edit links, redirects ✅

@molebox

Copy link
Copy Markdown
ContributorAuthor

Follow-ups from Slack feedback (Chris):

  • Workflow removed from the OSS products dropdown — the geistdocs 1.8.2 default list includes the site's own product, so the docs config now overrides navbarOssProducts with eve, AI SDK, Flags SDK, Chat SDK, and AI Elements (matching what main shipped in [docs] use actual eve logo in OSS nav dropdown #2586). 99a52c2
  • Chat panel vs command menu z-order — fixed upstream as requested: vercel/geistdocs#138 lowers the Ask AI panel to z-45 (above the navbar, below all modal surfaces incl. the search command menu). It'll reach this site with the next geistdocs patch bump; no local workaround added.

@molebox

Copy link
Copy Markdown
ContributorAuthor

Bumped @vercel/geistdocs 1.8.2 → 1.11.0 (dc75b65). What lands here:

  • 1.9.0 — the chat z-order fix from vercel/geistdocs#138 (Ask AI panel now z-45, below the search command menu). Closes out the last piece of Chris's Slack feedback with no local workaround.
  • 1.9.0 — Turborepo joined the default OSS products dropdown; added it to our navbarOssProducts override too (which still drops Workflow itself).
  • 1.11.0 — navbar now renders a GitHub icon link when github is configured, restoring parity with the pre-migration navbar's GitHub button (verified it renders, incl. the mobile menu entry).
  • 1.10.0createChatRoute gained an optional model option; we keep the default (openai/gpt-4.1-mini), no change needed.

Verified: docs build ✅, sitemap-guard ✅, next start spot checks (.md URL + Accept negotiation, /llms.txt, AutoCards markdown expansion, versioned edit links, navbar GitHub link) ✅

@socket-security

socket-securityBot commented Jul 10, 2026

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

DiffPackageSupply Chain
Security
VulnerabilityQualityMaintenanceLicense
Addednpm/​next@​16.2.651100919970
Addednpm/​@​vercel/​geistdocs@​1.11.0771007499100
Addednpm/​hono@​4.12.28991009796100

View full report

@molebox

Copy link
Copy Markdown
ContributorAuthor

@copilot resolve the merge conflicts in this pull request

CopilotAI commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

@copilot resolve the merge conflicts in this pull request

Done. Merged main (12 commits ahead) into migrate-docs in e16a58c. The only conflict was a single line in pnpm-lock.yaml (a vite version string: 7.3.2 vs 7.3.6) — resolved by taking the newer version from main in the follow-up commit.

@karthikscale3karthikscale3 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Thank you!

@github-actions

Copy link
Copy Markdown
Contributor

No backport to stable for aa93cc5 (AI decision).

This commit is a wholesale re-architecture of the docs/ app (outside docs/content/) onto the new @vercel/geistdocs package — that portion of the docs app is not maintained on stable. The pieces touching maintained paths are tightly coupled to this migration and cannot stand alone: the docs/content/*.mdx changes only add <CopyPrompt> components that rely on the new geistdocs MDX runtime introduced here, and the packages/docs-typecheck/sitemap-guard.test.ts rewrite specifically asserts the geistdocs-based createDocsMarkdownRoute structure that doesn't exist on stable, so it would fail there.

To override, re-run the Backport to stable workflow manually via workflow_dispatch and paste this commit SHA into the ref input:

aa93cc5e690649de17b3f28c9ca1c88be0eb23d8

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants

@molebox@pranaygp@karthikscale3@VaguelySerious@christopherkindl
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Migrate docs to package-backed geistdocs - #2222

Merged
molebox merged 14 commits into
mainfrom
migrate-docs
Jul 13, 2026
Merged

Migrate docs to package-backed geistdocs#2222
molebox merged 14 commits into
mainfrom
migrate-docs

Conversation

@molebox

@moleboxmolebox commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

Previews

Summary

Migrates the docs app from the old copied geist/Fumadocs/custom runtime to the package-backed @vercel/geistdocs architecture.

Changes

  • Added @vercel/geistdocs and aligned supported Next/React versions.
  • Replaced local docs page, layout, MDX, search, chat, Markdown, sitemap, agents, and proxy runtime code with thin package-backed adapters.
  • Preserved public docs route families:
    • /docs
    • /cookbook
    • /v5/docs
    • /v5/cookbook
    • /worlds
    • /llms.txt
    • /sitemap.md
    • /agents.md
    • page-level .md routes
  • Kept project-specific content, homepage, worlds pages, OG routes, RSS, metadata, and styling overrides local.
  • Removed copied Geistdocs/AI chat/search/sidebar/page-action runtime code.

Verification

  • pnpm --filter docs build passes.
  • Manually checked local docs routes and machine-readable surfaces.
  • Verified code blocks include Shiki token styles and package stylesheet palette.
  • Verified no deep imports from @vercel/geistdocs/dist.
  • Verified no public/llms.txt masks the App Router route.

Notes

Full docs lint/typecheck still have pre-existing unrelated failures in generated .source, homepage visual lint, components/worlds/BenchmarkChart.tsx, and lib/github.ts.

@vercel

vercelBot commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

@changeset-bot

changeset-botBot commented Jun 2, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 3e0bc8f

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@github-actions

github-actionsBot commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

🧪 E2E Test Results

All tests passed

Summary

PassedFailedSkippedTotal
✅ ▲ Vercel Production145302301683
✅ 💻 Local Development161702191836
✅ 📦 Local Production161702191836
✅ 🐘 Local Postgres161702191836
✅ 🪟 Windows15300153
✅ 📋 Other89401771071
Total7351010648415

Details by Category

✅ ▲ Vercel Production
AppPassedFailedSkipped
✅ astro126027
✅ example126027
✅ express126027
✅ fastify126027
✅ hono126027
✅ nextjs-turbopack15003
✅ nextjs-webpack15003
✅ nitro126027
✅ nuxt126027
✅ sveltekit14508
✅ vite126027
✅ 💻 Local Development
AppPassedFailedSkipped
✅ astro-stable128025
✅ express-stable128025
✅ fastify-stable128025
✅ hono-stable128025
✅ nextjs-turbopack-canary134019
✅ nextjs-turbopack-stable15300
✅ nextjs-webpack-canary134019
✅ nextjs-webpack-stable15300
✅ nitro-stable128025
✅ nuxt-stable128025
✅ sveltekit-stable14706
✅ vite-stable128025
✅ 📦 Local Production
AppPassedFailedSkipped
✅ astro-stable128025
✅ express-stable128025
✅ fastify-stable128025
✅ hono-stable128025
✅ nextjs-turbopack-canary134019
✅ nextjs-turbopack-stable15300
✅ nextjs-webpack-canary134019
✅ nextjs-webpack-stable15300
✅ nitro-stable128025
✅ nuxt-stable128025
✅ sveltekit-stable14706
✅ vite-stable128025
✅ 🐘 Local Postgres
AppPassedFailedSkipped
✅ astro-stable128025
✅ express-stable128025
✅ fastify-stable128025
✅ hono-stable128025
✅ nextjs-turbopack-canary134019
✅ nextjs-turbopack-stable15300
✅ nextjs-webpack-canary134019
✅ nextjs-webpack-stable15300
✅ nitro-stable128025
✅ nuxt-stable128025
✅ sveltekit-stable14706
✅ vite-stable128025
✅ 🪟 Windows
AppPassedFailedSkipped
✅ nextjs-turbopack15300
✅ 📋 Other
AppPassedFailedSkipped
✅ e2e-local-dev-nest-stable128025
✅ e2e-local-dev-tanstack-start-128025
✅ e2e-local-postgres-nest-stable128025
✅ e2e-local-postgres-tanstack-start-128025
✅ e2e-local-prod-nest-stable128025
✅ e2e-local-prod-tanstack-start-128025
✅ e2e-vercel-prod-tanstack-start126027

📋 View full workflow run

@github-actions

github-actionsBot commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

📊 Workflow Benchmarks

commit 3e0bc8f · Mon, 13 Jul 2026 12:56:24 GMT · run logs

Backend: vercel · app: nextjs-turbopack

MetricScenarioAvg (ms)P75 (ms)P90 (ms)P99 (ms)Samples
TTFSstream1299 (-13%)1731 🔴1781 🔴2206 🔴30
TTFShook + stream1694 (+6.9%)2000 🔴2239 🔴2860 🔴30
STSO1020 steps (1-20)272 (-18%)311 🔴399 🔴421 🔴19
STSO1020 steps (101-120)483 (+11%)533 🔴709 🔴747 🔴19
STSO1020 steps (1001-1020)902 (+8.5%)954 🔴983 🔴992 🔴19
WOstream1299 (-13%)17311781220630
WOhook + stream1694 (+6.9%)20002239286030
SLstream4194 (-19%)5537 🔴5833 🔴6044 🔴30
SLhook + stream4878 (-1.7%)5622 🔴5753 🔴5987 🔴30
📜 Previous results (3)

dc75b65

Fri, 10 Jul 2026 11:18:50 GMT · run logs

vercel / nextjs-turbopack

MetricScenarioAvg (ms)P75 (ms)P90 (ms)P99 (ms)Samples
TTFSstream1310 (+12%)1673 🔴1713 🔴2696 🔴30
TTFShook + stream1596 (+16%)1933 🔴1999 🔴2123 🔴30
STSO1020 steps (1-20)274 (+0.7%)293 🔴379 🔴524 🔴19
STSO1020 steps (101-120)435 (+4.3%)449 🔴631 🔴922 🔴19
STSO1020 steps (1001-1020)880 (-18%)946 🔴972 🔴1012 🔴19
WOstream1310 (+12%)16731713269630
WOhook + stream1596 (+16%)19331999212330
SLstream4706 (-4.4%)5595 🔴5837 🔴6162 🔴30
SLhook + stream4966 (-1.1%)5618 🔴5707 🔴5786 🔴30

8e0829a

Fri, 10 Jul 2026 10:21:25 GMT · run logs

vercel / nextjs-turbopack

MetricScenarioAvg (ms)P75 (ms)P90 (ms)P99 (ms)Samples
TTFSstream1254 (+7.3%)1683 🔴1716 🔴2022 🔴30
TTFShook + stream1487 (+8.1%)1888 🔴2026 🔴2132 🔴30
STSO1020 steps (1-20)278 (+2.4%)311 🔴412 🔴451 🔴19
STSO1020 steps (101-120)399 (-4.3%)412 🔴577 🔴648 🔴19
STSO1020 steps (1001-1020)876 (-19%)930 🔴960 🔴1001 🔴19
WOstream1254 (+7.3%)16831716202230
WOhook + stream1487 (+8.1%)18882026213230
SLstream4356 (-12%)5088 🔴5618 🔴5770 🔴30
SLhook + stream5016 (±0%)5559 🔴5592 🔴6653 🔴30

3b0b5fc

Thu, 09 Jul 2026 19:04:54 GMT · run logs

vercel / nextjs-turbopack

MetricScenarioAvg (ms)P75 (ms)P90 (ms)P99 (ms)Samples
TTFSstream1124 (+5.9%)1606 🔴1626 🔴2762 🔴30
TTFShook + stream1612 (+24%)1901 🔴1986 🔴2153 🔴30
STSO1020 steps (1-20)275 (+1.1%)297 🔴401 🔴461 🔴19
STSO1020 steps (101-120)404 (+0.7%)415 🔴629 🔴700 🔴19
STSO1020 steps (1001-1020)917 (+9.9%)991 🔴1095 🔴1194 🔴19
WOstream1124 (+5.9%)16061626276230
WOhook + stream1612 (+24%)19011986215330
SLstream4633 (-2.7%)5573 🔴5720 🔴5894 🔴30
SLhook + stream4853 (-1.4%)5313 🔴5535 🔴5756 🔴30

Avg deltas compare against the most recent benchmark run on main at the time of this run.

Metrics — TTFS: time to first step body execution · STSO: step-to-step overhead (gap between consecutive step bodies) · WO: workflow overhead (time outside step bodies, client start → last step body exit) · SL: stream latency (first chunk write → visible to the reader)

Scenarios — stream: one step that streams chunks back to the client; no hooks, so the run stays in turbo mode · hook + stream: registers a hook before the same streaming step, which exits turbo mode · 1020 steps: 1020 trivial sequential steps; STSO is measured between consecutive steps in the given step ranges

🟢/🔴 mark percentiles within/above target. Targets (p75/p90/p99, ms) — TTFS 200/300/600 · SL 50/60/125 · STSO (1-20) 20/30/60 · STSO (101-120) 30/45/90 · STSO (1001-1020) 40/60/120

TTFS/WO compare client vs deployment clocks and SL compares the step runner’s clock vs the client’s (NTP-synced in CI). WO ends at the last step body exit, the closest observable proxy for the final step-completion request.

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Migrates the docs app from a locally-copied Geist/Fumadocs runtime to the package-backed @vercel/geistdocs architecture, keeping existing public route families while replacing most runtime/UI plumbing with thin adapters around the upstream package.

Changes:

  • Adopt @vercel/geistdocs for docs layout/MDX/rendering, plus package-provided search/chat/LLMs/sitemap/agents/mcp routes.
  • Remove large amounts of locally maintained UI/runtime code (chat/search/sidebar/layout/actions) in favor of upstream components and helpers.
  • Update docs tooling/config (source config + link lint + sitemap/RSS generation) to work with versioned Geistdocs sources.

Reviewed changes

Copilot reviewed 223 out of 224 changed files in this pull request and generated 2 comments.

Show a summary per file
FileDescription
packages/docs-typecheck/src/tests/sitemap-guard.test.tsUpdates the sitemap guard to account for package-backed markdown routes.
docs/source.config.tsSwitches to Geistdocs-provided Zod schemas and default source config.
docs/scripts/lint.tsAdapts link linting to pull raw MDX content from Geistdocs pages.
docs/package.jsonAdds @vercel/geistdocs, updates Next/React versions, removes unused local deps.
docs/next.config.tsRemoves Accept-header rewrites now handled elsewhere in the new architecture.
docs/lib/tsdoc/tsdoc.tsxAdds error handling + switches Callout import to Geistdocs package component.
docs/lib/geistdocs/versions.tsMakes v4/v5 version selection explicit and updates versioned URL docstring.
docs/lib/geistdocs/version-source.tsTightens typing for rewriteUrl and preserves URL rewriting behavior.
docs/lib/geistdocs/i18n.tsRemoves local i18n wiring in favor of package-backed provider/layout.
docs/lib/geistdocs/db.tsRemoves local Dexie chat persistence (chat now handled via package route/proxy).
docs/lib/geistdocs/config.tsxIntroduces centralized Geistdocs config (nav/content/versions/ai).
docs/hooks/geistdocs/use-version.tsxRemoves local version state provider/hook (replaced by package version select).
docs/hooks/geistdocs/use-sidebar.tsRemoves local jotai-based sidebar state hook (package-owned UI).
docs/hooks/geistdocs/use-chat.tsRemoves local jotai-based chat state hook (package-owned UI).
docs/geistdocs.tsxExtends site metadata (GitHub edit config + agent readiness config).
docs/content/docs/v5/migration-guides/migrating-from-trigger-dev.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/migration-guides/migrating-from-temporal.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/migration-guides/migrating-from-inngest.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/migration-guides/migrating-from-aws-step-functions.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/vite.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/tanstack-start.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/sveltekit.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/python.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/nuxt.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/nitro.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/next.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/nestjs.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/hono.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/fastify.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/express.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/astro.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/webhook-response-not-sent.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/timeout-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/start-invalid-workflow-function.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/serialization-failed.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/node-js-module-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/hook-conflict.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/fetch-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/abort-signal-timeout-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/integrations/sandbox.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/integrations/chat-sdk.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/integrations/ai-sdk.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/common-patterns/webhooks.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/common-patterns/scheduling.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/common-patterns/saga.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/common-patterns/rate-limiting.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/common-patterns/batching.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/agent-patterns/human-in-the-loop.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/agent-patterns/durable-agent.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/agent-patterns/agent-cancellation.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/advanced/upgrading-workflows.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/advanced/child-workflows.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/migration-guides/migrating-from-trigger-dev.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/migration-guides/migrating-from-temporal.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/migration-guides/migrating-from-inngest.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/migration-guides/migrating-from-aws-step-functions.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/vite.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/tanstack-start.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/sveltekit.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/python.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/nuxt.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/nitro.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/next.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/nestjs.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/hono.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/fastify.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/express.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/astro.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/webhook-response-not-sent.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/timeout-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/start-invalid-workflow-function.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/serialization-failed.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/node-js-module-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/hook-conflict.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/fetch-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/integrations/sandbox.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/integrations/chat-sdk.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/integrations/ai-sdk.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/common-patterns/webhooks.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/common-patterns/scheduling.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/common-patterns/saga.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/common-patterns/rate-limiting.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/common-patterns/batching.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/agent-patterns/human-in-the-loop.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/agent-patterns/durable-agent.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/agent-patterns/agent-cancellation.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/advanced/upgrading-workflows.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/advanced/child-workflows.mdxAdds CopyPrompt helper content.
docs/components/worlds/WorldTestingPerformance.tsxSwitches Tooltip usage to Geistdocs package tooltip component.
docs/components/worlds/WorldInstructions.tsxSwitches Button usage to Geistdocs package button component.
docs/components/worlds/WorldDetailHero.tsxSwitches Button/Tooltip usage to Geistdocs package components.
docs/components/worlds/WorldCardSimple.tsxSwitches Tooltip usage to Geistdocs package tooltip component.
docs/components/worlds/BenchmarkHistoryChart.tsxSwitches Dialog usage to Geistdocs package dialog component.
docs/components/ui/tooltip.tsxRemoves local tooltip implementation (now using package component).
docs/components/ui/toggle.tsxRemoves local UI component implementation.
docs/components/ui/toggle-group.tsxRemoves local UI component implementation.
docs/components/ui/textarea.tsxRemoves local UI component implementation.
docs/components/ui/switch.tsxRemoves local UI component implementation.
docs/components/ui/spinner.tsxRemoves local UI component implementation.
docs/components/ui/sonner.tsxRemoves local toaster implementation (feedback/chat UI removed).
docs/components/ui/slider.tsxRemoves local UI component implementation.
docs/components/ui/sheet.tsxRemoves local UI component implementation.
docs/components/ui/separator.tsxRemoves local UI component implementation.
docs/components/ui/scroll-area.tsxRemoves local UI component implementation.
docs/components/ui/resizable.tsxRemoves local UI component implementation.
docs/components/ui/radio-group.tsxRemoves local UI component implementation.
docs/components/ui/progress.tsxRemoves local UI component implementation.
docs/components/ui/popover.tsxRemoves local UI component implementation.
docs/components/ui/pagination.tsxRemoves local UI component implementation.
docs/components/ui/label.tsxRemoves local UI component implementation.
docs/components/ui/kbd.tsxRemoves local UI component implementation.
docs/components/ui/input.tsxRemoves local UI component implementation.
docs/components/ui/input-otp.tsxRemoves local UI component implementation.
docs/components/ui/hover-card.tsxRemoves local UI component implementation.
docs/components/ui/form.tsxRemoves local UI component implementation.
docs/components/ui/empty.tsxRemoves local UI component implementation.
docs/components/ui/dialog.tsxRemoves local UI component implementation.
docs/components/ui/collapsible.tsxRemoves local UI component implementation.
docs/components/ui/checkbox.tsxRemoves local UI component implementation.
docs/components/ui/button.tsxRemoves local UI component implementation (use Geistdocs package button).
docs/components/ui/button-group.tsxRemoves local UI component implementation.
docs/components/ui/aspect-ratio.tsxRemoves local UI component implementation.
docs/components/ui/alert.tsxRemoves local UI component implementation.
docs/components/ui/alert-dialog.tsxRemoves local UI component implementation.
docs/components/preview-install.tsxSwitches Button usage to Geistdocs package button component.
docs/components/geistdocs/x-button.tsxRemoves local social button implementation (package navbar/footer).
docs/components/geistdocs/video.tsxRemoves local video component (package MDX/components).
docs/components/geistdocs/version-switcher.tsxRemoves local version switcher UI (package versions UI).
docs/components/geistdocs/theme-toggle.tsxRemoves local theme toggle (package navbar/footer).
docs/components/geistdocs/search.tsxRemoves local search dialog/button (package search).
docs/components/geistdocs/scroll-top.tsxRemoves local scroll-to-top UI (package UI).
docs/components/geistdocs/rss-button.tsxRemoves local RSS button UI (package footer).
docs/components/geistdocs/provider.tsxReplaces local RootProvider wiring with Geistdocs package provider.
docs/components/geistdocs/open-in-chat.tsxRemoves local “open in chat” widget (package AI/chat).
docs/components/geistdocs/navbar.tsxRemoves local navbar (package navbar).
docs/components/geistdocs/navbar-logo.tsxRemoves local navbar logo component (package navbar).
docs/components/geistdocs/mobile-docs-bar.tsxRemoves local mobile docs bar (package docs layout).
docs/components/geistdocs/message-metadata.tsxRemoves local chat message metadata UI.
docs/components/geistdocs/mermaid.tsxRemoves local mermaid renderer (package MDX pipeline).
docs/components/geistdocs/mdx-components.tsxSwitches to createMdxComponents and wires custom components into package MDX system.
docs/components/geistdocs/language-selector.tsxRemoves local language selector (package navbar/footer).
docs/components/geistdocs/installer.tsxRemoves local installer widget (package UI).
docs/components/geistdocs/icons.tsxRemoves local icon helper.
docs/components/geistdocs/home-layout.tsxReplaces local Fumadocs layout wrapper with Geistdocs home layout.
docs/components/geistdocs/github-button.tsxRemoves local GitHub button (package footer).
docs/components/geistdocs/footer.tsxRemoves local footer (package footer).
docs/components/geistdocs/feedback.tsxRemoves local feedback UI flow.
docs/components/geistdocs/edit-source.tsxRemoves local “Edit this page” link (package handles via github config).
docs/components/geistdocs/docs-page.tsxRemoves local docs page wrapper (package docs layout).
docs/components/geistdocs/docs-layout.tsxSwitches to Geistdocs docs layout and adds version select + sidebar badges.
docs/components/geistdocs/desktop-menu.tsxRemoves local desktop menu (package navbar).
docs/components/geistdocs/copy-page.tsxRemoves local copy-page action UI.
docs/components/geistdocs/copy-chat.tsxRemoves local chat copy UI.
docs/components/geistdocs/code-block-tabs.tsxRemoves local code block tabs wrapper (package MDX/code).
docs/components/geistdocs/callout.tsxRemoves local callout wrappers (use package callout).
docs/components/geistdocs/ask-ai.tsxRemoves local ask-ai widget (package chat).
docs/components/custom/fluid-compute-callout.tsxSwitches Callout usage to Geistdocs package component.
docs/components/ai-elements/suggestion.tsxRemoves local AI UI elements.
docs/components/ai-elements/sources.tsxRemoves local AI UI elements.
docs/components/ai-elements/shimmer.tsxRemoves local AI UI elements.
docs/components/ai-elements/conversation.tsxRemoves local AI UI elements.
docs/app/styles/geistdocs.cssSwitches styling baseline to Geistdocs package stylesheet.
docs/app/sitemap.tsUpdates sitemap generation to iterate over versioned sources.
docs/app/sitemap.md/route.tsReplaces custom sitemap.md route with package-backed route.
docs/app/robots.tsMakes robots sitemap host configurable with a local fallback.
docs/app/og/[...slug]/route.tsxMakes OG generation tolerant of missing title/description fields.
docs/app/global.cssRoutes global styling through the new geistdocs stylesheet.
docs/app/api/search/route.tsReplaces custom search indexing route with package-backed search route.
docs/app/api/chat/utils.tsRemoves custom chat system prompt construction (package-backed chat).
docs/app/api/chat/types.tsRemoves custom chat message typing (package-backed chat).
docs/app/api/chat/route.tsReplaces custom chat handler with package-backed chat route + optional proxy.
docs/app/actions/feedback/index.tsRemoves server action for feedback submission.
docs/app/actions/feedback/emotions.tsRemoves feedback emotion list used by deleted UI.
docs/app/[lang]/worlds/page.tsxSwitches Button usage to Geistdocs package button component.
docs/app/[lang]/worlds/compare/page.tsxSwitches Button usage to Geistdocs package button component.
docs/app/[lang]/worlds/[id]/page.tsxTightens types for MDX body/toc extraction.
docs/app/[lang]/v5/docs/layout.tsxPasses explicit currentVersion into docs layout.
docs/app/[lang]/v5/cookbook/layout.tsxPasses explicit currentVersion into docs layout.
docs/app/[lang]/sitemap.md/route.tsReplaces custom localized sitemap.md route with package-backed route.
docs/app/[lang]/rss.xml/route.tsUpdates RSS generation to include pages from current sources with safer fallbacks.
docs/app/[lang]/llms.txt/route.tsReplaces custom llms.txt generator with package-backed route.
docs/app/[lang]/llms.mdx/[[...slug]]/route.tsReplaces custom page-level markdown route with package-backed route.
docs/app/[lang]/layout.tsxSwitches to package Navbar/Footer and uses package-backed config/provider.
docs/app/[lang]/docs/layout.tsxPasses explicit currentVersion into docs layout.
docs/app/[lang]/cookbook/layout.tsxPasses explicit currentVersion into docs layout.
docs/app/[lang]/agents.md/route.tsAdds package-backed agents markdown route.
docs/app/[lang]/.well-known/mcp.json/route.tsAdds package-backed MCP manifest route.
docs/app/[lang]/(home)/components/vercel-com-visuals/vercel-section.tsxSwitches Button usage to Geistdocs package button component.
docs/app/[lang]/(home)/components/vercel-com-visuals/feature-grid.tsxSwitches Button usage to Geistdocs package button component.
docs/app/[lang]/(home)/components/vercel-com-visuals/downtime-visual.tsxSwitches Spinner usage to Geistdocs package spinner component.
docs/app/[lang]/(home)/components/templates/index.tsxSwitches Button usage to Geistdocs package button component.
docs/app/[lang]/(home)/components/run-anywhere.tsxSwitches Button usage to Geistdocs package button component.
docs/app/[lang]/(home)/components/preview-badge.tsxSwitches Button/Dialog usage to Geistdocs package components.
docs/app/[lang]/(home)/components/hero.tsxUpdates agent install command string.
docs/app/[lang]/(home)/components/cta.tsxSwitches Button usage to Geistdocs package button component.
Files not reviewed (1)
  • pnpm-lock.yaml: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threaddocs/components/geistdocs/mdx-components.tsx Outdated
Comment threadpackages/docs-typecheck/src/__tests__/sitemap-guard.test.ts Outdated

@karthikscale3karthikscale3 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

these logos dont look right

Image

@karthikscale3karthikscale3 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@karthikscale3karthikscale3 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Image

should workflow show up in the dropdown again? also should we put the "sdk" badge beside it for the sake of consistency

@pranaygp

pranaygp commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

also should we put the "sdk" badge beside it for the sake of consistency

nope. that's not a valid lockup @karthikscale3 so we're not doing that

@pranaygppranaygp left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I found two user-facing regressions in the package-backed docs migration.

Comment threaddocs/lib/geistdocs/source.ts Outdated
Comment threaddocs/app/[lang]/llms.txt/route.ts Outdated
@karthikscale3

Copy link
Copy Markdown
Contributor

Please let us know when this is ready for a re-review

@molebox

Copy link
Copy Markdown
ContributorAuthor

This PR is un-staled and ready for re-review @karthikscale3@pranaygp.

What changed

Merged main back in (was 221 commits behind, conflicting). Notable ports into the package-backed architecture:

Bumped @vercel/geistdocs 1.4.0 → 1.8.2. This picks up the OSS navbar dropdown fix (1.8.0: real logo lockups, eve added, Streamdown dropped, AI Elements moved to the end — the package default now matches what main shipped in #2586/#2543, and Workflow appears with a proper lockup, no "SDK" badge), plus active-nav highlight, Ask AI markdown style fixes, search breadcrumbs, and code-block polish.

Review feedback addressed:

  • Version dropdown logos — version items now use the Workflow glyph (IconWorkflow from the package assets) instead of the default lucide box/archive icons.
  • CopyPrompt consistency — added prompts to the remaining 13 cookbook recipe pages (sequential-and-parallel, timeouts, idempotency, workflow-composition, serializable-steps, publishing-libraries, distributed-abort-controller — v4 and v5, with version-appropriate wording for the v4/v5 start() and cancellation differences).
  • Edit links — now version-scoped (docs/content/docs/v4/{path} vs .../v5/{path}) via per-page-family github.editPath overrides; previously they dropped the version segment.
  • Copilot's two open threads (WorldTestingPerformance stub, brittle sitemap-guard path) were already fixed in cb573b5 — replied inline.

Still holding from the earlier round:/llms.txt, /api/search, /api/chat read currentSources (v4 only); page-level .md routes read allSources; the v5 markdown URL rewrite stays scoped to local link targets (external vercel.com/docs/... links verified untouched).

Verification

  • pnpm --filter docs build ✅, tsc --noEmit (only the 3 pre-existing failures: BenchmarkChart, lib/github.ts ×2) ✅, biome (same pre-existing error count as main) ✅
  • docs link lint ✅, docs-typecheck suite (1014 code samples) ✅, sitemap-guard ✅, docs smoke checks ✅
  • next start spot checks: .md negotiation, sitemap/llms/agents surfaces, AutoCards markdown expansion, v4/v5 edit links, redirects ✅

@molebox

Copy link
Copy Markdown
ContributorAuthor

Follow-ups from Slack feedback (Chris):

  • Workflow removed from the OSS products dropdown — the geistdocs 1.8.2 default list includes the site's own product, so the docs config now overrides navbarOssProducts with eve, AI SDK, Flags SDK, Chat SDK, and AI Elements (matching what main shipped in [docs] use actual eve logo in OSS nav dropdown #2586). 99a52c2
  • Chat panel vs command menu z-order — fixed upstream as requested: vercel/geistdocs#138 lowers the Ask AI panel to z-45 (above the navbar, below all modal surfaces incl. the search command menu). It'll reach this site with the next geistdocs patch bump; no local workaround added.

@molebox

Copy link
Copy Markdown
ContributorAuthor

Bumped @vercel/geistdocs 1.8.2 → 1.11.0 (dc75b65). What lands here:

  • 1.9.0 — the chat z-order fix from vercel/geistdocs#138 (Ask AI panel now z-45, below the search command menu). Closes out the last piece of Chris's Slack feedback with no local workaround.
  • 1.9.0 — Turborepo joined the default OSS products dropdown; added it to our navbarOssProducts override too (which still drops Workflow itself).
  • 1.11.0 — navbar now renders a GitHub icon link when github is configured, restoring parity with the pre-migration navbar's GitHub button (verified it renders, incl. the mobile menu entry).
  • 1.10.0createChatRoute gained an optional model option; we keep the default (openai/gpt-4.1-mini), no change needed.

Verified: docs build ✅, sitemap-guard ✅, next start spot checks (.md URL + Accept negotiation, /llms.txt, AutoCards markdown expansion, versioned edit links, navbar GitHub link) ✅

@socket-security

socket-securityBot commented Jul 10, 2026

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

DiffPackageSupply Chain
Security
VulnerabilityQualityMaintenanceLicense
Addednpm/​next@​16.2.651100919970
Addednpm/​@​vercel/​geistdocs@​1.11.0771007499100
Addednpm/​hono@​4.12.28991009796100

View full report

@molebox

Copy link
Copy Markdown
ContributorAuthor

@copilot resolve the merge conflicts in this pull request

CopilotAI commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

@copilot resolve the merge conflicts in this pull request

Done. Merged main (12 commits ahead) into migrate-docs in e16a58c. The only conflict was a single line in pnpm-lock.yaml (a vite version string: 7.3.2 vs 7.3.6) — resolved by taking the newer version from main in the follow-up commit.

@karthikscale3karthikscale3 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Thank you!

@github-actions

Copy link
Copy Markdown
Contributor

No backport to stable for aa93cc5 (AI decision).

This commit is a wholesale re-architecture of the docs/ app (outside docs/content/) onto the new @vercel/geistdocs package — that portion of the docs app is not maintained on stable. The pieces touching maintained paths are tightly coupled to this migration and cannot stand alone: the docs/content/*.mdx changes only add <CopyPrompt> components that rely on the new geistdocs MDX runtime introduced here, and the packages/docs-typecheck/sitemap-guard.test.ts rewrite specifically asserts the geistdocs-based createDocsMarkdownRoute structure that doesn't exist on stable, so it would fail there.

To override, re-run the Backport to stable workflow manually via workflow_dispatch and paste this commit SHA into the ref input:

aa93cc5e690649de17b3f28c9ca1c88be0eb23d8

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants

@molebox@pranaygp@karthikscale3@VaguelySerious@christopherkindl
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Migrate docs to package-backed geistdocs - #2222

Merged
molebox merged 14 commits into
mainfrom
migrate-docs
Jul 13, 2026
Merged

Migrate docs to package-backed geistdocs#2222
molebox merged 14 commits into
mainfrom
migrate-docs

Conversation

@molebox

@moleboxmolebox commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

Previews

Summary

Migrates the docs app from the old copied geist/Fumadocs/custom runtime to the package-backed @vercel/geistdocs architecture.

Changes

  • Added @vercel/geistdocs and aligned supported Next/React versions.
  • Replaced local docs page, layout, MDX, search, chat, Markdown, sitemap, agents, and proxy runtime code with thin package-backed adapters.
  • Preserved public docs route families:
    • /docs
    • /cookbook
    • /v5/docs
    • /v5/cookbook
    • /worlds
    • /llms.txt
    • /sitemap.md
    • /agents.md
    • page-level .md routes
  • Kept project-specific content, homepage, worlds pages, OG routes, RSS, metadata, and styling overrides local.
  • Removed copied Geistdocs/AI chat/search/sidebar/page-action runtime code.

Verification

  • pnpm --filter docs build passes.
  • Manually checked local docs routes and machine-readable surfaces.
  • Verified code blocks include Shiki token styles and package stylesheet palette.
  • Verified no deep imports from @vercel/geistdocs/dist.
  • Verified no public/llms.txt masks the App Router route.

Notes

Full docs lint/typecheck still have pre-existing unrelated failures in generated .source, homepage visual lint, components/worlds/BenchmarkChart.tsx, and lib/github.ts.

@vercel

vercelBot commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

@changeset-bot

changeset-botBot commented Jun 2, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 3e0bc8f

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@github-actions

github-actionsBot commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

🧪 E2E Test Results

All tests passed

Summary

PassedFailedSkippedTotal
✅ ▲ Vercel Production145302301683
✅ 💻 Local Development161702191836
✅ 📦 Local Production161702191836
✅ 🐘 Local Postgres161702191836
✅ 🪟 Windows15300153
✅ 📋 Other89401771071
Total7351010648415

Details by Category

✅ ▲ Vercel Production
AppPassedFailedSkipped
✅ astro126027
✅ example126027
✅ express126027
✅ fastify126027
✅ hono126027
✅ nextjs-turbopack15003
✅ nextjs-webpack15003
✅ nitro126027
✅ nuxt126027
✅ sveltekit14508
✅ vite126027
✅ 💻 Local Development
AppPassedFailedSkipped
✅ astro-stable128025
✅ express-stable128025
✅ fastify-stable128025
✅ hono-stable128025
✅ nextjs-turbopack-canary134019
✅ nextjs-turbopack-stable15300
✅ nextjs-webpack-canary134019
✅ nextjs-webpack-stable15300
✅ nitro-stable128025
✅ nuxt-stable128025
✅ sveltekit-stable14706
✅ vite-stable128025
✅ 📦 Local Production
AppPassedFailedSkipped
✅ astro-stable128025
✅ express-stable128025
✅ fastify-stable128025
✅ hono-stable128025
✅ nextjs-turbopack-canary134019
✅ nextjs-turbopack-stable15300
✅ nextjs-webpack-canary134019
✅ nextjs-webpack-stable15300
✅ nitro-stable128025
✅ nuxt-stable128025
✅ sveltekit-stable14706
✅ vite-stable128025
✅ 🐘 Local Postgres
AppPassedFailedSkipped
✅ astro-stable128025
✅ express-stable128025
✅ fastify-stable128025
✅ hono-stable128025
✅ nextjs-turbopack-canary134019
✅ nextjs-turbopack-stable15300
✅ nextjs-webpack-canary134019
✅ nextjs-webpack-stable15300
✅ nitro-stable128025
✅ nuxt-stable128025
✅ sveltekit-stable14706
✅ vite-stable128025
✅ 🪟 Windows
AppPassedFailedSkipped
✅ nextjs-turbopack15300
✅ 📋 Other
AppPassedFailedSkipped
✅ e2e-local-dev-nest-stable128025
✅ e2e-local-dev-tanstack-start-128025
✅ e2e-local-postgres-nest-stable128025
✅ e2e-local-postgres-tanstack-start-128025
✅ e2e-local-prod-nest-stable128025
✅ e2e-local-prod-tanstack-start-128025
✅ e2e-vercel-prod-tanstack-start126027

📋 View full workflow run

@github-actions

github-actionsBot commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

📊 Workflow Benchmarks

commit 3e0bc8f · Mon, 13 Jul 2026 12:56:24 GMT · run logs

Backend: vercel · app: nextjs-turbopack

MetricScenarioAvg (ms)P75 (ms)P90 (ms)P99 (ms)Samples
TTFSstream1299 (-13%)1731 🔴1781 🔴2206 🔴30
TTFShook + stream1694 (+6.9%)2000 🔴2239 🔴2860 🔴30
STSO1020 steps (1-20)272 (-18%)311 🔴399 🔴421 🔴19
STSO1020 steps (101-120)483 (+11%)533 🔴709 🔴747 🔴19
STSO1020 steps (1001-1020)902 (+8.5%)954 🔴983 🔴992 🔴19
WOstream1299 (-13%)17311781220630
WOhook + stream1694 (+6.9%)20002239286030
SLstream4194 (-19%)5537 🔴5833 🔴6044 🔴30
SLhook + stream4878 (-1.7%)5622 🔴5753 🔴5987 🔴30
📜 Previous results (3)

dc75b65

Fri, 10 Jul 2026 11:18:50 GMT · run logs

vercel / nextjs-turbopack

MetricScenarioAvg (ms)P75 (ms)P90 (ms)P99 (ms)Samples
TTFSstream1310 (+12%)1673 🔴1713 🔴2696 🔴30
TTFShook + stream1596 (+16%)1933 🔴1999 🔴2123 🔴30
STSO1020 steps (1-20)274 (+0.7%)293 🔴379 🔴524 🔴19
STSO1020 steps (101-120)435 (+4.3%)449 🔴631 🔴922 🔴19
STSO1020 steps (1001-1020)880 (-18%)946 🔴972 🔴1012 🔴19
WOstream1310 (+12%)16731713269630
WOhook + stream1596 (+16%)19331999212330
SLstream4706 (-4.4%)5595 🔴5837 🔴6162 🔴30
SLhook + stream4966 (-1.1%)5618 🔴5707 🔴5786 🔴30

8e0829a

Fri, 10 Jul 2026 10:21:25 GMT · run logs

vercel / nextjs-turbopack

MetricScenarioAvg (ms)P75 (ms)P90 (ms)P99 (ms)Samples
TTFSstream1254 (+7.3%)1683 🔴1716 🔴2022 🔴30
TTFShook + stream1487 (+8.1%)1888 🔴2026 🔴2132 🔴30
STSO1020 steps (1-20)278 (+2.4%)311 🔴412 🔴451 🔴19
STSO1020 steps (101-120)399 (-4.3%)412 🔴577 🔴648 🔴19
STSO1020 steps (1001-1020)876 (-19%)930 🔴960 🔴1001 🔴19
WOstream1254 (+7.3%)16831716202230
WOhook + stream1487 (+8.1%)18882026213230
SLstream4356 (-12%)5088 🔴5618 🔴5770 🔴30
SLhook + stream5016 (±0%)5559 🔴5592 🔴6653 🔴30

3b0b5fc

Thu, 09 Jul 2026 19:04:54 GMT · run logs

vercel / nextjs-turbopack

MetricScenarioAvg (ms)P75 (ms)P90 (ms)P99 (ms)Samples
TTFSstream1124 (+5.9%)1606 🔴1626 🔴2762 🔴30
TTFShook + stream1612 (+24%)1901 🔴1986 🔴2153 🔴30
STSO1020 steps (1-20)275 (+1.1%)297 🔴401 🔴461 🔴19
STSO1020 steps (101-120)404 (+0.7%)415 🔴629 🔴700 🔴19
STSO1020 steps (1001-1020)917 (+9.9%)991 🔴1095 🔴1194 🔴19
WOstream1124 (+5.9%)16061626276230
WOhook + stream1612 (+24%)19011986215330
SLstream4633 (-2.7%)5573 🔴5720 🔴5894 🔴30
SLhook + stream4853 (-1.4%)5313 🔴5535 🔴5756 🔴30

Avg deltas compare against the most recent benchmark run on main at the time of this run.

Metrics — TTFS: time to first step body execution · STSO: step-to-step overhead (gap between consecutive step bodies) · WO: workflow overhead (time outside step bodies, client start → last step body exit) · SL: stream latency (first chunk write → visible to the reader)

Scenarios — stream: one step that streams chunks back to the client; no hooks, so the run stays in turbo mode · hook + stream: registers a hook before the same streaming step, which exits turbo mode · 1020 steps: 1020 trivial sequential steps; STSO is measured between consecutive steps in the given step ranges

🟢/🔴 mark percentiles within/above target. Targets (p75/p90/p99, ms) — TTFS 200/300/600 · SL 50/60/125 · STSO (1-20) 20/30/60 · STSO (101-120) 30/45/90 · STSO (1001-1020) 40/60/120

TTFS/WO compare client vs deployment clocks and SL compares the step runner’s clock vs the client’s (NTP-synced in CI). WO ends at the last step body exit, the closest observable proxy for the final step-completion request.

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Migrates the docs app from a locally-copied Geist/Fumadocs runtime to the package-backed @vercel/geistdocs architecture, keeping existing public route families while replacing most runtime/UI plumbing with thin adapters around the upstream package.

Changes:

  • Adopt @vercel/geistdocs for docs layout/MDX/rendering, plus package-provided search/chat/LLMs/sitemap/agents/mcp routes.
  • Remove large amounts of locally maintained UI/runtime code (chat/search/sidebar/layout/actions) in favor of upstream components and helpers.
  • Update docs tooling/config (source config + link lint + sitemap/RSS generation) to work with versioned Geistdocs sources.

Reviewed changes

Copilot reviewed 223 out of 224 changed files in this pull request and generated 2 comments.

Show a summary per file
FileDescription
packages/docs-typecheck/src/tests/sitemap-guard.test.tsUpdates the sitemap guard to account for package-backed markdown routes.
docs/source.config.tsSwitches to Geistdocs-provided Zod schemas and default source config.
docs/scripts/lint.tsAdapts link linting to pull raw MDX content from Geistdocs pages.
docs/package.jsonAdds @vercel/geistdocs, updates Next/React versions, removes unused local deps.
docs/next.config.tsRemoves Accept-header rewrites now handled elsewhere in the new architecture.
docs/lib/tsdoc/tsdoc.tsxAdds error handling + switches Callout import to Geistdocs package component.
docs/lib/geistdocs/versions.tsMakes v4/v5 version selection explicit and updates versioned URL docstring.
docs/lib/geistdocs/version-source.tsTightens typing for rewriteUrl and preserves URL rewriting behavior.
docs/lib/geistdocs/i18n.tsRemoves local i18n wiring in favor of package-backed provider/layout.
docs/lib/geistdocs/db.tsRemoves local Dexie chat persistence (chat now handled via package route/proxy).
docs/lib/geistdocs/config.tsxIntroduces centralized Geistdocs config (nav/content/versions/ai).
docs/hooks/geistdocs/use-version.tsxRemoves local version state provider/hook (replaced by package version select).
docs/hooks/geistdocs/use-sidebar.tsRemoves local jotai-based sidebar state hook (package-owned UI).
docs/hooks/geistdocs/use-chat.tsRemoves local jotai-based chat state hook (package-owned UI).
docs/geistdocs.tsxExtends site metadata (GitHub edit config + agent readiness config).
docs/content/docs/v5/migration-guides/migrating-from-trigger-dev.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/migration-guides/migrating-from-temporal.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/migration-guides/migrating-from-inngest.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/migration-guides/migrating-from-aws-step-functions.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/vite.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/tanstack-start.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/sveltekit.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/python.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/nuxt.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/nitro.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/next.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/nestjs.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/hono.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/fastify.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/express.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/astro.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/webhook-response-not-sent.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/timeout-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/start-invalid-workflow-function.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/serialization-failed.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/node-js-module-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/hook-conflict.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/fetch-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/abort-signal-timeout-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/integrations/sandbox.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/integrations/chat-sdk.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/integrations/ai-sdk.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/common-patterns/webhooks.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/common-patterns/scheduling.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/common-patterns/saga.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/common-patterns/rate-limiting.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/common-patterns/batching.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/agent-patterns/human-in-the-loop.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/agent-patterns/durable-agent.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/agent-patterns/agent-cancellation.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/advanced/upgrading-workflows.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/advanced/child-workflows.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/migration-guides/migrating-from-trigger-dev.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/migration-guides/migrating-from-temporal.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/migration-guides/migrating-from-inngest.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/migration-guides/migrating-from-aws-step-functions.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/vite.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/tanstack-start.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/sveltekit.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/python.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/nuxt.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/nitro.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/next.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/nestjs.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/hono.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/fastify.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/express.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/astro.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/webhook-response-not-sent.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/timeout-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/start-invalid-workflow-function.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/serialization-failed.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/node-js-module-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/hook-conflict.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/fetch-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/integrations/sandbox.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/integrations/chat-sdk.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/integrations/ai-sdk.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/common-patterns/webhooks.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/common-patterns/scheduling.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/common-patterns/saga.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/common-patterns/rate-limiting.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/common-patterns/batching.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/agent-patterns/human-in-the-loop.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/agent-patterns/durable-agent.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/agent-patterns/agent-cancellation.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/advanced/upgrading-workflows.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/advanced/child-workflows.mdxAdds CopyPrompt helper content.
docs/components/worlds/WorldTestingPerformance.tsxSwitches Tooltip usage to Geistdocs package tooltip component.
docs/components/worlds/WorldInstructions.tsxSwitches Button usage to Geistdocs package button component.
docs/components/worlds/WorldDetailHero.tsxSwitches Button/Tooltip usage to Geistdocs package components.
docs/components/worlds/WorldCardSimple.tsxSwitches Tooltip usage to Geistdocs package tooltip component.
docs/components/worlds/BenchmarkHistoryChart.tsxSwitches Dialog usage to Geistdocs package dialog component.
docs/components/ui/tooltip.tsxRemoves local tooltip implementation (now using package component).
docs/components/ui/toggle.tsxRemoves local UI component implementation.
docs/components/ui/toggle-group.tsxRemoves local UI component implementation.
docs/components/ui/textarea.tsxRemoves local UI component implementation.
docs/components/ui/switch.tsxRemoves local UI component implementation.
docs/components/ui/spinner.tsxRemoves local UI component implementation.
docs/components/ui/sonner.tsxRemoves local toaster implementation (feedback/chat UI removed).
docs/components/ui/slider.tsxRemoves local UI component implementation.
docs/components/ui/sheet.tsxRemoves local UI component implementation.
docs/components/ui/separator.tsxRemoves local UI component implementation.
docs/components/ui/scroll-area.tsxRemoves local UI component implementation.
docs/components/ui/resizable.tsxRemoves local UI component implementation.
docs/components/ui/radio-group.tsxRemoves local UI component implementation.
docs/components/ui/progress.tsxRemoves local UI component implementation.
docs/components/ui/popover.tsxRemoves local UI component implementation.
docs/components/ui/pagination.tsxRemoves local UI component implementation.
docs/components/ui/label.tsxRemoves local UI component implementation.
docs/components/ui/kbd.tsxRemoves local UI component implementation.
docs/components/ui/input.tsxRemoves local UI component implementation.
docs/components/ui/input-otp.tsxRemoves local UI component implementation.
docs/components/ui/hover-card.tsxRemoves local UI component implementation.
docs/components/ui/form.tsxRemoves local UI component implementation.
docs/components/ui/empty.tsxRemoves local UI component implementation.
docs/components/ui/dialog.tsxRemoves local UI component implementation.
docs/components/ui/collapsible.tsxRemoves local UI component implementation.
docs/components/ui/checkbox.tsxRemoves local UI component implementation.
docs/components/ui/button.tsxRemoves local UI component implementation (use Geistdocs package button).
docs/components/ui/button-group.tsxRemoves local UI component implementation.
docs/components/ui/aspect-ratio.tsxRemoves local UI component implementation.
docs/components/ui/alert.tsxRemoves local UI component implementation.
docs/components/ui/alert-dialog.tsxRemoves local UI component implementation.
docs/components/preview-install.tsxSwitches Button usage to Geistdocs package button component.
docs/components/geistdocs/x-button.tsxRemoves local social button implementation (package navbar/footer).
docs/components/geistdocs/video.tsxRemoves local video component (package MDX/components).
docs/components/geistdocs/version-switcher.tsxRemoves local version switcher UI (package versions UI).
docs/components/geistdocs/theme-toggle.tsxRemoves local theme toggle (package navbar/footer).
docs/components/geistdocs/search.tsxRemoves local search dialog/button (package search).
docs/components/geistdocs/scroll-top.tsxRemoves local scroll-to-top UI (package UI).
docs/components/geistdocs/rss-button.tsxRemoves local RSS button UI (package footer).
docs/components/geistdocs/provider.tsxReplaces local RootProvider wiring with Geistdocs package provider.
docs/components/geistdocs/open-in-chat.tsxRemoves local “open in chat” widget (package AI/chat).
docs/components/geistdocs/navbar.tsxRemoves local navbar (package navbar).
docs/components/geistdocs/navbar-logo.tsxRemoves local navbar logo component (package navbar).
docs/components/geistdocs/mobile-docs-bar.tsxRemoves local mobile docs bar (package docs layout).
docs/components/geistdocs/message-metadata.tsxRemoves local chat message metadata UI.
docs/components/geistdocs/mermaid.tsxRemoves local mermaid renderer (package MDX pipeline).
docs/components/geistdocs/mdx-components.tsxSwitches to createMdxComponents and wires custom components into package MDX system.
docs/components/geistdocs/language-selector.tsxRemoves local language selector (package navbar/footer).
docs/components/geistdocs/installer.tsxRemoves local installer widget (package UI).
docs/components/geistdocs/icons.tsxRemoves local icon helper.
docs/components/geistdocs/home-layout.tsxReplaces local Fumadocs layout wrapper with Geistdocs home layout.
docs/components/geistdocs/github-button.tsxRemoves local GitHub button (package footer).
docs/components/geistdocs/footer.tsxRemoves local footer (package footer).
docs/components/geistdocs/feedback.tsxRemoves local feedback UI flow.
docs/components/geistdocs/edit-source.tsxRemoves local “Edit this page” link (package handles via github config).
docs/components/geistdocs/docs-page.tsxRemoves local docs page wrapper (package docs layout).
docs/components/geistdocs/docs-layout.tsxSwitches to Geistdocs docs layout and adds version select + sidebar badges.
docs/components/geistdocs/desktop-menu.tsxRemoves local desktop menu (package navbar).
docs/components/geistdocs/copy-page.tsxRemoves local copy-page action UI.
docs/components/geistdocs/copy-chat.tsxRemoves local chat copy UI.
docs/components/geistdocs/code-block-tabs.tsxRemoves local code block tabs wrapper (package MDX/code).
docs/components/geistdocs/callout.tsxRemoves local callout wrappers (use package callout).
docs/components/geistdocs/ask-ai.tsxRemoves local ask-ai widget (package chat).
docs/components/custom/fluid-compute-callout.tsxSwitches Callout usage to Geistdocs package component.
docs/components/ai-elements/suggestion.tsxRemoves local AI UI elements.
docs/components/ai-elements/sources.tsxRemoves local AI UI elements.
docs/components/ai-elements/shimmer.tsxRemoves local AI UI elements.
docs/components/ai-elements/conversation.tsxRemoves local AI UI elements.
docs/app/styles/geistdocs.cssSwitches styling baseline to Geistdocs package stylesheet.
docs/app/sitemap.tsUpdates sitemap generation to iterate over versioned sources.
docs/app/sitemap.md/route.tsReplaces custom sitemap.md route with package-backed route.
docs/app/robots.tsMakes robots sitemap host configurable with a local fallback.
docs/app/og/[...slug]/route.tsxMakes OG generation tolerant of missing title/description fields.
docs/app/global.cssRoutes global styling through the new geistdocs stylesheet.
docs/app/api/search/route.tsReplaces custom search indexing route with package-backed search route.
docs/app/api/chat/utils.tsRemoves custom chat system prompt construction (package-backed chat).
docs/app/api/chat/types.tsRemoves custom chat message typing (package-backed chat).
docs/app/api/chat/route.tsReplaces custom chat handler with package-backed chat route + optional proxy.
docs/app/actions/feedback/index.tsRemoves server action for feedback submission.
docs/app/actions/feedback/emotions.tsRemoves feedback emotion list used by deleted UI.
docs/app/[lang]/worlds/page.tsxSwitches Button usage to Geistdocs package button component.
docs/app/[lang]/worlds/compare/page.tsxSwitches Button usage to Geistdocs package button component.
docs/app/[lang]/worlds/[id]/page.tsxTightens types for MDX body/toc extraction.
docs/app/[lang]/v5/docs/layout.tsxPasses explicit currentVersion into docs layout.
docs/app/[lang]/v5/cookbook/layout.tsxPasses explicit currentVersion into docs layout.
docs/app/[lang]/sitemap.md/route.tsReplaces custom localized sitemap.md route with package-backed route.
docs/app/[lang]/rss.xml/route.tsUpdates RSS generation to include pages from current sources with safer fallbacks.
docs/app/[lang]/llms.txt/route.tsReplaces custom llms.txt generator with package-backed route.
docs/app/[lang]/llms.mdx/[[...slug]]/route.tsReplaces custom page-level markdown route with package-backed route.
docs/app/[lang]/layout.tsxSwitches to package Navbar/Footer and uses package-backed config/provider.
docs/app/[lang]/docs/layout.tsxPasses explicit currentVersion into docs layout.
docs/app/[lang]/cookbook/layout.tsxPasses explicit currentVersion into docs layout.
docs/app/[lang]/agents.md/route.tsAdds package-backed agents markdown route.
docs/app/[lang]/.well-known/mcp.json/route.tsAdds package-backed MCP manifest route.
docs/app/[lang]/(home)/components/vercel-com-visuals/vercel-section.tsxSwitches Button usage to Geistdocs package button component.
docs/app/[lang]/(home)/components/vercel-com-visuals/feature-grid.tsxSwitches Button usage to Geistdocs package button component.
docs/app/[lang]/(home)/components/vercel-com-visuals/downtime-visual.tsxSwitches Spinner usage to Geistdocs package spinner component.
docs/app/[lang]/(home)/components/templates/index.tsxSwitches Button usage to Geistdocs package button component.
docs/app/[lang]/(home)/components/run-anywhere.tsxSwitches Button usage to Geistdocs package button component.
docs/app/[lang]/(home)/components/preview-badge.tsxSwitches Button/Dialog usage to Geistdocs package components.
docs/app/[lang]/(home)/components/hero.tsxUpdates agent install command string.
docs/app/[lang]/(home)/components/cta.tsxSwitches Button usage to Geistdocs package button component.
Files not reviewed (1)
  • pnpm-lock.yaml: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threaddocs/components/geistdocs/mdx-components.tsx Outdated
Comment threadpackages/docs-typecheck/src/__tests__/sitemap-guard.test.ts Outdated

@karthikscale3karthikscale3 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

these logos dont look right

Image

@karthikscale3karthikscale3 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@karthikscale3karthikscale3 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Image

should workflow show up in the dropdown again? also should we put the "sdk" badge beside it for the sake of consistency

@pranaygp

pranaygp commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

also should we put the "sdk" badge beside it for the sake of consistency

nope. that's not a valid lockup @karthikscale3 so we're not doing that

@pranaygppranaygp left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I found two user-facing regressions in the package-backed docs migration.

Comment threaddocs/lib/geistdocs/source.ts Outdated
Comment threaddocs/app/[lang]/llms.txt/route.ts Outdated
@karthikscale3

Copy link
Copy Markdown
Contributor

Please let us know when this is ready for a re-review

@molebox

Copy link
Copy Markdown
ContributorAuthor

This PR is un-staled and ready for re-review @karthikscale3@pranaygp.

What changed

Merged main back in (was 221 commits behind, conflicting). Notable ports into the package-backed architecture:

Bumped @vercel/geistdocs 1.4.0 → 1.8.2. This picks up the OSS navbar dropdown fix (1.8.0: real logo lockups, eve added, Streamdown dropped, AI Elements moved to the end — the package default now matches what main shipped in #2586/#2543, and Workflow appears with a proper lockup, no "SDK" badge), plus active-nav highlight, Ask AI markdown style fixes, search breadcrumbs, and code-block polish.

Review feedback addressed:

  • Version dropdown logos — version items now use the Workflow glyph (IconWorkflow from the package assets) instead of the default lucide box/archive icons.
  • CopyPrompt consistency — added prompts to the remaining 13 cookbook recipe pages (sequential-and-parallel, timeouts, idempotency, workflow-composition, serializable-steps, publishing-libraries, distributed-abort-controller — v4 and v5, with version-appropriate wording for the v4/v5 start() and cancellation differences).
  • Edit links — now version-scoped (docs/content/docs/v4/{path} vs .../v5/{path}) via per-page-family github.editPath overrides; previously they dropped the version segment.
  • Copilot's two open threads (WorldTestingPerformance stub, brittle sitemap-guard path) were already fixed in cb573b5 — replied inline.

Still holding from the earlier round:/llms.txt, /api/search, /api/chat read currentSources (v4 only); page-level .md routes read allSources; the v5 markdown URL rewrite stays scoped to local link targets (external vercel.com/docs/... links verified untouched).

Verification

  • pnpm --filter docs build ✅, tsc --noEmit (only the 3 pre-existing failures: BenchmarkChart, lib/github.ts ×2) ✅, biome (same pre-existing error count as main) ✅
  • docs link lint ✅, docs-typecheck suite (1014 code samples) ✅, sitemap-guard ✅, docs smoke checks ✅
  • next start spot checks: .md negotiation, sitemap/llms/agents surfaces, AutoCards markdown expansion, v4/v5 edit links, redirects ✅

@molebox

Copy link
Copy Markdown
ContributorAuthor

Follow-ups from Slack feedback (Chris):

  • Workflow removed from the OSS products dropdown — the geistdocs 1.8.2 default list includes the site's own product, so the docs config now overrides navbarOssProducts with eve, AI SDK, Flags SDK, Chat SDK, and AI Elements (matching what main shipped in [docs] use actual eve logo in OSS nav dropdown #2586). 99a52c2
  • Chat panel vs command menu z-order — fixed upstream as requested: vercel/geistdocs#138 lowers the Ask AI panel to z-45 (above the navbar, below all modal surfaces incl. the search command menu). It'll reach this site with the next geistdocs patch bump; no local workaround added.

@molebox

Copy link
Copy Markdown
ContributorAuthor

Bumped @vercel/geistdocs 1.8.2 → 1.11.0 (dc75b65). What lands here:

  • 1.9.0 — the chat z-order fix from vercel/geistdocs#138 (Ask AI panel now z-45, below the search command menu). Closes out the last piece of Chris's Slack feedback with no local workaround.
  • 1.9.0 — Turborepo joined the default OSS products dropdown; added it to our navbarOssProducts override too (which still drops Workflow itself).
  • 1.11.0 — navbar now renders a GitHub icon link when github is configured, restoring parity with the pre-migration navbar's GitHub button (verified it renders, incl. the mobile menu entry).
  • 1.10.0createChatRoute gained an optional model option; we keep the default (openai/gpt-4.1-mini), no change needed.

Verified: docs build ✅, sitemap-guard ✅, next start spot checks (.md URL + Accept negotiation, /llms.txt, AutoCards markdown expansion, versioned edit links, navbar GitHub link) ✅

@socket-security

socket-securityBot commented Jul 10, 2026

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

DiffPackageSupply Chain
Security
VulnerabilityQualityMaintenanceLicense
Addednpm/​next@​16.2.651100919970
Addednpm/​@​vercel/​geistdocs@​1.11.0771007499100
Addednpm/​hono@​4.12.28991009796100

View full report

@molebox

Copy link
Copy Markdown
ContributorAuthor

@copilot resolve the merge conflicts in this pull request

CopilotAI commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

@copilot resolve the merge conflicts in this pull request

Done. Merged main (12 commits ahead) into migrate-docs in e16a58c. The only conflict was a single line in pnpm-lock.yaml (a vite version string: 7.3.2 vs 7.3.6) — resolved by taking the newer version from main in the follow-up commit.

@karthikscale3karthikscale3 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Thank you!

@github-actions

Copy link
Copy Markdown
Contributor

No backport to stable for aa93cc5 (AI decision).

This commit is a wholesale re-architecture of the docs/ app (outside docs/content/) onto the new @vercel/geistdocs package — that portion of the docs app is not maintained on stable. The pieces touching maintained paths are tightly coupled to this migration and cannot stand alone: the docs/content/*.mdx changes only add <CopyPrompt> components that rely on the new geistdocs MDX runtime introduced here, and the packages/docs-typecheck/sitemap-guard.test.ts rewrite specifically asserts the geistdocs-based createDocsMarkdownRoute structure that doesn't exist on stable, so it would fail there.

To override, re-run the Backport to stable workflow manually via workflow_dispatch and paste this commit SHA into the ref input:

aa93cc5e690649de17b3f28c9ca1c88be0eb23d8

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants

@molebox@pranaygp@karthikscale3@VaguelySerious@christopherkindl
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Migrate docs to package-backed geistdocs - #2222

Merged
molebox merged 14 commits into
mainfrom
migrate-docs
Jul 13, 2026
Merged

Migrate docs to package-backed geistdocs#2222
molebox merged 14 commits into
mainfrom
migrate-docs

Conversation

@molebox

@moleboxmolebox commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

Previews

Summary

Migrates the docs app from the old copied geist/Fumadocs/custom runtime to the package-backed @vercel/geistdocs architecture.

Changes

  • Added @vercel/geistdocs and aligned supported Next/React versions.
  • Replaced local docs page, layout, MDX, search, chat, Markdown, sitemap, agents, and proxy runtime code with thin package-backed adapters.
  • Preserved public docs route families:
    • /docs
    • /cookbook
    • /v5/docs
    • /v5/cookbook
    • /worlds
    • /llms.txt
    • /sitemap.md
    • /agents.md
    • page-level .md routes
  • Kept project-specific content, homepage, worlds pages, OG routes, RSS, metadata, and styling overrides local.
  • Removed copied Geistdocs/AI chat/search/sidebar/page-action runtime code.

Verification

  • pnpm --filter docs build passes.
  • Manually checked local docs routes and machine-readable surfaces.
  • Verified code blocks include Shiki token styles and package stylesheet palette.
  • Verified no deep imports from @vercel/geistdocs/dist.
  • Verified no public/llms.txt masks the App Router route.

Notes

Full docs lint/typecheck still have pre-existing unrelated failures in generated .source, homepage visual lint, components/worlds/BenchmarkChart.tsx, and lib/github.ts.

@vercel

vercelBot commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

@changeset-bot

changeset-botBot commented Jun 2, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 3e0bc8f

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@github-actions

github-actionsBot commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

🧪 E2E Test Results

All tests passed

Summary

PassedFailedSkippedTotal
✅ ▲ Vercel Production145302301683
✅ 💻 Local Development161702191836
✅ 📦 Local Production161702191836
✅ 🐘 Local Postgres161702191836
✅ 🪟 Windows15300153
✅ 📋 Other89401771071
Total7351010648415

Details by Category

✅ ▲ Vercel Production
AppPassedFailedSkipped
✅ astro126027
✅ example126027
✅ express126027
✅ fastify126027
✅ hono126027
✅ nextjs-turbopack15003
✅ nextjs-webpack15003
✅ nitro126027
✅ nuxt126027
✅ sveltekit14508
✅ vite126027
✅ 💻 Local Development
AppPassedFailedSkipped
✅ astro-stable128025
✅ express-stable128025
✅ fastify-stable128025
✅ hono-stable128025
✅ nextjs-turbopack-canary134019
✅ nextjs-turbopack-stable15300
✅ nextjs-webpack-canary134019
✅ nextjs-webpack-stable15300
✅ nitro-stable128025
✅ nuxt-stable128025
✅ sveltekit-stable14706
✅ vite-stable128025
✅ 📦 Local Production
AppPassedFailedSkipped
✅ astro-stable128025
✅ express-stable128025
✅ fastify-stable128025
✅ hono-stable128025
✅ nextjs-turbopack-canary134019
✅ nextjs-turbopack-stable15300
✅ nextjs-webpack-canary134019
✅ nextjs-webpack-stable15300
✅ nitro-stable128025
✅ nuxt-stable128025
✅ sveltekit-stable14706
✅ vite-stable128025
✅ 🐘 Local Postgres
AppPassedFailedSkipped
✅ astro-stable128025
✅ express-stable128025
✅ fastify-stable128025
✅ hono-stable128025
✅ nextjs-turbopack-canary134019
✅ nextjs-turbopack-stable15300
✅ nextjs-webpack-canary134019
✅ nextjs-webpack-stable15300
✅ nitro-stable128025
✅ nuxt-stable128025
✅ sveltekit-stable14706
✅ vite-stable128025
✅ 🪟 Windows
AppPassedFailedSkipped
✅ nextjs-turbopack15300
✅ 📋 Other
AppPassedFailedSkipped
✅ e2e-local-dev-nest-stable128025
✅ e2e-local-dev-tanstack-start-128025
✅ e2e-local-postgres-nest-stable128025
✅ e2e-local-postgres-tanstack-start-128025
✅ e2e-local-prod-nest-stable128025
✅ e2e-local-prod-tanstack-start-128025
✅ e2e-vercel-prod-tanstack-start126027

📋 View full workflow run

@github-actions

github-actionsBot commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

📊 Workflow Benchmarks

commit 3e0bc8f · Mon, 13 Jul 2026 12:56:24 GMT · run logs

Backend: vercel · app: nextjs-turbopack

MetricScenarioAvg (ms)P75 (ms)P90 (ms)P99 (ms)Samples
TTFSstream1299 (-13%)1731 🔴1781 🔴2206 🔴30
TTFShook + stream1694 (+6.9%)2000 🔴2239 🔴2860 🔴30
STSO1020 steps (1-20)272 (-18%)311 🔴399 🔴421 🔴19
STSO1020 steps (101-120)483 (+11%)533 🔴709 🔴747 🔴19
STSO1020 steps (1001-1020)902 (+8.5%)954 🔴983 🔴992 🔴19
WOstream1299 (-13%)17311781220630
WOhook + stream1694 (+6.9%)20002239286030
SLstream4194 (-19%)5537 🔴5833 🔴6044 🔴30
SLhook + stream4878 (-1.7%)5622 🔴5753 🔴5987 🔴30
📜 Previous results (3)

dc75b65

Fri, 10 Jul 2026 11:18:50 GMT · run logs

vercel / nextjs-turbopack

MetricScenarioAvg (ms)P75 (ms)P90 (ms)P99 (ms)Samples
TTFSstream1310 (+12%)1673 🔴1713 🔴2696 🔴30
TTFShook + stream1596 (+16%)1933 🔴1999 🔴2123 🔴30
STSO1020 steps (1-20)274 (+0.7%)293 🔴379 🔴524 🔴19
STSO1020 steps (101-120)435 (+4.3%)449 🔴631 🔴922 🔴19
STSO1020 steps (1001-1020)880 (-18%)946 🔴972 🔴1012 🔴19
WOstream1310 (+12%)16731713269630
WOhook + stream1596 (+16%)19331999212330
SLstream4706 (-4.4%)5595 🔴5837 🔴6162 🔴30
SLhook + stream4966 (-1.1%)5618 🔴5707 🔴5786 🔴30

8e0829a

Fri, 10 Jul 2026 10:21:25 GMT · run logs

vercel / nextjs-turbopack

MetricScenarioAvg (ms)P75 (ms)P90 (ms)P99 (ms)Samples
TTFSstream1254 (+7.3%)1683 🔴1716 🔴2022 🔴30
TTFShook + stream1487 (+8.1%)1888 🔴2026 🔴2132 🔴30
STSO1020 steps (1-20)278 (+2.4%)311 🔴412 🔴451 🔴19
STSO1020 steps (101-120)399 (-4.3%)412 🔴577 🔴648 🔴19
STSO1020 steps (1001-1020)876 (-19%)930 🔴960 🔴1001 🔴19
WOstream1254 (+7.3%)16831716202230
WOhook + stream1487 (+8.1%)18882026213230
SLstream4356 (-12%)5088 🔴5618 🔴5770 🔴30
SLhook + stream5016 (±0%)5559 🔴5592 🔴6653 🔴30

3b0b5fc

Thu, 09 Jul 2026 19:04:54 GMT · run logs

vercel / nextjs-turbopack

MetricScenarioAvg (ms)P75 (ms)P90 (ms)P99 (ms)Samples
TTFSstream1124 (+5.9%)1606 🔴1626 🔴2762 🔴30
TTFShook + stream1612 (+24%)1901 🔴1986 🔴2153 🔴30
STSO1020 steps (1-20)275 (+1.1%)297 🔴401 🔴461 🔴19
STSO1020 steps (101-120)404 (+0.7%)415 🔴629 🔴700 🔴19
STSO1020 steps (1001-1020)917 (+9.9%)991 🔴1095 🔴1194 🔴19
WOstream1124 (+5.9%)16061626276230
WOhook + stream1612 (+24%)19011986215330
SLstream4633 (-2.7%)5573 🔴5720 🔴5894 🔴30
SLhook + stream4853 (-1.4%)5313 🔴5535 🔴5756 🔴30

Avg deltas compare against the most recent benchmark run on main at the time of this run.

Metrics — TTFS: time to first step body execution · STSO: step-to-step overhead (gap between consecutive step bodies) · WO: workflow overhead (time outside step bodies, client start → last step body exit) · SL: stream latency (first chunk write → visible to the reader)

Scenarios — stream: one step that streams chunks back to the client; no hooks, so the run stays in turbo mode · hook + stream: registers a hook before the same streaming step, which exits turbo mode · 1020 steps: 1020 trivial sequential steps; STSO is measured between consecutive steps in the given step ranges

🟢/🔴 mark percentiles within/above target. Targets (p75/p90/p99, ms) — TTFS 200/300/600 · SL 50/60/125 · STSO (1-20) 20/30/60 · STSO (101-120) 30/45/90 · STSO (1001-1020) 40/60/120

TTFS/WO compare client vs deployment clocks and SL compares the step runner’s clock vs the client’s (NTP-synced in CI). WO ends at the last step body exit, the closest observable proxy for the final step-completion request.

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Migrates the docs app from a locally-copied Geist/Fumadocs runtime to the package-backed @vercel/geistdocs architecture, keeping existing public route families while replacing most runtime/UI plumbing with thin adapters around the upstream package.

Changes:

  • Adopt @vercel/geistdocs for docs layout/MDX/rendering, plus package-provided search/chat/LLMs/sitemap/agents/mcp routes.
  • Remove large amounts of locally maintained UI/runtime code (chat/search/sidebar/layout/actions) in favor of upstream components and helpers.
  • Update docs tooling/config (source config + link lint + sitemap/RSS generation) to work with versioned Geistdocs sources.

Reviewed changes

Copilot reviewed 223 out of 224 changed files in this pull request and generated 2 comments.

Show a summary per file
FileDescription
packages/docs-typecheck/src/tests/sitemap-guard.test.tsUpdates the sitemap guard to account for package-backed markdown routes.
docs/source.config.tsSwitches to Geistdocs-provided Zod schemas and default source config.
docs/scripts/lint.tsAdapts link linting to pull raw MDX content from Geistdocs pages.
docs/package.jsonAdds @vercel/geistdocs, updates Next/React versions, removes unused local deps.
docs/next.config.tsRemoves Accept-header rewrites now handled elsewhere in the new architecture.
docs/lib/tsdoc/tsdoc.tsxAdds error handling + switches Callout import to Geistdocs package component.
docs/lib/geistdocs/versions.tsMakes v4/v5 version selection explicit and updates versioned URL docstring.
docs/lib/geistdocs/version-source.tsTightens typing for rewriteUrl and preserves URL rewriting behavior.
docs/lib/geistdocs/i18n.tsRemoves local i18n wiring in favor of package-backed provider/layout.
docs/lib/geistdocs/db.tsRemoves local Dexie chat persistence (chat now handled via package route/proxy).
docs/lib/geistdocs/config.tsxIntroduces centralized Geistdocs config (nav/content/versions/ai).
docs/hooks/geistdocs/use-version.tsxRemoves local version state provider/hook (replaced by package version select).
docs/hooks/geistdocs/use-sidebar.tsRemoves local jotai-based sidebar state hook (package-owned UI).
docs/hooks/geistdocs/use-chat.tsRemoves local jotai-based chat state hook (package-owned UI).
docs/geistdocs.tsxExtends site metadata (GitHub edit config + agent readiness config).
docs/content/docs/v5/migration-guides/migrating-from-trigger-dev.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/migration-guides/migrating-from-temporal.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/migration-guides/migrating-from-inngest.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/migration-guides/migrating-from-aws-step-functions.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/vite.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/tanstack-start.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/sveltekit.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/python.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/nuxt.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/nitro.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/next.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/nestjs.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/hono.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/fastify.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/express.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/getting-started/astro.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/webhook-response-not-sent.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/timeout-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/start-invalid-workflow-function.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/serialization-failed.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/node-js-module-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/hook-conflict.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/fetch-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/errors/abort-signal-timeout-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/integrations/sandbox.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/integrations/chat-sdk.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/integrations/ai-sdk.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/common-patterns/webhooks.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/common-patterns/scheduling.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/common-patterns/saga.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/common-patterns/rate-limiting.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/common-patterns/batching.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/agent-patterns/human-in-the-loop.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/agent-patterns/durable-agent.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/agent-patterns/agent-cancellation.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/advanced/upgrading-workflows.mdxAdds CopyPrompt helper content.
docs/content/docs/v5/cookbook/advanced/child-workflows.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/migration-guides/migrating-from-trigger-dev.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/migration-guides/migrating-from-temporal.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/migration-guides/migrating-from-inngest.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/migration-guides/migrating-from-aws-step-functions.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/vite.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/tanstack-start.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/sveltekit.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/python.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/nuxt.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/nitro.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/next.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/nestjs.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/hono.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/fastify.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/express.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/getting-started/astro.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/webhook-response-not-sent.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/timeout-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/start-invalid-workflow-function.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/serialization-failed.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/node-js-module-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/hook-conflict.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/errors/fetch-in-workflow.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/integrations/sandbox.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/integrations/chat-sdk.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/integrations/ai-sdk.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/common-patterns/webhooks.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/common-patterns/scheduling.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/common-patterns/saga.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/common-patterns/rate-limiting.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/common-patterns/batching.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/agent-patterns/human-in-the-loop.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/agent-patterns/durable-agent.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/agent-patterns/agent-cancellation.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/advanced/upgrading-workflows.mdxAdds CopyPrompt helper content.
docs/content/docs/v4/cookbook/advanced/child-workflows.mdxAdds CopyPrompt helper content.
docs/components/worlds/WorldTestingPerformance.tsxSwitches Tooltip usage to Geistdocs package tooltip component.
docs/components/worlds/WorldInstructions.tsxSwitches Button usage to Geistdocs package button component.
docs/components/worlds/WorldDetailHero.tsxSwitches Button/Tooltip usage to Geistdocs package components.
docs/components/worlds/WorldCardSimple.tsxSwitches Tooltip usage to Geistdocs package tooltip component.
docs/components/worlds/BenchmarkHistoryChart.tsxSwitches Dialog usage to Geistdocs package dialog component.
docs/components/ui/tooltip.tsxRemoves local tooltip implementation (now using package component).
docs/components/ui/toggle.tsxRemoves local UI component implementation.
docs/components/ui/toggle-group.tsxRemoves local UI component implementation.
docs/components/ui/textarea.tsxRemoves local UI component implementation.
docs/components/ui/switch.tsxRemoves local UI component implementation.
docs/components/ui/spinner.tsxRemoves local UI component implementation.
docs/components/ui/sonner.tsxRemoves local toaster implementation (feedback/chat UI removed).
docs/components/ui/slider.tsxRemoves local UI component implementation.
docs/components/ui/sheet.tsxRemoves local UI component implementation.
docs/components/ui/separator.tsxRemoves local UI component implementation.
docs/components/ui/scroll-area.tsxRemoves local UI component implementation.
docs/components/ui/resizable.tsxRemoves local UI component implementation.
docs/components/ui/radio-group.tsxRemoves local UI component implementation.
docs/components/ui/progress.tsxRemoves local UI component implementation.
docs/components/ui/popover.tsxRemoves local UI component implementation.
docs/components/ui/pagination.tsxRemoves local UI component implementation.
docs/components/ui/label.tsxRemoves local UI component implementation.
docs/components/ui/kbd.tsxRemoves local UI component implementation.
docs/components/ui/input.tsxRemoves local UI component implementation.
docs/components/ui/input-otp.tsxRemoves local UI component implementation.
docs/components/ui/hover-card.tsxRemoves local UI component implementation.
docs/components/ui/form.tsxRemoves local UI component implementation.
docs/components/ui/empty.tsxRemoves local UI component implementation.
docs/components/ui/dialog.tsxRemoves local UI component implementation.
docs/components/ui/collapsible.tsxRemoves local UI component implementation.
docs/components/ui/checkbox.tsxRemoves local UI component implementation.
docs/components/ui/button.tsxRemoves local UI component implementation (use Geistdocs package button).
docs/components/ui/button-group.tsxRemoves local UI component implementation.
docs/components/ui/aspect-ratio.tsxRemoves local UI component implementation.
docs/components/ui/alert.tsxRemoves local UI component implementation.
docs/components/ui/alert-dialog.tsxRemoves local UI component implementation.
docs/components/preview-install.tsxSwitches Button usage to Geistdocs package button component.
docs/components/geistdocs/x-button.tsxRemoves local social button implementation (package navbar/footer).
docs/components/geistdocs/video.tsxRemoves local video component (package MDX/components).
docs/components/geistdocs/version-switcher.tsxRemoves local version switcher UI (package versions UI).
docs/components/geistdocs/theme-toggle.tsxRemoves local theme toggle (package navbar/footer).
docs/components/geistdocs/search.tsxRemoves local search dialog/button (package search).
docs/components/geistdocs/scroll-top.tsxRemoves local scroll-to-top UI (package UI).
docs/components/geistdocs/rss-button.tsxRemoves local RSS button UI (package footer).
docs/components/geistdocs/provider.tsxReplaces local RootProvider wiring with Geistdocs package provider.
docs/components/geistdocs/open-in-chat.tsxRemoves local “open in chat” widget (package AI/chat).
docs/components/geistdocs/navbar.tsxRemoves local navbar (package navbar).
docs/components/geistdocs/navbar-logo.tsxRemoves local navbar logo component (package navbar).
docs/components/geistdocs/mobile-docs-bar.tsxRemoves local mobile docs bar (package docs layout).
docs/components/geistdocs/message-metadata.tsxRemoves local chat message metadata UI.
docs/components/geistdocs/mermaid.tsxRemoves local mermaid renderer (package MDX pipeline).
docs/components/geistdocs/mdx-components.tsxSwitches to createMdxComponents and wires custom components into package MDX system.
docs/components/geistdocs/language-selector.tsxRemoves local language selector (package navbar/footer).
docs/components/geistdocs/installer.tsxRemoves local installer widget (package UI).
docs/components/geistdocs/icons.tsxRemoves local icon helper.
docs/components/geistdocs/home-layout.tsxReplaces local Fumadocs layout wrapper with Geistdocs home layout.
docs/components/geistdocs/github-button.tsxRemoves local GitHub button (package footer).
docs/components/geistdocs/footer.tsxRemoves local footer (package footer).
docs/components/geistdocs/feedback.tsxRemoves local feedback UI flow.
docs/components/geistdocs/edit-source.tsxRemoves local “Edit this page” link (package handles via github config).
docs/components/geistdocs/docs-page.tsxRemoves local docs page wrapper (package docs layout).
docs/components/geistdocs/docs-layout.tsxSwitches to Geistdocs docs layout and adds version select + sidebar badges.
docs/components/geistdocs/desktop-menu.tsxRemoves local desktop menu (package navbar).
docs/components/geistdocs/copy-page.tsxRemoves local copy-page action UI.
docs/components/geistdocs/copy-chat.tsxRemoves local chat copy UI.
docs/components/geistdocs/code-block-tabs.tsxRemoves local code block tabs wrapper (package MDX/code).
docs/components/geistdocs/callout.tsxRemoves local callout wrappers (use package callout).
docs/components/geistdocs/ask-ai.tsxRemoves local ask-ai widget (package chat).
docs/components/custom/fluid-compute-callout.tsxSwitches Callout usage to Geistdocs package component.
docs/components/ai-elements/suggestion.tsxRemoves local AI UI elements.
docs/components/ai-elements/sources.tsxRemoves local AI UI elements.
docs/components/ai-elements/shimmer.tsxRemoves local AI UI elements.
docs/components/ai-elements/conversation.tsxRemoves local AI UI elements.
docs/app/styles/geistdocs.cssSwitches styling baseline to Geistdocs package stylesheet.
docs/app/sitemap.tsUpdates sitemap generation to iterate over versioned sources.
docs/app/sitemap.md/route.tsReplaces custom sitemap.md route with package-backed route.
docs/app/robots.tsMakes robots sitemap host configurable with a local fallback.
docs/app/og/[...slug]/route.tsxMakes OG generation tolerant of missing title/description fields.
docs/app/global.cssRoutes global styling through the new geistdocs stylesheet.
docs/app/api/search/route.tsReplaces custom search indexing route with package-backed search route.
docs/app/api/chat/utils.tsRemoves custom chat system prompt construction (package-backed chat).
docs/app/api/chat/types.tsRemoves custom chat message typing (package-backed chat).
docs/app/api/chat/route.tsReplaces custom chat handler with package-backed chat route + optional proxy.
docs/app/actions/feedback/index.tsRemoves server action for feedback submission.
docs/app/actions/feedback/emotions.tsRemoves feedback emotion list used by deleted UI.
docs/app/[lang]/worlds/page.tsxSwitches Button usage to Geistdocs package button component.
docs/app/[lang]/worlds/compare/page.tsxSwitches Button usage to Geistdocs package button component.
docs/app/[lang]/worlds/[id]/page.tsxTightens types for MDX body/toc extraction.
docs/app/[lang]/v5/docs/layout.tsxPasses explicit currentVersion into docs layout.
docs/app/[lang]/v5/cookbook/layout.tsxPasses explicit currentVersion into docs layout.
docs/app/[lang]/sitemap.md/route.tsReplaces custom localized sitemap.md route with package-backed route.
docs/app/[lang]/rss.xml/route.tsUpdates RSS generation to include pages from current sources with safer fallbacks.
docs/app/[lang]/llms.txt/route.tsReplaces custom llms.txt generator with package-backed route.
docs/app/[lang]/llms.mdx/[[...slug]]/route.tsReplaces custom page-level markdown route with package-backed route.
docs/app/[lang]/layout.tsxSwitches to package Navbar/Footer and uses package-backed config/provider.
docs/app/[lang]/docs/layout.tsxPasses explicit currentVersion into docs layout.
docs/app/[lang]/cookbook/layout.tsxPasses explicit currentVersion into docs layout.
docs/app/[lang]/agents.md/route.tsAdds package-backed agents markdown route.
docs/app/[lang]/.well-known/mcp.json/route.tsAdds package-backed MCP manifest route.
docs/app/[lang]/(home)/components/vercel-com-visuals/vercel-section.tsxSwitches Button usage to Geistdocs package button component.
docs/app/[lang]/(home)/components/vercel-com-visuals/feature-grid.tsxSwitches Button usage to Geistdocs package button component.
docs/app/[lang]/(home)/components/vercel-com-visuals/downtime-visual.tsxSwitches Spinner usage to Geistdocs package spinner component.
docs/app/[lang]/(home)/components/templates/index.tsxSwitches Button usage to Geistdocs package button component.
docs/app/[lang]/(home)/components/run-anywhere.tsxSwitches Button usage to Geistdocs package button component.
docs/app/[lang]/(home)/components/preview-badge.tsxSwitches Button/Dialog usage to Geistdocs package components.
docs/app/[lang]/(home)/components/hero.tsxUpdates agent install command string.
docs/app/[lang]/(home)/components/cta.tsxSwitches Button usage to Geistdocs package button component.
Files not reviewed (1)
  • pnpm-lock.yaml: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threaddocs/components/geistdocs/mdx-components.tsx Outdated
Comment threadpackages/docs-typecheck/src/__tests__/sitemap-guard.test.ts Outdated

@karthikscale3karthikscale3 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

these logos dont look right

Image

@karthikscale3karthikscale3 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@karthikscale3karthikscale3 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Image

should workflow show up in the dropdown again? also should we put the "sdk" badge beside it for the sake of consistency

@pranaygp

pranaygp commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

also should we put the "sdk" badge beside it for the sake of consistency

nope. that's not a valid lockup @karthikscale3 so we're not doing that

@pranaygppranaygp left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I found two user-facing regressions in the package-backed docs migration.

Comment threaddocs/lib/geistdocs/source.ts Outdated
Comment threaddocs/app/[lang]/llms.txt/route.ts Outdated
@karthikscale3

Copy link
Copy Markdown
Contributor

Please let us know when this is ready for a re-review

@molebox

Copy link
Copy Markdown
ContributorAuthor

This PR is un-staled and ready for re-review @karthikscale3@pranaygp.

What changed

Merged main back in (was 221 commits behind, conflicting). Notable ports into the package-backed architecture:

Bumped @vercel/geistdocs 1.4.0 → 1.8.2. This picks up the OSS navbar dropdown fix (1.8.0: real logo lockups, eve added, Streamdown dropped, AI Elements moved to the end — the package default now matches what main shipped in #2586/#2543, and Workflow appears with a proper lockup, no "SDK" badge), plus active-nav highlight, Ask AI markdown style fixes, search breadcrumbs, and code-block polish.

Review feedback addressed:

  • Version dropdown logos — version items now use the Workflow glyph (IconWorkflow from the package assets) instead of the default lucide box/archive icons.
  • CopyPrompt consistency — added prompts to the remaining 13 cookbook recipe pages (sequential-and-parallel, timeouts, idempotency, workflow-composition, serializable-steps, publishing-libraries, distributed-abort-controller — v4 and v5, with version-appropriate wording for the v4/v5 start() and cancellation differences).
  • Edit links — now version-scoped (docs/content/docs/v4/{path} vs .../v5/{path}) via per-page-family github.editPath overrides; previously they dropped the version segment.
  • Copilot's two open threads (WorldTestingPerformance stub, brittle sitemap-guard path) were already fixed in cb573b5 — replied inline.

Still holding from the earlier round:/llms.txt, /api/search, /api/chat read currentSources (v4 only); page-level .md routes read allSources; the v5 markdown URL rewrite stays scoped to local link targets (external vercel.com/docs/... links verified untouched).

Verification

  • pnpm --filter docs build ✅, tsc --noEmit (only the 3 pre-existing failures: BenchmarkChart, lib/github.ts ×2) ✅, biome (same pre-existing error count as main) ✅
  • docs link lint ✅, docs-typecheck suite (1014 code samples) ✅, sitemap-guard ✅, docs smoke checks ✅
  • next start spot checks: .md negotiation, sitemap/llms/agents surfaces, AutoCards markdown expansion, v4/v5 edit links, redirects ✅

@molebox

Copy link
Copy Markdown
ContributorAuthor

Follow-ups from Slack feedback (Chris):

  • Workflow removed from the OSS products dropdown — the geistdocs 1.8.2 default list includes the site's own product, so the docs config now overrides navbarOssProducts with eve, AI SDK, Flags SDK, Chat SDK, and AI Elements (matching what main shipped in [docs] use actual eve logo in OSS nav dropdown #2586). 99a52c2
  • Chat panel vs command menu z-order — fixed upstream as requested: vercel/geistdocs#138 lowers the Ask AI panel to z-45 (above the navbar, below all modal surfaces incl. the search command menu). It'll reach this site with the next geistdocs patch bump; no local workaround added.

@molebox

Copy link
Copy Markdown
ContributorAuthor

Bumped @vercel/geistdocs 1.8.2 → 1.11.0 (dc75b65). What lands here:

  • 1.9.0 — the chat z-order fix from vercel/geistdocs#138 (Ask AI panel now z-45, below the search command menu). Closes out the last piece of Chris's Slack feedback with no local workaround.
  • 1.9.0 — Turborepo joined the default OSS products dropdown; added it to our navbarOssProducts override too (which still drops Workflow itself).
  • 1.11.0 — navbar now renders a GitHub icon link when github is configured, restoring parity with the pre-migration navbar's GitHub button (verified it renders, incl. the mobile menu entry).
  • 1.10.0createChatRoute gained an optional model option; we keep the default (openai/gpt-4.1-mini), no change needed.

Verified: docs build ✅, sitemap-guard ✅, next start spot checks (.md URL + Accept negotiation, /llms.txt, AutoCards markdown expansion, versioned edit links, navbar GitHub link) ✅

@socket-security

socket-securityBot commented Jul 10, 2026

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

DiffPackageSupply Chain
Security
VulnerabilityQualityMaintenanceLicense
Addednpm/​next@​16.2.651100919970
Addednpm/​@​vercel/​geistdocs@​1.11.0771007499100
Addednpm/​hono@​4.12.28991009796100

View full report

@molebox

Copy link
Copy Markdown
ContributorAuthor

@copilot resolve the merge conflicts in this pull request

CopilotAI commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

@copilot resolve the merge conflicts in this pull request

Done. Merged main (12 commits ahead) into migrate-docs in e16a58c. The only conflict was a single line in pnpm-lock.yaml (a vite version string: 7.3.2 vs 7.3.6) — resolved by taking the newer version from main in the follow-up commit.

@karthikscale3karthikscale3 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Thank you!

@github-actions

Copy link
Copy Markdown
Contributor

No backport to stable for aa93cc5 (AI decision).

This commit is a wholesale re-architecture of the docs/ app (outside docs/content/) onto the new @vercel/geistdocs package — that portion of the docs app is not maintained on stable. The pieces touching maintained paths are tightly coupled to this migration and cannot stand alone: the docs/content/*.mdx changes only add <CopyPrompt> components that rely on the new geistdocs MDX runtime introduced here, and the packages/docs-typecheck/sitemap-guard.test.ts rewrite specifically asserts the geistdocs-based createDocsMarkdownRoute structure that doesn't exist on stable, so it would fail there.

To override, re-run the Backport to stable workflow manually via workflow_dispatch and paste this commit SHA into the ref input:

aa93cc5e690649de17b3f28c9ca1c88be0eb23d8

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants

@molebox@pranaygp@karthikscale3@VaguelySerious@christopherkindl