Found while implementing #15462 (PR #15507). Out of scope there: that card's ruling scoped both new ids to the CHART family, and this is the same unreported degradation on every OTHER widget family.
What is unreported
Read at the @object-ui revision this repo pins (.objectui-sha = 00d3f09c500c4a45b5f27aca8af80349412faaf1), packages/plugin-dashboard/src/DatasetWidget.tsx:683:
if (values.length === 0) {
return ... tt('dashboard.pickMeasures', 'Pick measures (values) for this dataset widget.') ...
}
That return is type-independent and stands above every family branch — isMetric (:423), isTable (:424) and the chart branch alike (:702, :798, :854). So a metric, kpi, gauge, solid-gauge, bullet, table or pivot widget that selects no measures renders the authoring placeholder too: the KPI number the author asked for is not drawn at all.
Nothing reports it. In packages/lint/src/validate-widget-bindings.ts:
A metric tile is the single most common widget on a shipped board (the platform's own system_overview has six), and the failure direction is the family docblock's own: the tile is not merely wrong, it is missing, and a missing tile on a dashboard reads as "nothing to report".
The decision this needs
Whether it is one id or two, and at which tier:
- A. Widen
chart-measures-missing's population from the chart family to every widget family, and re-word its message (it currently says "no chart is drawn"). Cheapest, but the id then names a condition that is no longer chart-specific.
- B. A second id for the non-chart families (e.g. a
widget-measures-missing), leaving chart-measures-missing exactly as ruled. One id per class, which is how this family is built.
- C. Nothing — an empty selection is a work-in-progress state, and the chart-family ruling was about a chart being replaced, not about a widget being unfinished.
Tier, on the #15462 precedent: warning, suppressible, so a half-authored board still builds.
Filed unassigned and unlabeled for triage — not started, no branch.
Generated by Claude Code
Found while implementing #15462 (PR #15507). Out of scope there: that card's ruling scoped both new ids to the CHART family, and this is the same unreported degradation on every OTHER widget family.
What is unreported
Read at the
@object-uirevision this repo pins (.objectui-sha=00d3f09c500c4a45b5f27aca8af80349412faaf1),packages/plugin-dashboard/src/DatasetWidget.tsx:683:That return is type-independent and stands above every family branch —
isMetric(:423),isTable(:424) and the chart branch alike (:702,:798,:854). So ametric,kpi,gauge,solid-gauge,bullet,tableorpivotwidget that selects no measures renders the authoring placeholder too: the KPI number the author asked for is not drawn at all.Nothing reports it. In
packages/lint/src/validate-widget-bindings.ts:chart-measures-missing(A dashboard chart widget that selects no measures — or no dimensions — degrades visibly in the renderer and no lint rule reports it #15462, PR feat(lint): report a chart widget that selects no measures — or no dimensions (#15462) #15507) is scoped to the chart family by that card's ruling — it is silent here by design;table-count-onlyrequiresvalues.length > 0before it looks;dimensions[]/values[], so an empty array is silent by construction;widget-dataset-unknownonly asks whether thedatasetresolves.A
metrictile is the single most common widget on a shipped board (the platform's ownsystem_overviewhas six), and the failure direction is the family docblock's own: the tile is not merely wrong, it is missing, and a missing tile on a dashboard reads as "nothing to report".The decision this needs
Whether it is one id or two, and at which tier:
chart-measures-missing's population from the chart family to every widget family, and re-word its message (it currently says "no chart is drawn"). Cheapest, but the id then names a condition that is no longer chart-specific.widget-measures-missing), leavingchart-measures-missingexactly as ruled. One id per class, which is how this family is built.Tier, on the #15462 precedent: warning, suppressible, so a half-authored board still builds.
Filed unassigned and unlabeled for triage — not started, no branch.
Generated by Claude Code