Repository navigation
test(app-shell): move the objectui#12393 grid pins out of plugin-list so its type-check stops compiling plugin-grid (objectui#12422) - #12435
Merged
objectstack-fleet[bot] merged 2 commits intoOct 15, 2026
Conversation
… (objectui#12422) plugin-list's ListView.gridRowColorSelect-12393 pin imported `../../../plugin-grid/src/ObjectGrid` across a package boundary, so plugin-list's tsconfig.test.json program compiled ObjectGrid.tsx and its `@object-ui/plugin-detail` import while plugin-list declares neither package. turbo's `type-check` dependsOn `^build` therefore never ordered plugin-detail#build first, and the check went red whenever that build re-ran in the same turbo run. The file moves verbatim (assertions unchanged) to app-shell, which already declares both @object-ui/plugin-list and @object-ui/plugin-grid, and imports each by package name. Claude-Session: https://claude.ai/code/session_01XVp19E1MYUTFM3dnkwz8gB Co-authored-by: Claude <noreply@anthropic.com>
…le moved (objectui#12422) Claude-Session: https://claude.ai/code/session_01XVp19E1MYUTFM3dnkwz8gB Co-authored-by: Claude <noreply@anthropic.com>
Contributor
✅ Console Performance Budget
The eager closure is every chunk the entry reaches through static imports — what the browser fetches and parses before the app renders. The entry chunk on its own is a small fraction of it. 📦 Bundle Size Report
Size Limits
|
objectstack-fleet
Bot
deleted the
claude/issue-12422-cross-package-pin
branch
October 15, 2026 06:19
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 free
to 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 #12422
Clause-②: no
What changed
packages/plugin-list/src/__tests__/ListView.gridRowColorSelect-12393.test.tsxmoves topackages/app-shell/src/__tests__/ListView.gridRowColorSelect-12393.test.tsx. It now importsListViewfrom@object-ui/plugin-listandObjectGridfrom@object-ui/plugin-gridby package name. No relative import crosses a package boundary.$selectfamily enumeration pin, withGRID_BINDINGS,NOT_GRID_BINDINGSand every assertion. Only the import block and two header-comment sentences changed. The header comment now says the real grid is registered by the import and that the stub replaces it, and it names the package that holds the objectui#12376 sibling pin..changeset/12422-cross-package-pin.md, an empty-frontmatter changeset. Only a test moves, and no published file changes.Why app-shell
@object-ui/app-shellalready declares both@object-ui/plugin-listand@object-ui/plugin-grid, and through them@object-ui/plugin-detail. That is the route the ruling prefers: no new dependency edge. Measured:@object-ui/app-shell,@object-ui/consoleand@object-ui/example-console-starter.plugin-view: declaresplugin-gridbut notplugin-list, so the card's suggested A1 home does not qualify.packages/app-shell/src/__tests__/listViewGroupedSearch-11021.test.tsxalready composesListViewwith the real grid in the same way..test.tsxfiles run in the same rootdomproject (vitest.setup.dom-light.tsx,isolate: true) as plugin-list's did. The file's ownvi.mock('@object-ui/permissions')and its stub registration work there unchanged.No new dependency is declared, so the four-axis framework is not needed for this route.
The order question from #12424
plugin-list#type-checkcould start before, or without,plugin-detail's types:turbo.jsonorderstype-checkby^build, and that covers only declared dependencies.plugin-listdeclares neitherplugin-gridnorplugin-detail. The relative import putplugin-grid/src/ObjectGrid.tsxintoplugin-list'stsconfig.test.jsonprogram anyway, and its@object-ui/plugin-detailimport resolved through adistthat nothing ordered.plugin-detail(a cache MISS), as on PR fix(providers): type the upload adapter's scope from the spec's UploadScope (objectui#12055) #12428.plugin-list's program reads noplugin-gridorplugin-detailfile. The new home'stype-checkhasplugin-gridandplugin-detailin its declared^buildclosure, so turbo orders both builds first.Proof
All runs are in the worktree at the noted sha.
7010215bd: the worktree had nodistunder any package (ls -d packages/*/distgave 0). Thenpnpm --workspace-concurrency=2 --filter '@object-ui/plugin-list^...' buildran. That closure contains neitherplugin-detailnorplugin-grid, andls -d packages/plugin-detail/dist packages/plugin-grid/distsaid both were absent.pnpm --filter @object-ui/plugin-list type-checkthen exited 0.cfbca7f5b(origin/main) copy of the pin was put back intoplugin-list/src/__tests__/as an untracked file.tsc -p tsconfig.test.jsonexited 2 with exactly the CI diagnostics:ObjectGrid.tsx(71,8): TS2307Cannot find module '@object-ui/plugin-detail';(5575,79)and(5628,84): TS2345.git statuswas empty afterwards.tsc -p tsconfig.test.json --listFilesinplugin-listread 1628 files. 0 of them matchplugin-grid, and 0 matchplugin-detail.513ddc450:pnpm exec vitest run packages/app-shell/src/__tests__/ListView.gridRowColorSelect-12393.test.tsxgaveTests 2 passed (2), in thedomproject.scripts/ablation-replace.mjs, which checks the mutation and the restore against the disk....concurrencyFields, ...rowColorFields];became...concurrencyFields];inObjectGrid.tsx. The anchor count went from 1 to 0, and the blob from5630d589df84to291195782633.expected [ 'approver', 'id', 'locked', …(2) ] to deeply equal ArrayContaining{…}.expected [ 'due_date', 'stage', 'tier' ] to deeply equal [ 'due_date', 'stage' ].5630d589df84(the HEAD blob), andgit diff HEADis empty.@object-ui/plugin-gridtosrc, so the mutation reached the test without a rebuild.type-check:pnpm --filter @object-ui/app-shell type-checkexited 0 at513ddc450, afterpnpm --workspace-concurrency=2 --filter '@object-ui/app-shell^...' build. Itstsconfig.test.json--listFilesincludes the moved file once.__tests__directory: 21 of 22 files passed, and 435 of 436 tests. The one failure isentryRegistersBuiltinDesigners-11939.test.tsx, avi.waitForon a lazy chunk under a loaded box. It passed when run alone, and thedomproject isisolate: true, so it does not interact with the moved file. See the Acceptance notes.--no-inline-config --format json. It checked 1 file and found 0 errors and 8 warnings, allno-explicit-any, the same lines as before the move.check:phantom-deps,self-import,unreferenced-sources,doc-example-readers,handler-key-reads,side-effects-array;element-data-source-declaration,spec-symbols,action-forward-parity,designer-field-key-parity,icon-record-names;i18n-keys,i18n-drift,i18n-designer-parity,control-bytes,test-path-roots;vi-mock-specifiers,vi-mock-inherit,vi-mock-override-shape,changeset-claims;node scripts/check-changeset-fixed.mjsandnode scripts/check-changeset-presence.mjs.Acceptance notes
packages/plugin-grid/src/__tests__/rowColorProjection-12393.test.tsx:23cites the moved file by its bare name, which is unchanged, so the citation still holds. It is outside this card's file surface and was left as is.app-shell'sentryRegistersBuiltinDesigners-11939.test.tsxfailed once under load and passed when run alone. It matches the AGENTS.md shape of a lazy import racing a boundedwaitFor. It was not filed here: it is not reproduced, and no owner is named.Generated by Claude Code