Files
Pranay Prakash 3229d20614 fix(docs): repair broken links, fix the link linter, and version-correct v5 Card + edit links (#2391)
* fix(docs): repair broken links and make the docs link linter actually validate

The docs link linter (docs/scripts/lint.ts) had been silently passing
everything since the app moved under app/[lang]/ (#552): the
next-validate-link populate key 'docs/[[...slug]]' no longer matched the
real route, and the unpopulated [lang] homepage route produced a fallback
regex (^\/(.+)$) that matched every href. It also only scanned v4 content.

- Rewrite lint.ts to build explicit v4/v5 URL spaces from both fumadocs
  sources (including cookbook URL variants, app routes, worlds pages,
  public/ assets, and next.config.ts redirects) and validate each version's
  content against version-correct render semantics. Also validate
  frontmatter related/prerequisites references (version-relative) and
  heading fragments.
- Rewrite Card hrefs on v5 pages: the v5 routes rewrote inline markdown
  links from /docs/... to /v5/docs/... but Card renders its own Link, so
  Card hrefs escaped to the v4 routes and 404'd for v5-only pages (e.g.
  /v5/docs/observability linking to /docs/observability/attributes).
- Fix all dead content links surfaced by the working linter (56 across
  v4+v5): nonexistent use-workflow/use-step/start API pages now point at
  foundations/workflows-and-steps and workflow-api/start, getStepMetadata
  path corrected, /docs/worlds/local → /worlds/local, dead changelog/
  internal references removed or unlinked, retired common-patterns links
  point at the cookbook, and a dead #returnvalue anchor now targets
  #returns.
- Add an index page for api-reference/workflow-errors (both versions),
  which was linked from the API reference landing page but had no page.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(docs): add version prefix to 'Edit this page on GitHub' links

All "Edit this page on GitHub" links 404'd since the v4/v5 content split
(#1948): page.path is relative to the per-version content dir, but
EditSource built URLs against docs/content/docs/ without the v4/ or v5/
segment. Add a required version prop, passed from each page route.

Incorporates #2120 by Luke Howard (@gldkhoward), rebased onto the v5
route changes from this branch. Fixes #2119.

Co-authored-by: Luke Howard <dev@lukehoward.com.au>

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 16:26:38 -07:00

32 lines
785 B
TypeScript

import { SiGithub } from '@icons-pack/react-simple-icons';
import { github } from '@/geistdocs';
type EditSourceProps = {
path: string | undefined;
version: 'v4' | 'v5';
};
export const EditSource = ({ path, version }: EditSourceProps) => {
let url: string | undefined;
if (github.owner && github.repo && path) {
url = `https://github.com/${github.owner}/${github.repo}/edit/main/docs/content/docs/${version}/${path}`;
}
if (!url) {
return null;
}
return (
<a
className="flex items-center gap-1.5 text-muted-foreground text-sm transition-colors hover:text-foreground"
href={url}
rel="noopener noreferrer"
target="_blank"
>
<SiGithub className="size-3.5" />
<span>Edit this page on GitHub</span>
</a>
);
};