docs: redirect retired migration-guides URLs to comparisons - #3127
Conversation
The Migration Guides section was replaced by Comparisons in #2676 without redirects, 404ing the previously indexed /docs/migration-guides/* URLs. Add permanent redirects mapping each migrating-from-* page to its workflow-sdk-vs-* comparison, plus a temporary catch-all onto the comparisons index. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
🦋 Changeset detectedLatest commit: 963ee77 The changes in this PR will be included in the next version bump. This PR includes changesets to release 0 packagesWhen changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
There was a problem hiding this comment.
Pull request overview
Adds Next.js redirects in the docs app to preserve inbound links and SEO for the retired /docs/migration-guides/* URLs by permanently mapping them to the new /docs/comparisons/* pages introduced in #2676.
Changes:
- Add 308 (permanent) redirects for the migration-guides index and four specific “migrating-from-*” pages to their corresponding comparisons pages.
- Add a 307 (temporary) catch-all redirect for any other
/docs/migration-guides/:path*URLs to the comparisons index. - Add an empty changeset file to satisfy the repo’s “changeset required” rule for a docs-only PR.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| docs/next.config.ts | Introduces migration-guides → comparisons redirect rules (specific + catch-all). |
| .changeset/docs-migration-guides-redirects.md | Empty changeset marker for a docs-only change. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
karthikscale3
left a comment
There was a problem hiding this comment.
Blocking: please add redirects for the retired pages’ Markdown representations as well. Every docs page advertises a text/markdown alternate at ${page.url}.md, so these were public URLs before the pages were removed.
At minimum, add permanent redirects for:
/docs/migration-guides.md→/docs/comparisons.md/docs/migration-guides/migrating-from-inngest.md→/docs/comparisons/workflow-sdk-vs-inngest.md/docs/migration-guides/migrating-from-temporal.md→/docs/comparisons/workflow-sdk-vs-temporal.md/docs/migration-guides/migrating-from-trigger-dev.md→/docs/comparisons/workflow-sdk-vs-trigger-dev.md/docs/migration-guides/migrating-from-aws-step-functions.md→/docs/comparisons/workflow-sdk-vs-aws-step-functions.md
These need to appear before the namespace catch-all. Without them, the section-level .md URL is not covered, while child .md URLs match the catch-all and are temporarily redirected to the HTML comparisons index instead of their corresponding Markdown page. The /v5/:path* redirect in #3100 will then carry the old v5 Markdown URLs through these mappings.
|
No backport to The only functional change is to To override, re-run the Backport to stable workflow manually via |
* origin/main: Prewarm only appended replay payloads (#3131) feat: publish each run's X25519 public key on the run entity (#3095) feat(core): route sealed envelopes through the serialization layer (#3094) docs: redirect retired migration-guides URLs to comparisons (#3127) feat(core): add `encp` sealed-box encryption primitive (#3093) chore(core): clarify runtime comments (#3111) Remove obsolete world factory aliases (#3112) feat(core): deterministic sandbox hardening (#3045)
- Map @workflow/world-local in the docs snippet type-checker and drop the @skip-typecheck escape on the set-world example; also unskip the three complete input samples on code-transform. Four more snippets are now machine-checked (972 passing, was 968). - World-upgrade prompt diffs against the release tag being upgraded to (workflow@5.x.y) instead of a moving main, falling back to main. - World SDK index points World authors at the top-level interface members (specVersion, capabilities, createRunId, describeRun, ...) documented in Building a World. The preceding merge of origin/main makes the GA-forward docs claims true in-tree (factory aliases actually removed by #3112, sandbox hardening from #3045 including the workflow-globals digest row this branch had stale) and picks up the migration-guides redirects (#3127), whose destinations now pass this branch's redirect-destination lint. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ry-2 * origin/main: (292 commits) feat(core): seal forwarded stream writes to the owner's public key (#3098) feat(core): seal hook payloads to the target run's public key (#3096) [e2e] Rebuild the event-log corruption repro around step-count divergence (#3147) feat: decrypt sealed payloads in the dashboard and CLI (#3146) Prewarm only appended replay payloads (#3131) feat: publish each run's X25519 public key on the run entity (#3095) feat(core): route sealed envelopes through the serialization layer (#3094) docs: redirect retired migration-guides URLs to comparisons (#3127) feat(core): add `encp` sealed-box encryption primitive (#3093) chore(core): clarify runtime comments (#3111) Remove obsolete world factory aliases (#3112) feat(core): deterministic sandbox hardening (#3045) Remove retired v1 step route plumbing (#3061) [core] Don't count racing invocations' duplicate step_started events toward the maxRetries ceiling (#3069) [world-testing] Isolate each spawned test server's data directory (#3055) fix: upgrade postcss to >=8.5.18 to address GHSA-r28c-9q8g-f849 (#3102) [next] Respect .gitignore in dev watcher to avoid EMFILE on large monorepos (#3085) [ci] Backport only stability fixes to `stable`, default to claude-opus-5 (#3092) perf(core): immediate leading-edge dispatch for idle streams (flush window default 0) (#3088) Optimize `processImportSpecifier` by computing `shouldFollowImportsFromFile` once per file (#3052) ... # Conflicts: # docs/components/geistdocs/desktop-menu.tsx # docs/components/geistdocs/mobile-menu.tsx # docs/content/docs/v5/cookbook/advanced/child-workflows.mdx # docs/content/docs/v5/cookbook/advanced/upgrading-workflows.mdx # docs/content/docs/v5/cookbook/agent-patterns/agent-cancellation.mdx # docs/content/docs/v5/cookbook/agent-patterns/durable-agent.mdx # docs/content/docs/v5/cookbook/agent-patterns/human-in-the-loop.mdx # docs/content/docs/v5/cookbook/common-patterns/batching.mdx # docs/content/docs/v5/cookbook/common-patterns/idempotency.mdx # docs/content/docs/v5/cookbook/common-patterns/rate-limiting.mdx # docs/content/docs/v5/cookbook/common-patterns/saga.mdx # docs/content/docs/v5/cookbook/common-patterns/scheduling.mdx # docs/content/docs/v5/cookbook/common-patterns/sequential-and-parallel.mdx # docs/content/docs/v5/cookbook/common-patterns/timeouts.mdx # docs/content/docs/v5/cookbook/common-patterns/webhooks.mdx # docs/content/docs/v5/cookbook/common-patterns/workflow-composition.mdx # docs/content/docs/v5/cookbook/index.mdx # docs/content/docs/v5/cookbook/integrations/ai-sdk.mdx # docs/content/docs/v5/cookbook/integrations/chat-sdk.mdx # docs/content/docs/v5/cookbook/integrations/sandbox.mdx # docs/next.config.ts # docs/proxy.ts # docs/scripts/lint.ts # pnpm-lock.yaml # pnpm-workspace.yaml
#2676 replaced the Migration Guides docs section with Comparisons but shipped no redirects, so the previously indexed
/docs/migration-guides/*URLs have been 404ing since July 21. This adds permanent redirects to preserve SEO and inbound links:/docs/migration-guides/docs/comparisons/docs/migration-guides/migrating-from-inngest/docs/comparisons/workflow-sdk-vs-inngest/docs/migration-guides/migrating-from-temporal/docs/comparisons/workflow-sdk-vs-temporal/docs/migration-guides/migrating-from-trigger-dev/docs/comparisons/workflow-sdk-vs-trigger-dev/docs/migration-guides/migrating-from-aws-step-functions/docs/comparisons/workflow-sdk-vs-aws-step-functions/docs/migration-guides/:path*(anything else)/docs/comparisonsThe
/v5/docs/migration-guides/*equivalents are intentionally omitted: those URLs carriednoindex, and after #3100 the/v5prefix collapses into the unprefixed space via its blanket redirect, which chains through these rules (/v5/docs/migration-guides/x→/docs/migration-guides/x→/docs/comparisons/...).Note for #3100: this touches the same
redirects()block that PR rewrites; whichever lands second takes a small conflict — the rules here carry over unchanged since they're already written against the unprefixed space.Verification
bun ./scripts/lint.ts: 0 errors (destinations resolve to real pages in the link-check model).pnpm build+ curl againstpnpm start: all five exact mappings return 308 with the rightLocation, the catch-all returns 307 to/docs/comparisons, and/docs/comparisons/workflow-sdk-vs-inngestserves 200.Empty changeset — docs only, no published package changes.
🤖 Generated with Claude Code