You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Found while landing objectui#8504 (PR #8518). Out of that card's scope — it fences to six enumerated carriers — so it is filed rather than swept in. ⛔ Not claimed, no assignee.
The carrier
packages/app-shell/src/views/metadata-admin/previews/AgentPreview.tsx:302, in KeyVals:
Same defect as the class objectui#8491 / #8504 closed: an em dash rendered with no role, no label and no text alternative. A screen-reader user reaching this block hears a naked punctuation mark.
Why every previous census missed it — this is the useful half
Both instruments used across objectui#8491, PR #8503 and objectui#8504 were span-shaped:
the narrow one, <span className="…">—</span> on one line;
the wider class-agnostic one, still anchored on <span …>—</span>.
This carrier is a <div>. It is invisible to both, in every run, and it stays invisible no matter how carefully the pathspec or the truncation traps are handled. It surfaced only because #8504's post-fix verification used an element-agnostic probe:
git grep -n '>—<' -- 'packages/*/src/*' 'apps/*'
which returns the nine known carriers plus this one. Recommendation for whoever triages the fenced 41-member population: run the element-agnostic form first, then narrow. A span-shaped instrument cannot report what it cannot match, and its zero looks exactly like absence.
EmptyValue's docblock scopes it to "anywhere a renderer would otherwise show - or — for a null, undefined or empty value" — an inline placeholder for a missing cell/field value, rendering a <span>. This site is different in kind: it is a block-level empty-collection state (rows.length === 0, i.e. this record has no key/values at all), which is what Empty / EmptyTitle / EmptyDescription exist for — and both are already imported elsewhere in packages/app-shell.
So the fix needs a decision, not a swap:
A —<EmptyValue />. One line, consistent with the nine siblings, keeps the compact inline look inside the preview card. Costs the italic treatment and shifts the colour to text-muted-foreground/50. Slightly stretches the component's declared scope: this is not a field value.
B —Empty + EmptyDescription with a real string ("No values"). Semantically right for an empty collection and gives a readable announcement rather than a labelled dash, but it is visually much heavier than a one-line dash inside a small preview block, and it needs an i18n key.
No recommendation offered — the empty-collection vs empty-value distinction is a design call, and it likely applies to more than this one site once someone looks.
Reachability
@object-ui/app-shell already declares @object-ui/components at workspace:*, and AgentPreview.tsx sits in the same tree as two files this class already converted, so no manifest edge is involved either way.
Dedup
Ran. Single-token search_issues for AgentPreview against this repo returns total_count: 0. Per objectui#8504's instrument note, a zero on this repo's issue search is only a reading once a lit control fires in the same session: InspectorSelectField returned 3 (#8450, #8488, #3306) — the same count that card recorded — so the zero is an absence, not a dead instrument.
Related
objectui#8504 / PR #8518 (the six carriers, this one excluded by scope) · objectui#8491 / PR #8503 (the original five) · the DetailSection / HeaderHighlight card (the aria-labelled half) · the pending triage card for the 41 bare em-dash ternary fallbacks — this finding is not one of those 41 either; it is a tenth site that no instrument in the thread has counted.
Found while landing objectui#8504 (PR #8518). Out of that card's scope — it fences to six enumerated carriers — so it is filed rather than swept in. ⛔ Not claimed, no assignee.
The carrier
packages/app-shell/src/views/metadata-admin/previews/AgentPreview.tsx:302, inKeyVals:Same defect as the class objectui#8491 / #8504 closed: an em dash rendered with no role, no label and no text alternative. A screen-reader user reaching this block hears a naked punctuation mark.
Why every previous census missed it — this is the useful half
Both instruments used across objectui#8491, PR #8503 and objectui#8504 were span-shaped:
<span className="…">—</span>on one line;<span …>—</span>.This carrier is a
<div>. It is invisible to both, in every run, and it stays invisible no matter how carefully the pathspec or the truncation traps are handled. It surfaced only because #8504's post-fix verification used an element-agnostic probe:which returns the nine known carriers plus this one. Recommendation for whoever triages the fenced 41-member population: run the element-agnostic form first, then narrow. A span-shaped instrument cannot report what it cannot match, and its zero looks exactly like absence.
Why it is not a mechanical repeat of #8504
EmptyValue's docblock scopes it to "anywhere a renderer would otherwise show-or—for a null, undefined or empty value" — an inline placeholder for a missing cell/field value, rendering a<span>. This site is different in kind: it is a block-level empty-collection state (rows.length === 0, i.e. this record has no key/values at all), which is whatEmpty/EmptyTitle/EmptyDescriptionexist for — and both are already imported elsewhere inpackages/app-shell.So the fix needs a decision, not a swap:
<EmptyValue />. One line, consistent with the nine siblings, keeps the compact inline look inside the preview card. Costs theitalictreatment and shifts the colour totext-muted-foreground/50. Slightly stretches the component's declared scope: this is not a field value.Empty+EmptyDescriptionwith a real string ("No values"). Semantically right for an empty collection and gives a readable announcement rather than a labelled dash, but it is visually much heavier than a one-line dash inside a small preview block, and it needs an i18n key.<EmptyValue />withclassNamekeepingitalic, mirroring what PR fix(plugin-grid,plugin-detail): draw the shared EmptyValue for missing cell values #8503 did for the grid's record-detail drawer (it kept its text and typography throughglyph/classNameand took a purely additive delta).No recommendation offered — the empty-collection vs empty-value distinction is a design call, and it likely applies to more than this one site once someone looks.
Reachability
@object-ui/app-shellalready declares@object-ui/componentsatworkspace:*, andAgentPreview.tsxsits in the same tree as two files this class already converted, so no manifest edge is involved either way.Dedup
Ran. Single-token
search_issuesforAgentPreviewagainst this repo returnstotal_count: 0. Per objectui#8504's instrument note, a zero on this repo's issue search is only a reading once a lit control fires in the same session:InspectorSelectFieldreturned 3 (#8450, #8488, #3306) — the same count that card recorded — so the zero is an absence, not a dead instrument.Related
objectui#8504 / PR #8518 (the six carriers, this one excluded by scope) · objectui#8491 / PR #8503 (the original five) · the
DetailSection/HeaderHighlightcard (thearia-labelled half) · the pending triage card for the 41 bare em-dash ternary fallbacks — this finding is not one of those 41 either; it is a tenth site that no instrument in the thread has counted.