Files
Ayaan Gazali b6604af9a0 ci(links): stop the weekly link report flagging the Vite entry HTML (#2324)
* ci(links): stop the weekly link report flagging the Vite entry HTML

The Link Checker workflow opens an issue whenever lychee exits non-zero.
One of the two errors in this week's report (#2317) is not a broken link:

  [ERROR] error: (at 5:49) | Cannot resolve root-relative link
  '/favicon-black.svg?v=4': To resolve root-relative links in local
  files, provide a root dir

packages/inspector/index.html is a Vite entry document. Its two absolute
paths, /favicon-black.svg?v=4 and /src/client/main.tsx, are dev-server
paths that Vite resolves from public/ and src/. Both files exist:

  packages/inspector/public/favicon-black.svg
  packages/inspector/src/client/main.tsx

lychee has no web root to resolve them against, and a repo-wide
--root-dir cannot supply one: pointed at the repo root it looks for
<repo>/favicon-black.svg and fails the same way.

Add the file to the exclude_path list that already skips generated
changelogs, with the reason inline. Offline run over every tracked
markdown and html file, before and after:

  before  612 total, 1 error
  after   610 total, 0 errors

The two links that stop being counted are the two Vite paths.

* ci(links): fix the changelog exclusion that names a directory that does not exist

exclude_path skips libraries/typescript/packages/mcp-use/CHANGELOG.md.
There is no such tracked directory: `mcp-use` is the npm package name,
and its source lives in packages/server.

  $ git ls-files libraries/typescript/packages/mcp-use | wc -l
  0

So that entry matches nothing and packages/server/CHANGELOG.md is still
scanned, which is not what the comment above the list intends. Point it at
the real path.

The effect today is small: that changelog currently holds one URL. The
entry was simply never doing its job.
2026-08-25 09:56:29 -07:00

59 lines
2.1 KiB
TOML

# Accept redirects (302, 307) as valid - these are fine
accept = ["100..=103", "200..=299", "302", "307"]
# Exclude patterns - links that are known to be okay or not checkable in CI
exclude = [
# npmjs.com - 403s are rate limiting, packages exist
"^https://www\\.npmjs\\.com",
"^https://npmjs\\.com",
"npmjs\\.com",
# OpenAI platform docs - requires authentication
"^https://platform\\.openai\\.com/docs/apps",
# Auth0 dashboard - redirects are fine
"^https://manage\\.auth0\\.com",
# WorkOS - some redirects and network issues in CI
"^https://dashboard\\.workos\\.com",
"^https://community\\.workos\\.com",
# Lychee GitHub repository - self-reference
"^https://github\\.com/lycheeverse/lychee",
# Langfuse Cloud API endpoints - 403s from bot protection in CI, valid defaults
"^https://(us\\.|jp\\.|hipaa\\.)?cloud\\.langfuse\\.com",
"cloud\\.langfuse\\.com",
# Example/template URLs
"^https://github\\.com/your-org/",
# GitHub /stargazers pages return 404 to non-browser clients (bot mitigation);
# they load fine in a browser. Verified against other repos' stargazers pages too.
"^https://github\\.com/[^/]+/[^/]+/stargazers$",
# star-history.com badge API intermittently returns 500s; the badge is decorative
"^https://api\\.star-history\\.com/svg(\\?|$)",
]
exclude_path = [
# Vite entry HTML. Its `/favicon-black.svg` and `/src/client/main.tsx` are
# dev-server paths resolved by Vite, not filesystem paths, so lychee reports
# "Cannot resolve root-relative link" for a file that is served fine.
"libraries/typescript/packages/inspector/index\\.html$",
# Skip generated changelogs - historical release notes reference docs URLs
# that were valid at release time; rewriting them is misleading
"libraries/typescript/packages/cli/CHANGELOG\\.md$",
"libraries/typescript/packages/create-mcp-use-app/CHANGELOG\\.md$",
"libraries/typescript/packages/inspector/CHANGELOG\\.md$",
"libraries/typescript/packages/server/CHANGELOG\\.md$",
]
exclude_loopback = true
exclude_link_local = true
# Maximum number of redirects to follow
max_redirects = 5