Skip to content
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
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

Closed

Description

@yinlianghui

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.

Refs #4600 (measurement, comment 5287946890), framework#3320.


Generated by Claude Code

Activity

  1. self-assigned this
    on Aug 14, 2026
  2. yinlianghui commented on Aug 14, 2026

    @yinlianghui
    ContributorAuthor

    CLAIM — session session_017Qqyix2QcnpUC9XeYVDzx3, branch claude/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 mirroring DashboardRenderer.legacyRetired.test.tsx's 4+2 structure on the GridLayout surface; must-not-change = dataset widgets, options.data provider config, static-data widgets. Mutual exclusion: #4600-(d1)'s seat owns examples/schema-catalog/**, content/docs/**, the plugin README and apps/site — this card owns packages/plugin-dashboard/src/** + its tests only.


    Generated by Claude Code


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions