Skip to content

content/docs/plugins/plugin-dashboard.mdx 的手动注册循环是 #5064 README 半的文档站镜像 —— 照抄注册 11 个幻影 type + 11 条弃用告警 #5094

Description

@yinlianghui

发现于 #5066 + #5064 文档半的实施(PR #5093,只动 packages/plugin-dashboard/README.md)。Filed unassigned, not claiming。

现象

content/docs/plugins/plugin-dashboard.mdx:70-79 是刚在 README 侧修掉的那段循环的逐字复制品:

### Manual Registration

import { dashboardComponents } from '@object-ui/plugin-dashboard';
import { ComponentRegistry } from '@object-ui/core';

Object.entries(dashboardComponents).forEach(([type, component]) => {
  ComponentRegistry.register(type, component);
});

后果与 #5064 卡面已量出的一致(读数在 PR #5093 复测过,逐条命中):

  1. dashboardComponents(packages/plugin-dashboard/src/index.tsx:338-350)的 11 个键是 PascalCase 组件类名,不是 schema type,所以照抄注册的是 11 个没有作者会写进 schema 的名字;
  2. 本包 ComponentRegistry.register 真正 claim 的 8 个 type 一个都没被这段循环注册 —— dashboard(:44)/ metric(:65)/ metric-card(:80)/ object-metric(:151)/ pivot(:185)/ object-pivot(:260)/ dashboard-grid(:296)/ object-data-table(:316);
  3. 每次调用都缺 meta,触发 packages/core/src/registry/Registry.ts:198-208 的无 namespace 弃用告警,11 键 11 条;
  4. 该循环本身不是注册所必需的 —— 上一节的副作用导入已经完成注册。所以后果是「11 条噪声 + 一个教错的心智模型」,不是「注册失败」。

为什么它躲过了前面七个 PR

#5076 / PR #5085 修的是 plugin-{form,grid,view}.mdx 三页 —— 那三个 *Components 名字是纯虚构(照抄拿到 undefined,Object.entries(undefined) 当场抛)。本页不同:dashboardComponents 是真实导出,所以名集合类的门与探针都看不见它(PR #5093 已把这个「抓不到」预判验证并写进正文:名集合 OK dashboardComponents 绿、旧循环 strict 编译 rc=0 —— 证据只能来自 register 调用现场与 map 键的比对)。README 侧同理,是人工探针发现的,不是门禁。

与 #5064 的关系(不是 Blocked-by)

#5064 的 map 键收敛题(A 改键 / B 留键改文档)在决策箱里(needs-user-decision),但本页今天就在教幻影注册,与裁定方向无关 —— 这也正是 PM 把 README 半先修的理由。

两条路径下本卡都有活可干,故不挂 Blocked-by,由分诊定先后。

复核方式

sed -n '60,85p' content/docs/plugins/plugin-dashboard.mdx
grep -n "^export const dashboardComponents" -A 14 packages/plugin-dashboard/src/index.tsx
grep -n "ComponentRegistry.register" -A 3 packages/plugin-dashboard/src/index.tsx
sed -n '196,210p' packages/core/src/registry/Registry.ts

同族基准:PR #5085(三页文档站镜像)、PR #5093(本包 README 半)。

Activity

  1. yinlianghui commented on Aug 17, 2026

    @yinlianghui
    CollaboratorAuthor

    立卡席位:os-dev,session session_01GTRjn8xBqp75dk7kFupVRt(#5066 + #5064 文档半实施中顺带发现,未认领、未夹带进 PR #5093)。正文末尾的署名被 issues 端点剥掉,按纪律用本评论补。


    Generated by Claude Code

  2. yinlianghui commented on Aug 17, 2026

    @yinlianghui
    CollaboratorAuthor

    PM 分诊(session_01GTRjn8xBqp75dk7kFupVRt,objectui 分片):入队 pm:queue + bug + documentation。

    采信卡面的关系判定:不挂 Blocked-by: #5064 —— map 键收敛题(A/B)在决策箱,但本页今天就在教幻影注册,两条裁定路径下本卡都有活(A 则随裁定 PR 一并收掉,B 则照 PR #5093 同族形重写)。派发时若 #5064 已有裁定,按裁定方向执行;未裁定则按 B 形重写并在散文里不预断 A。

    同族基准:PR #5085(form/grid/view 三页镜像)、PR #5093(本包 README 半)。


    Generated by Claude Code

  3. self-assigned this
    on Aug 18, 2026
  4. yinlianghui commented on Aug 18, 2026

    @yinlianghui
    CollaboratorAuthor

    认领(PM 派发,objectui 分片):session_01GTRjn8xBqp75dk7kFupVRt,分支 claude/issue-5094-dashboard-mdx-mirror,os-dev 席即将开工。

    范围声明:仅 content/docs/plugins/plugin-dashboard.mdx + changeset。#5064 的 map 键题仍在决策箱未裁,按分诊评论(5321561579)口径执行 B 形重写(照 PR #5093 的同族形:真实 register 键表 + 副作用导入说明 + own-key 注册示例),散文不预断 A。与在飞席位(plugin-view README、plugin-grid mdx、plugin-grid src、SchemaForm 实例作用域)文件不相交。


    Generated by Claude Code

  5. yinlianghui commented on Aug 18, 2026

    @yinlianghui
    CollaboratorAuthor

    已实施:draft PR #5104(Fixes #5094),分支 claude/issue-5094-dashboard-mdx-mirror,baseline e09f9e898c7a83de28c9c3c4af934e4c0a640396,session session_01GTRjn8xBqp75dk7kFupVRt。只动 content/docs/plugins/plugin-dashboard.mdx(49 增 4 删),⛔ 未动 README / src / 其它 mdx 页。

    卡面四条判断逐条复测,全部命中(证据一律取 register 调用现场,不取门禁):

    • :70-79 确是 PR docs(plugin-dashboard): README 的 onSchemaChange 持久化示例与手动注册段按真实契约重写 #5093 修掉那段循环的逐字复制品;
    • dashboardComponents 11 个键机器点数(TS compiler API 对 dist 产物取属性)= DashboardRenderer, DashboardGridLayout, MetricWidget, MetricCard, ObjectMetricWidget, PivotTable, ObjectPivotTable, ObjectDataTable, DashboardConfigPanel, WidgetConfigPanel, DashboardWithConfig,无一是 schema type;
    • 8 个真 type 与卡面行号逐条一致(44 / 65 / 80 / 151 / 185 / 260 / 296 / 316),循环一个都没注册到;
    • 缺 meta 命中 Registry.ts:198-208;循环非注册所必需(8 次 register 都是 src/index.tsx 顶层语句)。

    #5064 未裁,按 B 形执行。注:os-steve 22:11Z 那条自动裁定倾向 A,但 PM 23:15Z 的分层处置(comment 5321347946)以「已发布公开导出 + 本仓 check-changeset-no-major 当前禁 major」为由把 A/B 收进 needs-user-decision,派发时仍未裁,故本 PR 散文对 A/B 不表态。若日后裁 A,这张真键表仍为真(抄的是调用现场),只需更新 dashboardComponents 那一句实测陈述。

    changeset 实测判定不欠:check-changeset-presence → 0 of them under the src/ of a package the release covers … no changeset is owed,与同族 PR #5085(三页 mdx,同样零 changeset)一致。派发单原写「+ changeset(patch, docs-only)」,此处按实测与先例执行。

    反向验证有一条与派发单预设不符,如实记录:「键表塞假键 → check-doc-component-types 应红」在表格形态下不成立 —— 该门的 scanDocs 只扫 fenced code block,假键放进 markdown 键表行实测 rc=0(绿),放进代码块才红(:179 [unregistered-doc-type] type 'phantom-widget')。另测到它从不判 namespace 半边。这两条与本卡半径无关、今天无人撞到,已按观察类另立 #5106(finding,无 pm:queue,unassigned),未夹带进本 PR。

    CI:17 项全绿/skip,含 Build Docs(文档站实际构建通过)、Doc Component Type Check、Control Byte Scan、Changeset Declaration。本地 turbo run type-check 81/81。


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingdocumentationImprovements or additions to documentationpm:queue

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions