What happens
Showcase dashboards at ~200-290px widget width (three-column dashboard grid in an ~800px console):
| widget | bars | x labels drawn |
|---|
| Delivery Operations → Projects by Health | 3 | Yellow only |
| Delivery Operations → Tasks by Status | 5 | Backlog, To Do |
| Chart Gallery → Tasks by Status | 5 | Backlog, To Do |
| Chart Gallery → Tasks by Priority | 4 | High, Urgent |
| Chart Gallery → Hours by Status (horizontal) | 5 | all 5 |
report Hours by Status (Chart) at ~650px | 5 | all 5 |
So a categorical bar chart becomes unreadable exactly where dashboards put it: the bars have no names, and the legend does not help because a single-series bar chart has none. The thinning is width-driven (the same chart in the wide report view keeps every label) and only affects the vertical orientation.
Expected
Categorical axes keep every label while there is room to rotate or wrap them (3-5 rotated labels fit easily in 200px); thinning should be the last resort and should never leave bars without a name when a tooltip-free surface (screenshot, print, big-screen page) is the consumer. Rotate → shrink → truncate with ellipsis → thin, in that order.
Related polish seen on the same widgets (can ride along or split): count y-axes use fractional ticks (0 / 0.8 / 1.5 / 2.3 / 3) for integer data; radar and funnel labels clip (gent, In Revie); the sankey draws no node labels at all.
objectui @ 67dadd6, objectstack main @ a39b02a6b. Found during the objectstack pin-bump dogfood (objectstack#14295).
Generated by Claude Code
What happens
Showcase dashboards at ~200-290px widget width (three-column dashboard grid in an ~800px console):
YellowonlyBacklog,To DoBacklog,To DoHigh,UrgentHours by Status (Chart)at ~650pxSo a categorical bar chart becomes unreadable exactly where dashboards put it: the bars have no names, and the legend does not help because a single-series bar chart has none. The thinning is width-driven (the same chart in the wide report view keeps every label) and only affects the vertical orientation.
Expected
Categorical axes keep every label while there is room to rotate or wrap them (3-5 rotated labels fit easily in 200px); thinning should be the last resort and should never leave bars without a name when a tooltip-free surface (screenshot, print, big-screen page) is the consumer. Rotate → shrink → truncate with ellipsis → thin, in that order.
Related polish seen on the same widgets (can ride along or split): count y-axes use fractional ticks (0 / 0.8 / 1.5 / 2.3 / 3) for integer data; radar and funnel labels clip (
gent,In Revie); the sankey draws no node labels at all.objectui @ 67dadd6, objectstack
main@ a39b02a6b. Found during the objectstack pin-bump dogfood (objectstack#14295).Generated by Claude Code