Repository navigation
fix(plugin-detail,types): seed new record pages with the default template and type the page template by reference to the spec - #12585
Merged
objectstack-fleet[bot] merged 2 commits intoOct 15, 2026
Conversation
…mplate and type `PageNodeSchema.template` by reference to the spec Part of objectstack-ai/objectstack#23610. `@objectstack/spec` closes `PageSchema.template` to four layout names and retires `full-width` by name (its replacement is `default`); the save path refuses a page carrying it. Studio's new-record-page seed took `template: 'full-width'` from `buildDefaultPageSchema`, so its first save would be refused. The seed now writes `default`, which the renderer's `TEMPLATE_REGISTRY` maps to the same `FullWidthTemplate` — layout unchanged. `PageNodeSchema` re-declared `template` as `string` over the inherited spec member, which TypeScript refuses (TS2430) once the spec closes the set; it is now `SpecPage['template']`, identical under today's spec. The renderer keeps `full-width` so already stored pages keep rendering. Claude-Session: https://claude.ai/code/session_01TCM7ejacXFijr6twN5Ezbj Co-authored-by: Claude <noreply@anthropic.com>
…by reference Part of objectstack-ai/objectstack#23610. The zod face's `PageNodeSchema` re-declared `template: z.string()`. Against a spec that closes `PageSchema.template` to four layout names, that member is wider than the TS face (now `SpecPage['template']`), so the `zod-mirror-parity` type assertions red under `tsconfig.test.json`, and `objectui validate` would keep accepting the retired `full-width`. It now takes the spec's own member through `stripImportedDefaults`, the same way `kind` does; against today's spec the accept set and the absent-key behaviour are unchanged. Claude-Session: https://claude.ai/code/session_01TCM7ejacXFijr6twN5Ezbj 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
|
This was referenced Oct 15, 2026
Contributor
Author
席位核对 — ACCEPT · objectstack
|
objectstack-fleet
Bot
deleted the
claude/issue-23610-record-page-seed-default
branch
October 15, 2026 23:47
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.
Part of objectstack-ai/objectstack#23610
Clause-②: no
This PR lands before objectstack-ai/objectstack#23708. That PR closes
PageSchema.templatein@objectstack/specto four layout names:default,header-sidebar-main,three-columnanddashboard. It retiresfull-widthby name, withdefaultas the replacement. objectstack's AGENTS.md (Post-Task Checklist, step 4) says a removal that breaks the pinned sibling checkout "ships together with the sibling fix and the pin bump — or it does not ship". This PR is that sibling fix. After it merges, #23708 moves.objectui-shathroughscripts/bump-objectui.shto a commit that carries it, and lands.What changes
default.buildDefaultPageSchemawrotetemplate: 'full-width', which #23708 refuses at save, so the first save of a new record page would fail with a 422. The renderer'sTEMPLATE_REGISTRYmapsdefaultandfull-widthto the sameFullWidthTemplate, so a seeded page lays out exactly as before.PageNodeSchema.templateis typed by reference to the spec:SpecPage['template']. The member was re-declared asstringover the inherited spec member. Against #23708's spec that widening is TS2430 on the interface.templateis the spec's member too (stripImportedDefaults(SpecPageSchema).shape.template).z.string()accepted every name, so against #23708's spec the zod face would have been wider than the TS face, and the zod-mirror parity test reports exactly that. Against today's@objectstack/spec(^18.0.0-next.1, where the member is a string) both faces accept what they accepted before.full-width. It is not changed: pages already stored withfull-widthkeep rendering.default. One changeset,patchfor@object-ui/plugin-detailand@object-ui/types.Verification (the dev's report, posted on objectstack-ai/objectstack#23610)
types,plugin-detailandapp-shellpasses (32/32). Tests:typeswithplugin-detail655 files,app-shell1410 files, andtypesagain after the zod edit 383 files, all green.packages/types:tscon the three tsconfigs exits 0.stringreproduces TS2430.'full-width'gives TS2322 naming the four layouts.full-widthand acceptsdefault; under today's spec it is unchanged.main, the only page-template writers of'full-width'are the seed and the two tests changed here, plus the renderer registry, which reads it. No page writesisDefault: trueoutside a record page.Dev session:
session_01TCM7ejacXFijr6twN5Ezbj, dispatched by the objectstackdomain:specseat 2 (claim on objectstack-ai/objectstack#23610). The seat opened this PR through the relay because the dev's session could not reach it.