Filed unassigned while implementing #6167 (PR #6314). Not claiming.
What was measured
apps/site/app/components/galleryDataSource.ts serves one object, users, and its USERS_SCHEMA declares:
role: { label: 'Role', type: 'select' }
status: { label: 'Status', type: 'select' }
Neither declares options, while every row carries a value for them (admin / member / viewer, active / invited / suspended). examples/schema-catalog/test/catalog-gallery-render.test.tsx mirrors the same fixture.
ObjectForm copies the field's options through verbatim — formField.options = field.options || [] (packages/plugin-form/src/ObjectForm.tsx) — so a form bound to those fields renders an empty select. Measured through the gallery's own render path, an object-form over users with no fields restriction:
text: "NameEmailRoleNo options availableDepartmentStatusNo options availableCancelUpdate"
Two of the five visible controls are an empty picker with the placeholder "No options available", on a docs page whose purpose is to show the component working.
Why it is worth recording
The plugin-grid and plugin-view entries do not expose it: a grid renders a select-typed cell as its raw value, so admin / active simply print. It surfaces the moment an entry puts those fields in a FORM, which is what #6167's new plugin-form entries do. Those two entries dodge it by authoring fields: ['name', 'email', 'department'] (plus created_at), so nothing is broken today — but the reason they avoid role and status is this, and that is a constraint on the fixture rather than on the examples.
Not fixed in PR #6314 because the fixture is shared: it is mirrored in the catalog test, and adding options would change what select-typed cells render in the plugin-grid / plugin-view tiles (label instead of raw value), which is outside that card's declared surface and wants its own before/after.
Possible fix
Declare the options on both fields in galleryDataSource.ts and in the mirror, with labels matching the values already in USERS_ROWS, then re-measure the plugin-grid / plugin-view tiles for text changes.
Severity left to triage.
Filed unassigned while implementing #6167 (PR #6314). Not claiming.
What was measured
apps/site/app/components/galleryDataSource.tsserves one object,users, and itsUSERS_SCHEMAdeclares:Neither declares
options, while every row carries a value for them (admin/member/viewer,active/invited/suspended).examples/schema-catalog/test/catalog-gallery-render.test.tsxmirrors the same fixture.ObjectFormcopies the field's options through verbatim —formField.options = field.options || [](packages/plugin-form/src/ObjectForm.tsx) — so a form bound to those fields renders an empty select. Measured through the gallery's own render path, anobject-formoveruserswith nofieldsrestriction:Two of the five visible controls are an empty picker with the placeholder "No options available", on a docs page whose purpose is to show the component working.
Why it is worth recording
The
plugin-gridandplugin-viewentries do not expose it: a grid renders a select-typed cell as its raw value, soadmin/activesimply print. It surfaces the moment an entry puts those fields in a FORM, which is what #6167's newplugin-formentries do. Those two entries dodge it by authoringfields: ['name', 'email', 'department'](pluscreated_at), so nothing is broken today — but the reason they avoidroleandstatusis this, and that is a constraint on the fixture rather than on the examples.Not fixed in PR #6314 because the fixture is shared: it is mirrored in the catalog test, and adding
optionswould change whatselect-typed cells render in theplugin-grid/plugin-viewtiles (label instead of raw value), which is outside that card's declared surface and wants its own before/after.Possible fix
Declare the options on both fields in
galleryDataSource.tsand in the mirror, with labels matching the values already inUSERS_ROWS, then re-measure theplugin-grid/plugin-viewtiles for text changes.Severity left to triage.