Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .changeset/master-detail-field-tombstone-4811.md
Original file line numberDiff line numberDiff line change
@@ -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.
15 changes: 15 additions & 0 deletions packages/fields/src/widgets/MasterDetailField.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -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
*/
Expand Down
Loading