Skip to content

[finding] @object-ui/core's Registry.ts is a THIRD ComponentMeta declaration, and it is missing tags/description too — the same delta #5893 just closed in packages/types #6067

Description

@yinlianghui

Noticed while converging ComponentMeta's two packages/types declarations (#5893). Filed rather than fixed: packages/core is outside that card's fence, and it is not the same shape as the copy #5893 retired, so it is not a mechanical extension of that convergence.

Measured

Read off origin/main at merge-base efa70ecb2.

packages/core/src/registry/Registry.ts:37 declares its own export type ComponentMeta = { … }. After #5893, that is the only remaining structural copy of the name in the workspace — packages/types' two collapsed onto one.

Key sets:

declarationkeys
packages/types/src/base.ts:511 (11)labeliconcategoryinputsdefaultPropsexamplesisContainerresizableresizeConstraintstagsdescription
packages/core/src/registry/Registry.ts:37 (13)labeliconcategorytiernamespaceskipFallbacklabellinginputsdefaultPropsexamplesisContainerresizableresizeConstraints

So it is a superset with holes, not a copy:

Why it is worth recording separately

#5893's divergence and this one are the same two keys, which is what makes it more than a tidiness note: tags/description are declared on base.ts, declared on the zod mirror ComponentMetaSchema (packages/types/src/zod/base.zod.ts:298, all eleven keys), and now reachable on the plugin-facing type — but not writable at @object-ui/core's registry meta, which is the declaration a great many component registrations actually import. That is the same asymmetry #4972 recorded for ComponentInput: the publication face advertises keys the authoring face rejects.

The difference from #4972's ComponentInput case, and the reason this is not just "do #5671 again": core's four extra keys mean this cannot be a bare re-export. It needs a decision about shape — which is why it is filed for triage rather than folded into #5893.

Not covered by the cards that look like they cover it.#4972 is closed and scoped to ComponentInput's three copies plus WidgetInput; ComponentMeta is named nowhere in it. #5893 is scoped to the two declarations inside packages/types and says so. #5671 converged ComponentInput in this very file (Registry.ts) and left the ComponentMeta immediately below it untouched — visible in its diff, and deliberate, since it was out of that card's fence.

Possible directions

Not urgent: no registration has tried to write tags or description at core's meta, so nothing a user hits is broken today — the same dormancy #4972's divergence had until it wasn't.

Related: #4580 (the ruling and its reason), #4972 (the ComponentInput census), #5671 (the convergence PR), #5893 (the packages/types convergence this was found under), #4631 (the wider three-surfaces-disagree card).

Filed unassigned.

Metadata

Metadata

Assignees

Labels

domain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatpm:dispatched

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions