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
{{ message }}
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
Repository navigation
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
[plugin-dashboard] DashboardGridLayout has no legacy-widget fallback — a retired inline-analytics widget renders a silent blank chart where DashboardRenderer shows the rebind prompt #4612
Filed by the PM from the #4600 measure seat's report (§1 secondary finding; OQ1 ruled A). Duplicate-searched: no open issue mentions DashboardGridLayout at filing time.
The defect
The framework#3320 retirement gave DashboardRenderer a legacy sentinel: a widget carrying the retired inline-analytics shape (top-level object + categoryField/aggregate, and the pivot family) selects the LEGACY_RETIRED_WIDGET_SCHEMA placeholder (DashboardRenderer.tsx:142-155, sentinel read at :549, pivot family at :703-709) — a visible "This widget uses a retired data format. Edit it to bind a dataset." tile with a rebind affordance.
DashboardGridLayout — a SEPARATE exported surface used by DashboardWithConfig / editable dashboards — has NO such sentinel. A legacy widget falls through to the static-data branch with data: [] (DashboardGridLayout.tsx:215-225), i.e. a silent blank chart. That is the exact outcome the retirement's own test header says must not happen, and it is worse than the pre-retirement state for the user: no chart, no diagnostic, no path to fix.
Blast radius
Editable dashboards (DashboardWithConfig consumers) rendering any stored dashboard authored before the retirement. DashboardRenderer's own path is fine — the two surfaces just disagree.
Fix shape
Give DashboardGridLayout the same legacy detection and the same placeholder (share the sentinel/placeholder rather than hand-copying it — one detector, two consumers), with a red-first pin mirroring DashboardRenderer.legacyRetired.test.tsx's 4-positive/2-negative structure on the GridLayout surface. Must-not-change: dataset widgets, options.data provider config (a DIFFERENT, live surface — see the #4600 measurement's do-not-conflate note), and static-data widgets keep rendering.
Activity
yinlianghui commentedon Aug 14, 2026
CLAIM — session
session_017Qqyix2QcnpUC9XeYVDzx3, branchclaude/issue-4612-gridlayout-legacy-fallback. Ruling is the issue body's fix shape: ONE shared legacy detector/placeholder (extracted, not hand-copied), two consumers; red-first pin mirroringDashboardRenderer.legacyRetired.test.tsx's 4+2 structure on the GridLayout surface; must-not-change = dataset widgets,options.dataprovider config, static-data widgets. Mutual exclusion: #4600-(d1)'s seat ownsexamples/schema-catalog/**,content/docs/**, the plugin README andapps/site— this card ownspackages/plugin-dashboard/src/**+ its tests only.Generated by Claude Code
Generated by Claude Code
fix(plugin-dashboard): GridLayout shows the retired-format placeholde…
fix(plugin-dashboard): the editable grid renders dataset-bound widget…