From f3f1ac4a96fab6371f123b60d078f17d7719e53a Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 19 Sep 2026 04:42:58 +0000 Subject: [PATCH] fix(app-shell): keep a labelable element on every control picker's catalog-failure arm `PickerLoadFailure` is a `div[role="status"]`, and four widgets `WIDGET_LABELLING` declares `labelling: 'control'` rendered it INSTEAD of their picker on a failed catalog. The `id` `FieldRow` hands a `'control'` widget therefore landed on no element, the visible label's `for` dangled, and the field had no accessible name in the card layout as well as in a grid cell. `object-selector`, `field-selector`, `field-ref` and `view-ref` now render the failure banner beside a freeform entry that carries `controlNaming` and keeps the stored value editable while the catalog is unknown -- the shape `ref:object` already used on this arm. The picker itself is still not rendered there. The `'control'` docblock names the failure branch in its list of example branches; the rule it glosses ("in EVERY branch it can render") is unchanged and no widget's declaration moved. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_018HrVaotisyhgmot9o2MLRq --- .../9931-control-failure-arm-labelable.md | 32 ++ ...ontrolWidgetFailureArmNaming-9931.test.tsx | 353 ++++++++++++++++++ .../src/views/metadata-admin/widgets.tsx | 136 ++++++- 3 files changed, 518 insertions(+), 3 deletions(-) create mode 100644 .changeset/9931-control-failure-arm-labelable.md create mode 100644 packages/app-shell/src/views/metadata-admin/__tests__/SchemaForm.controlWidgetFailureArmNaming-9931.test.tsx diff --git a/.changeset/9931-control-failure-arm-labelable.md b/.changeset/9931-control-failure-arm-labelable.md new file mode 100644 index 0000000000..bae529f3f9 --- /dev/null +++ b/.changeset/9931-control-failure-arm-labelable.md @@ -0,0 +1,32 @@ +--- +'@object-ui/app-shell': patch +--- + +metadata-admin: a `labelling: 'control'` picker keeps a labelable element on its +catalog-FAILURE arm, so the host's `