Skip to content

fix(docs,scripts): 清掉 9 条包 README 死链,并让链接门禁认站内绝对 URL (#3603) - #3629

Merged
yinlianghui merged 2 commits into
mainfrom
claude/issue-3603-pkg-readme-links
Aug 7, 2026
Merged

fix(docs,scripts): 清掉 9 条包 README 死链,并让链接门禁认站内绝对 URL (#3603)#3629
yinlianghui merged 2 commits into
mainfrom
claude/issue-3603-pkg-readme-links

Conversation

@yinlianghui

Copy link
Copy Markdown
Collaborator

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 / AuthGuardcontent/docs 零命中。blocks/authentication.mdx 是「Authentication Blocks」登录表单 block 图库,与本包(Provider、守卫、token)不是一个主题,指过去会误导
packages/collaboration/README.md:132 /docs/packages/collaboration 删行 无文档页;LiveCursors / PresenceAvatars 零命中
packages/i18n/README.md:152 /docs/packages/i18n 删行 无文档页;useObjectTranslation 仅在 guide/public-forms.md 顺带出现,I18nProvider 仅在 architecture-overview / troubleshooting 顺带出现,都不是 i18n 的文档页
packages/mobile/README.md:143 /docs/packages/mobile 删行 无文档页;useBreakpoint / MobileProvider 零命中
packages/permissions/README.md:137 /docs/packages/permissions 删行 无文档页;PermissionGuard / usePermissions 零命中
packages/providers/README.md:82 /docs/packages/providers 删行 无文档页
packages/react/README.md:243 /docs/packages/react 改指 /docs/core/schema-renderer issue 提示「react 的文档可能在 content/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-reference 该行标签就是 "Schema Reference",api/schema-reference.md 标题正是 "Schema Type Reference"
packages/vscode-extension/README.md:189 /docs/api/components 改指 /docs/components 该行标签是 "Component Library",components/index.md 标题正是 "Component Gallery"(packages/components/README.md 早已用这条路由)

6 删 3 改。删掉的那 6 行所在的 ## Links 尾块保留其余 5 条(npm / Changelog / Issues / Contributing / Roadmap),README 正文本身就是这些包当前的文档。

顺带说明:这 7 个包共同假设了一个不存在的 /docs/packages/* 命名空间。删链接只是止血,真正的修法是把这些页面写出来;这属另一件事,已在 #3622 末尾记录供分诊判断是否另开。

复核脚本(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 家族),新判定喂的也是谓词而非计数(故不属「诊断变多」家族)。

步骤 状态 预测 实测
1 content/docs/index.md 与根 README.md 各植入一条死的站内绝对 URL,解析层 红,reason 为 site-absolute-url,两个面各一条 Found 2 broken links —— [site-absolute-url] content/docs/index.md:89 + [site-absolute-url] README.md:518,hint 正常打印
2 保留植入,撤掉 judgeHref 里的解析分支 绿(证明是新层在干活,不是既有检查顺手抓到的) Links are valid across 6 scan roots. exit=0 —— 两条死链被静默放行,正是改前行为
3 撤掉解析分支的状态下跑测试 新测试应大面积红 ✅ 7 failed / 68 passed(accept 侧与纯函数用例本就该继续绿)
4 全部还原 绿,且工作树只剩本 PR 的文件 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 触碰该文件。若判定越界,可要求我拆出。

五、验证

$ node scripts/check-doc-links.mjs
Links are valid across 6 scan roots.

$ pnpm vitest run scripts/__tests__/check-doc-links.test.ts --maxWorkers=2
 Test Files  1 passed (1)
      Tests  75 passed (75)

$ pnpm vitest run scripts/__tests__/ --maxWorkers=2
 Test Files  16 passed (16)
      Tests  293 passed (293)

$ pnpm type-check:scripts
exit=0

$ node scripts/check-control-bytes.mjs
✅  check-control-bytes: OK (scanned 3650 tracked text file(s); skipped 85 binary)

消费半径清点:check-doc-links 的消费方为 docs-links.yml / ci.yml / check-links.ymlCONTRIBUTING.mdcontent/docs/guide/ci-cd-pipeline.mdlychee.toml 与 3 个测试文件,全部跑过或核对过。CONTRIBUTING.md 明确写着「read them there instead of trusting a list copied into prose」,无需同步。

changeset:不加,与仓例一致 —— #3602(纯 README 死链修复)与 #3589(纯门禁脚本 + 测试)都没有 changeset。


Generated by Claude Code

内容半件: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
@vercel

vercel Bot commented Aug 7, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
objectui Ignored Ignored Aug 7, 2026 4:24pm

Request Review

@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

✅ Console Performance Budget

Metric Value Budget
Main entry (gzip) 28.1 KB 350 KB
Entry file index-DBwr6kyx.js
Status PASS

📦 Bundle Size Report

Package Size Gzipped
app-shell (index.js) 8.66KB 3.13KB
app-shell (runtime-config.js) 7.42KB 2.32KB
app-shell (types.js) 0.01KB 0.04KB
app-shell (urlParams.js) 7.57KB 2.97KB
auth (AuthContext.js) 0.31KB 0.24KB
auth (AuthGuard.js) 1.17KB 0.53KB
auth (AuthProvider.js) 22.10KB 4.37KB
auth (AuthShell.js) 3.49KB 1.40KB
auth (ForgotPasswordForm.js) 12.21KB 3.45KB
auth (LoginForm.js) 18.13KB 5.39KB
auth (PreviewBanner.js) 0.90KB 0.50KB
auth (RegisterForm.js) 6.64KB 2.21KB
auth (SocialSignInButtons.js) 9.60KB 3.89KB
auth (UserMenu.js) 3.40KB 1.22KB
auth (auth-gate-events.js) 1.29KB 0.66KB
auth (authStyles.js) 5.04KB 1.72KB
auth (createAuthClient.js) 35.76KB 9.11KB
auth (createAuthenticatedFetch.js) 4.37KB 1.69KB
auth (index.js) 2.35KB 1.07KB
auth (org-roles.js) 6.66KB 2.78KB
auth (phone-identifier.js) 1.11KB 0.66KB
auth (types.js) 0.59KB 0.35KB
auth (useAuth.js) 4.91KB 0.87KB
auth (useIsWorkspaceAdmin.js) 1.61KB 0.85KB
collaboration (CommentThread.js) 26.07KB 7.56KB
collaboration (LiveCursors.js) 3.17KB 1.27KB
collaboration (PresenceAvatars.js) 6.49KB 2.64KB
collaboration (PresenceProvider.js) 2.79KB 1.13KB
collaboration (index.js) 1.65KB 0.73KB
collaboration (useCollaborationTranslation.js) 6.05KB 2.52KB
collaboration (useCommentSearch.js) 1.98KB 0.88KB
collaboration (useConflictResolution.js) 7.75KB 1.86KB
collaboration (useMentionNotifications.js) 1.81KB 0.68KB
collaboration (usePresence.js) 6.33KB 1.84KB
collaboration (useRealtimeSubscription.js) 7.91KB 2.01KB
components (index.js) 480.72KB 105.64KB
core (index.js) 2.96KB 1.13KB
create-plugin (index.js) 9.28KB 2.98KB
data-objectstack (index.js) 137.51KB 35.11KB
fields (index.js) 230.87KB 56.83KB
i18n (LocalizationContext.js) 1.76KB 0.96KB
i18n (currency.js) 1.22KB 0.64KB
i18n (i18n.js) 4.32KB 1.77KB
i18n (index.js) 2.65KB 1.06KB
i18n (pickLocalized.js) 1.70KB 0.83KB
i18n (provider.js) 9.48KB 3.27KB
i18n (useObjectLabel.js) 26.14KB 6.07KB
i18n (useSafeTranslation.js) 4.52KB 1.96KB
layout (index.js) 38.53KB 10.71KB
mobile (MobileProvider.js) 0.92KB 0.49KB
mobile (ResponsiveContainer.js) 0.94KB 0.38KB
mobile (breakpoints.js) 1.51KB 0.70KB
mobile (createOfflineDataSource.js) 5.61KB 1.74KB
mobile (index.js) 1.50KB 0.62KB
mobile (offlineQueue.js) 3.91KB 1.35KB
mobile (pwa.js) 0.97KB 0.49KB
mobile (serviceWorker.js) 1.48KB 0.62KB
mobile (serviceWorkerSource.js) 3.41KB 1.48KB
mobile (useBreakpoint.js) 1.54KB 0.65KB
mobile (useGesture.js) 6.96KB 1.98KB
mobile (useOfflineSync.js) 1.99KB 0.72KB
mobile (usePullToRefresh.js) 2.53KB 0.85KB
mobile (useResponsive.js) 0.71KB 0.42KB
mobile (useResponsiveConfig.js) 1.36KB 0.63KB
mobile (useSpecGesture.js) 4.32KB 1.64KB
mobile (useTouchTarget.js) 1.01KB 0.54KB
permissions (MePermissionsProvider.js) 8.75KB 3.06KB
permissions (PermissionContext.js) 0.31KB 0.25KB
permissions (PermissionGuard.js) 0.89KB 0.45KB
permissions (PermissionProvider.js) 3.67KB 1.12KB
permissions (evaluator.js) 4.41KB 1.44KB
permissions (index.js) 0.91KB 0.41KB
permissions (store.js) 0.91KB 0.42KB
permissions (useFieldPermissions.js) 1.28KB 0.52KB
permissions (usePermissions.js) 1.55KB 0.71KB
plugin-ai (index.js) 15.71KB 3.79KB
plugin-calendar (index.js) 44.98KB 12.37KB
plugin-charts (index.js) 61.04KB 17.31KB
plugin-chatbot (index.js) 180.09KB 42.72KB
plugin-dashboard (index.js) 115.50KB 29.96KB
plugin-designer (index.js) 210.51KB 42.51KB
plugin-detail (index.js) 232.79KB 57.42KB
plugin-editor (index.js) 2.46KB 1.10KB
plugin-form (index.js) 112.10KB 27.10KB
plugin-gantt (index.js) 162.55KB 39.57KB
plugin-grid (index.js) 186.61KB 49.34KB
plugin-kanban (index.js) 48.30KB 13.28KB
plugin-list (index.js) 105.12KB 25.48KB
plugin-map (index.js) 16.81KB 5.24KB
plugin-markdown (index.js) 13.72KB 4.69KB
plugin-report (index.js) 40.58KB 10.58KB
plugin-timeline (index.js) 25.76KB 7.33KB
plugin-tree (index.js) 8.50KB 2.88KB
plugin-view (index.js) 84.03KB 20.55KB
providers (DataSourceProvider.js) 0.75KB 0.39KB
providers (MetadataProvider.js) 1.37KB 0.59KB
providers (ThemeProvider.js) 1.90KB 0.85KB
providers (UploadProvider.js) 11.71KB 3.53KB
providers (index.js) 0.44KB 0.22KB
providers (types.js) 0.01KB 0.04KB
react-runtime (index.js) 5.67KB 2.37KB
react (LazyPluginLoader.js) 3.77KB 1.33KB
react (SchemaRenderer.js) 19.28KB 6.38KB
react (data-invalidation.js) 5.05KB 2.08KB
react (index.js) 1.02KB 0.55KB
react (spec-input.js) 0.20KB 0.18KB
sdui-parser (codegen.js) 4.09KB 1.74KB
sdui-parser (index.js) 4.47KB 2.03KB
sdui-parser (parse.js) 10.04KB 2.82KB
sdui-parser (types.js) 0.29KB 0.24KB
sdui-parser (validate.js) 4.69KB 1.48KB
types (ai.js) 0.20KB 0.17KB
types (api-types.js) 0.20KB 0.18KB
types (app.js) 2.87KB 0.99KB
types (base.js) 0.20KB 0.18KB
types (blocks.js) 0.20KB 0.18KB
types (complex.js) 0.20KB 0.18KB
types (crud.js) 0.20KB 0.18KB
types (data-display.js) 0.20KB 0.18KB
types (data-protocol.js) 0.20KB 0.19KB
types (data.js) 0.20KB 0.18KB
types (designer.js) 1.87KB 0.85KB
types (disclosure.js) 0.20KB 0.18KB
types (error-code.js) 1.54KB 0.88KB
types (feedback.js) 0.20KB 0.18KB
types (field-types.js) 0.20KB 0.18KB
types (form.js) 0.20KB 0.18KB
types (http-retry.js) 4.32KB 2.02KB
types (index.js) 2.71KB 1.34KB
types (layout.js) 0.20KB 0.18KB
types (managed-by.js) 0.19KB 0.18KB
types (mobile.js) 2.59KB 1.31KB
types (navigation.js) 0.20KB 0.18KB
types (objectql.js) 0.20KB 0.18KB
types (overlay.js) 0.20KB 0.18KB
types (permissions.js) 0.20KB 0.18KB
types (plugin-scope.js) 0.20KB 0.18KB
types (record-components.js) 0.20KB 0.19KB
types (record-semantics.js) 1.28KB 0.67KB
types (registry.js) 0.20KB 0.18KB
types (reports.js) 0.20KB 0.18KB
types (spec-report.js) 5.05KB 1.93KB
types (system-fields.js) 3.33KB 1.54KB
types (theme.js) 0.20KB 0.18KB
types (ui-action.js) 3.40KB 1.71KB
types (views.js) 0.20KB 0.18KB
types (widget.js) 0.20KB 0.18KB

Size Limits

  • ✅ Core packages should be < 50KB gzipped
  • ✅ Component packages should be < 100KB gzipped
  • ⚠️ Plugin packages should be < 150KB gzipped

@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

✅ Console Performance Budget

Metric Value Budget
Main entry (gzip) 28.1 KB 350 KB
Entry file index-BWAy3DWK.js
Status PASS

📦 Bundle Size Report

Package Size Gzipped
app-shell (index.js) 8.66KB 3.13KB
app-shell (runtime-config.js) 7.42KB 2.32KB
app-shell (types.js) 0.01KB 0.04KB
app-shell (urlParams.js) 7.57KB 2.97KB
auth (AuthContext.js) 0.31KB 0.24KB
auth (AuthGuard.js) 1.17KB 0.53KB
auth (AuthProvider.js) 22.10KB 4.37KB
auth (AuthShell.js) 3.49KB 1.40KB
auth (ForgotPasswordForm.js) 12.21KB 3.45KB
auth (LoginForm.js) 18.13KB 5.39KB
auth (PreviewBanner.js) 0.90KB 0.50KB
auth (RegisterForm.js) 6.64KB 2.21KB
auth (SocialSignInButtons.js) 9.60KB 3.89KB
auth (UserMenu.js) 3.40KB 1.22KB
auth (auth-gate-events.js) 1.29KB 0.66KB
auth (authStyles.js) 5.04KB 1.72KB
auth (createAuthClient.js) 35.76KB 9.11KB
auth (createAuthenticatedFetch.js) 4.37KB 1.69KB
auth (index.js) 2.35KB 1.07KB
auth (org-roles.js) 6.66KB 2.78KB
auth (phone-identifier.js) 1.11KB 0.66KB
auth (types.js) 0.59KB 0.35KB
auth (useAuth.js) 4.91KB 0.87KB
auth (useIsWorkspaceAdmin.js) 1.61KB 0.85KB
collaboration (CommentThread.js) 26.07KB 7.56KB
collaboration (LiveCursors.js) 3.17KB 1.27KB
collaboration (PresenceAvatars.js) 6.49KB 2.64KB
collaboration (PresenceProvider.js) 2.79KB 1.13KB
collaboration (index.js) 1.65KB 0.73KB
collaboration (useCollaborationTranslation.js) 6.05KB 2.52KB
collaboration (useCommentSearch.js) 1.98KB 0.88KB
collaboration (useConflictResolution.js) 7.75KB 1.86KB
collaboration (useMentionNotifications.js) 1.81KB 0.68KB
collaboration (usePresence.js) 6.33KB 1.84KB
collaboration (useRealtimeSubscription.js) 7.91KB 2.01KB
components (index.js) 480.72KB 105.64KB
core (index.js) 2.96KB 1.13KB
create-plugin (index.js) 9.28KB 2.98KB
data-objectstack (index.js) 137.51KB 35.11KB
fields (index.js) 230.87KB 56.83KB
i18n (LocalizationContext.js) 1.76KB 0.96KB
i18n (currency.js) 1.22KB 0.64KB
i18n (i18n.js) 4.32KB 1.77KB
i18n (index.js) 2.65KB 1.06KB
i18n (pickLocalized.js) 1.70KB 0.83KB
i18n (provider.js) 9.48KB 3.27KB
i18n (useObjectLabel.js) 26.14KB 6.07KB
i18n (useSafeTranslation.js) 4.52KB 1.96KB
layout (index.js) 38.53KB 10.71KB
mobile (MobileProvider.js) 0.92KB 0.49KB
mobile (ResponsiveContainer.js) 0.94KB 0.38KB
mobile (breakpoints.js) 1.51KB 0.70KB
mobile (createOfflineDataSource.js) 5.61KB 1.74KB
mobile (index.js) 1.50KB 0.62KB
mobile (offlineQueue.js) 3.91KB 1.35KB
mobile (pwa.js) 0.97KB 0.49KB
mobile (serviceWorker.js) 1.48KB 0.62KB
mobile (serviceWorkerSource.js) 3.41KB 1.48KB
mobile (useBreakpoint.js) 1.54KB 0.65KB
mobile (useGesture.js) 6.96KB 1.98KB
mobile (useOfflineSync.js) 1.99KB 0.72KB
mobile (usePullToRefresh.js) 2.53KB 0.85KB
mobile (useResponsive.js) 0.71KB 0.42KB
mobile (useResponsiveConfig.js) 1.36KB 0.63KB
mobile (useSpecGesture.js) 4.32KB 1.64KB
mobile (useTouchTarget.js) 1.01KB 0.54KB
permissions (MePermissionsProvider.js) 8.75KB 3.06KB
permissions (PermissionContext.js) 0.31KB 0.25KB
permissions (PermissionGuard.js) 0.89KB 0.45KB
permissions (PermissionProvider.js) 3.67KB 1.12KB
permissions (evaluator.js) 4.41KB 1.44KB
permissions (index.js) 0.91KB 0.41KB
permissions (store.js) 0.91KB 0.42KB
permissions (useFieldPermissions.js) 1.28KB 0.52KB
permissions (usePermissions.js) 1.55KB 0.71KB
plugin-ai (index.js) 15.71KB 3.79KB
plugin-calendar (index.js) 44.98KB 12.37KB
plugin-charts (index.js) 61.04KB 17.31KB
plugin-chatbot (index.js) 180.09KB 42.72KB
plugin-dashboard (index.js) 115.50KB 29.96KB
plugin-designer (index.js) 210.51KB 42.51KB
plugin-detail (index.js) 232.79KB 57.42KB
plugin-editor (index.js) 2.46KB 1.10KB
plugin-form (index.js) 112.10KB 27.10KB
plugin-gantt (index.js) 162.55KB 39.57KB
plugin-grid (index.js) 186.61KB 49.34KB
plugin-kanban (index.js) 48.30KB 13.28KB
plugin-list (index.js) 105.12KB 25.48KB
plugin-map (index.js) 16.81KB 5.24KB
plugin-markdown (index.js) 13.72KB 4.69KB
plugin-report (index.js) 40.58KB 10.58KB
plugin-timeline (index.js) 25.76KB 7.33KB
plugin-tree (index.js) 8.50KB 2.88KB
plugin-view (index.js) 84.03KB 20.55KB
providers (DataSourceProvider.js) 0.75KB 0.39KB
providers (MetadataProvider.js) 1.37KB 0.59KB
providers (ThemeProvider.js) 1.90KB 0.85KB
providers (UploadProvider.js) 11.71KB 3.53KB
providers (index.js) 0.44KB 0.22KB
providers (types.js) 0.01KB 0.04KB
react-runtime (index.js) 5.67KB 2.37KB
react (LazyPluginLoader.js) 3.77KB 1.33KB
react (SchemaRenderer.js) 19.28KB 6.38KB
react (data-invalidation.js) 5.05KB 2.08KB
react (index.js) 1.02KB 0.55KB
react (spec-input.js) 0.20KB 0.18KB
sdui-parser (codegen.js) 4.09KB 1.74KB
sdui-parser (index.js) 4.47KB 2.03KB
sdui-parser (parse.js) 10.04KB 2.82KB
sdui-parser (types.js) 0.29KB 0.24KB
sdui-parser (validate.js) 4.69KB 1.48KB
types (ai.js) 0.20KB 0.17KB
types (api-types.js) 0.20KB 0.18KB
types (app.js) 2.87KB 0.99KB
types (base.js) 0.20KB 0.18KB
types (blocks.js) 0.20KB 0.18KB
types (complex.js) 0.20KB 0.18KB
types (crud.js) 0.20KB 0.18KB
types (data-display.js) 0.20KB 0.18KB
types (data-protocol.js) 0.20KB 0.19KB
types (data.js) 0.20KB 0.18KB
types (designer.js) 1.87KB 0.85KB
types (disclosure.js) 0.20KB 0.18KB
types (error-code.js) 1.54KB 0.88KB
types (feedback.js) 0.20KB 0.18KB
types (field-types.js) 0.20KB 0.18KB
types (form.js) 0.20KB 0.18KB
types (http-retry.js) 4.32KB 2.02KB
types (index.js) 2.71KB 1.34KB
types (layout.js) 0.20KB 0.18KB
types (managed-by.js) 0.19KB 0.18KB
types (mobile.js) 2.59KB 1.31KB
types (navigation.js) 0.20KB 0.18KB
types (objectql.js) 0.20KB 0.18KB
types (overlay.js) 0.20KB 0.18KB
types (permissions.js) 0.20KB 0.18KB
types (plugin-scope.js) 0.20KB 0.18KB
types (record-components.js) 0.20KB 0.19KB
types (record-semantics.js) 1.28KB 0.67KB
types (registry.js) 0.20KB 0.18KB
types (reports.js) 0.20KB 0.18KB
types (spec-report.js) 5.05KB 1.93KB
types (system-fields.js) 3.33KB 1.54KB
types (theme.js) 0.20KB 0.18KB
types (ui-action.js) 3.40KB 1.71KB
types (views.js) 0.20KB 0.18KB
types (widget.js) 0.20KB 0.18KB

Size Limits

  • ✅ Core packages should be < 50KB gzipped
  • ✅ Component packages should be < 100KB gzipped
  • ⚠️ Plugin packages should be < 150KB gzipped

@yinlianghui
yinlianghui marked this pull request as ready for review August 7, 2026 16:28
@yinlianghui
yinlianghui added this pull request to the merge queue Aug 7, 2026
Merged via the queue into main with commit 0e4ea07 Aug 7, 2026
18 checks passed
@yinlianghui
yinlianghui deleted the claude/issue-3603-pkg-readme-links branch August 7, 2026 16:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation package: react tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants