diff --git a/.changeset/master-detail-field-tombstone-4811.md b/.changeset/master-detail-field-tombstone-4811.md new file mode 100644 index 000000000..853c188dc --- /dev/null +++ b/.changeset/master-detail-field-tombstone-4811.md @@ -0,0 +1,9 @@ +--- +--- + +Comment-only: `MasterDetailField` (`packages/fields/src/widgets/MasterDetailField.tsx`) +gains a header tombstone recording that it is absent from `fieldWidgetMap`, unreachable +from any form path (`master_detail` deliberately resolves to `LookupField`), and that its +only in-repo consumer is its own test — so future `widgets/**` audits (the #3291 / #3318 / +#4788 class) skip this file instead of re-discovering and re-investigating it each time +(objectui#4811). No behaviour, export, or public API changes. diff --git a/packages/fields/src/widgets/MasterDetailField.tsx b/packages/fields/src/widgets/MasterDetailField.tsx index 16175a6f9..73258aee0 100644 --- a/packages/fields/src/widgets/MasterDetailField.tsx +++ b/packages/fields/src/widgets/MasterDetailField.tsx @@ -3,6 +3,21 @@ import { Button, Badge, cn } from '@object-ui/components'; import { Plus, X, ExternalLink } from 'lucide-react'; import { FieldWidgetComponentProps } from './types'; +// TOMBSTONE (objectui#4811): this widget is NOT in `fieldWidgetMap` +// (packages/fields/src/index.tsx) and is unreachable from any form path — +// `registerField`/`registerAllFields` only walk `fieldWidgetMap`'s keys, and +// the `master_detail` key there deliberately resolves to `LookupField`, not +// this component (see the comment above that map entry: the child-side FK +// must render as a single-value lookup picker, not the one-to-many list this +// widget models). Its only in-repo consumer is its own test +// (complex-widgets.test.tsx), which renders it directly and proves nothing +// about form reachability. It remains solely because its named export +// (`export * from './widgets/MasterDetailField'` in index.tsx) is a public +// API surface, and removing it is a breaking change left to the maintainer +// (see #4811). Auditors of `widgets/**` (the #3291 / #3318 / #4788 class of +// sweep): skip this file — it is a known, deliberate orphan, not a gap in +// your coverage. + /** * Master-Detail relationship data structure */