Uh oh!
There was an error while loading. Please reload this page.
docs(plugin-grid): make the two "Interactive Examples" real object-grid nodes - #6028
Merged
Merged
Conversation
The `plugin-grid` category was the last `plugin-*` category whose entries were
pictures of the component rather than the component. `product-inventory-grid`
and `team-members-grid` authored only `badge button card flex stack text` and
sat on `content/docs/plugins/plugin-grid.mdx` inside a
`PluginLoader plugins={['grid']}` wrapper neither of them used.
Replaced by two entries that query the docs gallery's demo data source through
the registered `object-grid` renderer, the way objectui#5113 did for
`object-view`. The two mock-ups are re-seated into `components-layout-card`
rather than deleted, so none of the three corpus-wide counters moves.
objectui#5113's pin is extended to `plugin-grid` via an explicit two-entry
category/type map, keeping both halves: structure and the gallery-only record.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CSoz9uGhaaSgiq3hshtN7Lyinlianghui
marked this pull request as ready for review
August 24, 2026 14:03
Uh oh!
There was an error while loading. Please reload this page.
This was referenced Aug 25, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes#5856
plugin-gridwas the lastplugin-*catalog category whose entries were pictures of the component rather than the component. Both entries sat oncontent/docs/plugins/plugin-grid.mdxinside aPluginLoader plugins={['grid']}wrapper neither of them used. This reuses the shape #5857 landed forplugin-viewone category over.The type-set walk, re-run on this branch's merge-base
The issue's reading was taken on the #5113branch, so it was re-measured on
d2fb6efb4rather than inherited:Unchanged, and every other
plugin-*category already authors a type its own package registers. Premise confirmed.What changed
Two real entries.
plugin-grid/object-grid-columnsauthors aListColumnset carryinglabel/width/align/ celltype/link, withsort,searchableFieldsandpaginationshaping the query.plugin-grid/object-grid-selection-summariesadds multi-rowselection, namedrowActions/bulkActionsand per-column footersummaryroll-ups. Both query the docs gallery's demo data source through the registered renderer. Nofilteris authored, for the reason #5857 gave: the fixture answers$searchand$orderbybut not$filter, and an example authoring a parameter the fixture ignores is a lie on the page.The two mock-ups are re-seated, not deleted —
components-layout-card/inventory-table-cardandcomponents-layout-card/team-roster-card. They are legitimate hand-composed card layouts that were merely filed under the wrong plugin, and this is the half of the card that keeps the three corpus-wide counters still (below).The pin is extended, not replaced.#5113's
catalog-gallery-render.test.tsxpin now runs over an explicit two-entry map, keeping both of its halves per category:It is deliberately not generalized to all of
plugin-*. #5113 scoped it per-category because the general rule needs a per-plugin map of which types each package registers, and it namedplugin-gridas the specific reason the rule could not be turned on. This card removes that obstacle, so generalizing is now possible and is filed as its own card (#6024) rather than done here behind an exemption list.One assertion is new rather than inherited: the type is asserted to be registered before the render case runs. The gallery's registration of
object-gridis transitive —HOST_PACKAGESdoes not name@object-ui/plugin-grid, and the type arrives only because@object-ui/plugin-viewimportsObjectGridfrom it. That is load-bearing and invisible, so it gets its own case with its own message.The three counters are unchanged, and no floor was edited
Deleting a catalog entry moves
NODE_CENSUSinlayout-dom-leak-5574.test.tsxand two floors inlayout-props-conversion.test.tsx. Measured straight off the schema JSON, before and after:flex/stack/container/grid/textclassName(floor 175)stacknodes (floor 153)object-gridnodesNODE_CENSUSis asserted withtoEqual, not as a floor, so the suite passing green is the proof it did not move. Only the two intended deltas are non-zero.Verification
Direction predicted before running, both legs mutated under
trap … EXIT INT TERM, each mutation proved on disk by grepping the injected text and separately the removed text,git diff HEAD --statempty after each.Reverse-verification — revert
object-grid-columnsto the hand-built layout. Predicted both halves red; observed exactly that:The same run confirms the card's own warning empirically — the pre-existing sweep is blind to this defect by construction:
Counter-probe (a) — an entry that authors
object-gridbut is wired to inlinedata: { provider: 'value', items: [...] }. Predicted structure green, data red; observed exactly that, so the pin cannot pass on a grid wired to nothing:Counter-probe (b) — the three
plugin-viewentries #5857 landed all still run and pass under the generalisation, so the pin was extended rather than replaced.Gates, on
8d0a3502eEach quotes its own verdict line; exit codes captured before any pipe.
vitest run examples/schema-catalog+ the two counter suitesTest Files 12 passed (12)/Tests 1668 passed (1668)node scripts/check-doc-component-types.mjs✅ Every documented component type is registered.node scripts/check-doc-snippet-types.mjsEvery covered documentation snippet compiles against the built types.node scripts/check-doc-links.mjsLinks are valid across 13 scan roots.node scripts/check-changeset-presence.mjs✅ No source of a released package changed in this range, so no changeset is owed.regenerate:checkexamples/schema-catalog/src/index.ts is up to date (428 entries).type-check(tsc --noEmit+ test project)lintindex.tsheader)check-doc-snippet-typesfirst reported[unbuilt-package]for 20 packages — a fresh-worktree precondition, not a finding. The build was run under the container's shared verify lock (VERDICT command-exit 0, held 5m10s) and the gate then ran for real:148 of 148 block(s) judged, 0 failed.A changeset is included with empty frontmatter — this repo's "releases nothing" declaration — because the gate reports nothing owed: docs and catalog fixtures only, no released package source touched.
Findings filed, out of scope here
plugin-*category — #5856 removed its last obstacle #6024 — generalize this pin to everyplugin-*category. plugin-view 文档页的三个 "Interactive Examples" 没有一个用到 object-view —— 都是手搭的静态卡片版面,且 id 沿用虚构的 viewMode 三分法 #5113 left it per-category because the general rule needs a per-plugin map of which types each package registers, and namedplugin-gridas the specific reason it could not be turned on; this card removed that last obstacle. The finding records what still has to be decided —plugin-chartsauthors two types, and the RENDER half does not transfer to the categories that are not object-bound.object-gridonly transitively —registerCatalogBlocks.tsnever imports@object-ui/plugin-grid#6025 — the gallery registersobject-gridonly transitively, viaplugin-view's component import.registerCatalogBlocks.tsnever names@object-ui/plugin-grid. Latent rather than broken, andapps/site/**is outside this card's file surface.Generated by Claude Code