fix(docs,scripts): 清掉 9 条包 README 死链,并让链接门禁认站内绝对 URL (#3603) - #3629
Merged
Conversation
内容半件:9 条 `/docs/packages/*` 等死链逐条查证后处置 —— 6 条查无对应 文档页(auth / collaboration / i18n / mobile / permissions / providers) 删掉该行,3 条改指真实页(react → /docs/core/schema-renderer, vscode-extension 的 Schema Reference → /docs/api/schema-reference、 Component Library → /docs/components)。 门禁半件第 2 层:`judgeHref()` 此前对任何带 scheme 的 href 直接放行, 所以写成本站绝对 URL 的路由从不校验,而同一条路由写成 `/docs/...` 则严格 校验。现在剥掉 origin 后交给同一个 `routeExists()`,`/docs` 的严格性与 `apps/site` 路由表原样继承。这是通用修复而非包 README 特判:`content/docs` 自己就写了 6 条这种 URL。落地前实测 11 条、零死链。 门禁半件第 1 层(SCAN_ROOTS 追加包 README)**未做**,理由见 #3622: 先量后付的仓规下,实测那一行会额外红 11 条,分布在本单从未触及的 5 个包。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GTRjn8xBqp75dk7kFupVRt
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GTRjn8xBqp75dk7kFupVRt
Contributor
✅ Console Performance Budget
📦 Bundle Size Report
Size Limits
|
Contributor
✅ Console Performance Budget
📦 Bundle Size Report
Size Limits
|
yinlianghui
marked this pull request as ready for review
August 7, 2026 16:28
This was referenced Aug 7, 2026
This was referenced Aug 7, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes-part-of #3603
分段交付。内容半件全交;门禁半件只交第 2 层(
judgeHref解析站内绝对 URL),第 1 层(SCAN_ROOTS追加包 README)按实测结论回队列,单独开在 #3622 —— 理由在第四节,是本 PR 最需要复核的判断。PM 裁决要求的前置实测已做:
git log origin/main确认 #3589 已落 main(6632114bc,SCAN_ROOTS打印 6 roots),worktree 基线即含它,门禁半件不与任何在途 PR 同文件。一、内容半件:9 条逐条处置
按 fumadocs 候选拼写(
x.mdx/x.md/x/index.mdx/x/index.md)在content/docs下逐个查证。查不到对应文档页的删该行(指向不存在的页面比不给链接更糟,分诊已确认此 fallback);查到的改指真实页。packages/auth/README.md:223/docs/packages/auth@object-ui/auth的文档页;AuthProvider/AuthGuard在content/docs零命中。blocks/authentication.mdx是「Authentication Blocks」登录表单 block 图库,与本包(Provider、守卫、token)不是一个主题,指过去会误导packages/collaboration/README.md:132/docs/packages/collaborationLiveCursors/PresenceAvatars零命中packages/i18n/README.md:152/docs/packages/i18nuseObjectTranslation仅在guide/public-forms.md顺带出现,I18nProvider仅在 architecture-overview / troubleshooting 顺带出现,都不是 i18n 的文档页packages/mobile/README.md:143/docs/packages/mobileuseBreakpoint/MobileProvider零命中packages/permissions/README.md:137/docs/packages/permissionsPermissionGuard/usePermissions零命中packages/providers/README.md:82/docs/packages/providerspackages/react/README.md:243/docs/packages/react/docs/core/schema-renderercontent/docs/core/一带」,查证属实:core/schema-renderer.mdx标题 "SchemaRenderer"、描述 "Core component for rendering JSON schemas into React components",正是本包 README 开篇自述的头号导出packages/vscode-extension/README.md:188/docs/protocol/overview/docs/api/schema-referenceapi/schema-reference.md标题正是 "Schema Type Reference"packages/vscode-extension/README.md:189/docs/api/components/docs/componentscomponents/index.md标题正是 "Component Gallery"(packages/components/README.md早已用这条路由)6 删 3 改。删掉的那 6 行所在的
## Links尾块保留其余 5 条(npm / Changelog / Issues / Contributing / Roadmap),README 正文本身就是这些包当前的文档。复核脚本(issue 正文同款,改为对工作树跑)输出:
dead links: 0。二、门禁半件第 2 层:站内绝对 URL 解回站内路由
judgeHref()此前对任何带 scheme 的 href 直接return null,唯一例外是SELF_REPO_BLOB_RE。于是https://www.objectui.org/docs/guide/plugins从不校验,而同一条路由写成/docs/guide/plugins则严格校验 —— 两者只差一个 origin,而 origin 恰恰是这个脚本唯一能确定的部分。实现是通用的,不特判包 README:剥掉 origin,把剩下的绝对站内路径原样交给同一个
routeExists()。因此两个分支都原样继承 ——/docs的严格性(.../docs/guide/foo.md被拒的理由与/docs/guide/foo.md完全相同)与apps/site路由表(/examples无路由则拒)。这一点在测试里是两条INHERITS ...断言,实现若改成"另起一套判断"它们会红。两种 host 拼写都认(本仓
www.objectui.org与裸objectui.org都在用);正则两端锚定,objectui.org.example.com这种仿冒 host 不会误借本仓路由表(有专门一条测试)。落地前实测:全部扫描面共 11 条站内绝对 URL,零死链 —— 与 #3589 同形状(门禁到货即绿),对照 #3479(16 个死目标)/ #3490(18 个)那种「门禁与欠账同时到货」。其中 6 条就在
content/docs自己,这正是分诊说的「这一层对所有扫描面都成立」—— 不是包 README 专属问题。反空绿
本次没有新增扫描根,所以既有的仓库级 "has no broken internal links" 断言即使解析层完全不干活也照样绿。为此新增一条计数下限:实测 11 条(其中
content/docs贡献 6 条、带/docs路径 3 条)必须真的被siteAbsoluteRoute()认出来,否则上面那条绿毫无意义。这是本 PR 最重要的一条测试。新增/改写:8 条新 case,既有
labels all seven checks distinctly扩成 eight、HINTS 键表扩成 8 键。三、逆向验证(方向先定,后跑)
预测方向为常规方向(改前绿 / 改后红),理由:这是对一个此前被
EXTERNAL_HREF_RE无条件跳过的形状新增的检查 —— 既不存在 canonical-first 的??链(故不属 inverted 家族),新判定喂的也是谓词而非计数(故不属「诊断变多」家族)。content/docs/index.md与根README.md各植入一条死的站内绝对 URL,解析层在site-absolute-url,两个面各一条Found 2 broken links——[site-absolute-url] content/docs/index.md:89+[site-absolute-url] README.md:518,hint 正常打印judgeHref里的解析分支Links are valid across 6 scan roots.exit=0 —— 两条死链被静默放行,正是改前行为Links are valid across 6 scan roots.,git status干净四、⚠️ 门禁半件第 1 层没有做 —— 请优先复核这一节
PM 的预测是「内容半件清干净后,门禁首跑对真仓应为绿」。这个预测对第 2 层成立,对第 1 层被实测证伪,所以我停在文件面边界上,没有硬凑。
在 9 条已清干净之后,把
disk规则的包 README 扫描根加上去,仍会红 11 条,分布在本单文件面之外的 5 个包(components / core / fields / layout / types),外加 react、vscode-extension 各一条不同的行:/api/core、/api/react、/api/components(无此路由)、/docs/core、/docs/fields、/docs/layout(真目录但无 index 页,故无路由)、/docs/types、/examples(均不存在),以及两条磁盘路径../../docs/SHADCN_SYNC.md、./LICENSE(文件不在)。其中
/docs/core、/docs/fields、/docs/layout值得单独点名:issue 正文的复核脚本把它们判成了绿,因为那段脚本把裸目录也算作 fumadocs 候选(候选数组的最后一项rel)。门禁不这么算,而且它是对的 ——routeCandidates()只有四种拼写,既有 pin 测试rejects a relative link to a directory that has no index page就是这条规则。实测content/docs/下core/fields/layout/rfcs确实没有 index 页。所以这一类的真实规模是 20 条,不是 9 条。按本文件头注释自 #3572 起写死的规矩 ——「先量扫描面,单独付清红账,再加那一行」—— 红账应单独付,故第 1 层连同它的 11 条欠账开在 #3622(已挂为 #3603 的子 issue,自动进派发池)。头注释里新增了一节 "Measured and NOT bought",把这个测量结果和 issue 编号写死,避免下一个人不量就加行、撞上一片意外的红。
文件面偏差(1 个文件,主动声明)
content/docs/guide/ci-cd-pipeline.md不在派发单列出的文件面里,但本 PR 改了它:该页用一张表逐条描述这个门禁判定哪些 href 形状,原文写「Four checks, by href shape」,我的改动使其变成事实错误。#3589 改同一处行为时也同步改了这个文件(它是那次 diff 的三个文件之一),AGENTS.md 准则 #2「docs 不反映代码就不算完成」也指向同一结论。改动限于新增跨扫描面两形状的说明表 + 一处覆盖面描述,未动其它内容;已确认无在途 PR 触碰该文件。若判定越界,可要求我拆出。五、验证
消费半径清点:
check-doc-links的消费方为docs-links.yml/ci.yml/check-links.yml、CONTRIBUTING.md、content/docs/guide/ci-cd-pipeline.md、lychee.toml与 3 个测试文件,全部跑过或核对过。CONTRIBUTING.md明确写着「read them there instead of trusting a list copied into prose」,无需同步。changeset:不加,与仓例一致 —— #3602(纯 README 死链修复)与 #3589(纯门禁脚本 + 测试)都没有 changeset。
Generated by Claude Code