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
showcase: ContactViews is exported but never registered in objectstack.config.ts — the docs' canonical "create form ≠ edit form" example does not run #5420
examples/app-showcase/src/ui/views/contact.view.ts declares ContactViews
(default grouped edit form with four named sections + a sparse formViews.create + the addRecord: { mode: 'form', formView: 'create' }
binding on the list). src/ui/views/index.ts re-exports it.
examples/app-showcase/objectstack.config.ts does not:
line 23: import { TaskViews, ProjectViews, InquiryViews, BusinessUnitViews } from './src/ui/views/index.js';
line 196: views: [TaskViews, ProjectViews, InquiryViews, BusinessUnitViews],
ContactViews is in the barrel and missing from both the import list and the views array. There is no directory-scan auto-registration for views (the CLI
reads the config's views array; nothing in packages/cli/src globs src/ui/views), so the container never reaches the stack.
Why it matters
The app DOES navigate to the object: src/ui/apps/index.ts:53 ships { id: 'nav_contacts', type: 'object', objectName: 'showcase_contact', … }.
So the Contacts nav item renders a derived default list/form rather than the
authored ones, and addRecord.formView: 'create' never binds — the "create
entry point uses the slim hand-shaped form" behaviour the file's own header
comment describes is not what the running showcase does.
content/docs/ui/create-vs-edit-form.mdx:106 links this exact file as the
live reference implementation ("full edit form + sparse formViews.create + addRecord binding"). Prime Directive chore: version packages #10's corollary — never advertise a
capability the runtime does not actually deliver — is the rule being bent
here: the metadata is correct, it just isn't wired in.
Every static pass over the showcase stack (os validate, os lint, os i18n extract, coverage) sees a stack without those four named sections,
so the surface is unexercised by any gate.
Repro
grep -n "ContactViews" examples/app-showcase/objectstack.config.ts → no match,
while grep -rn "ContactViews" examples/app-showcase/src → the barrel and the
declaration only.
Suggested fix
Add ContactViews to the import on line 23 and to views: on line 196, then
re-run the showcase's pnpm verify — the object nav's list/form will start
rendering the authored container, which is also what makes the four named form.sections reachable to the i18n walker and the reference validator.
Found while implementing #5415 (out of scope there: that PR is packages/lint
only, and its fixture imports the view module directly, so the fix does not
depend on the showcase registration). Verified against origin/main 9fad07f66.
examples/app-showcase/src/ui/views/contact.view.tsdeclaresContactViews(default grouped edit
formwith four named sections + a sparseformViews.create+ theaddRecord: { mode: 'form', formView: 'create' }binding on the list).
src/ui/views/index.tsre-exports it.examples/app-showcase/objectstack.config.tsdoes not:ContactViewsis in the barrel and missing from both the import list and theviewsarray. There is no directory-scan auto-registration for views (the CLIreads the config's
viewsarray; nothing inpackages/cli/srcglobssrc/ui/views), so the container never reaches the stack.Why it matters
src/ui/apps/index.ts:53ships{ id: 'nav_contacts', type: 'object', objectName: 'showcase_contact', … }.So the Contacts nav item renders a derived default list/form rather than the
authored ones, and
addRecord.formView: 'create'never binds — the "createentry point uses the slim hand-shaped form" behaviour the file's own header
comment describes is not what the running showcase does.
content/docs/ui/create-vs-edit-form.mdx:106links this exact file as thelive reference implementation ("full edit form + sparse
formViews.create+addRecordbinding"). Prime Directive chore: version packages #10's corollary — never advertise acapability the runtime does not actually deliver — is the rule being bent
here: the metadata is correct, it just isn't wired in.
os validate,os lint,os i18n extract, coverage) sees a stack without those four named sections,so the surface is unexercised by any gate.
Repro
grep -n "ContactViews" examples/app-showcase/objectstack.config.ts→ no match,while
grep -rn "ContactViews" examples/app-showcase/src→ the barrel and thedeclaration only.
Suggested fix
Add
ContactViewsto the import on line 23 and toviews:on line 196, thenre-run the showcase's
pnpm verify— the object nav's list/form will startrendering the authored container, which is also what makes the four named
form.sectionsreachable to the i18n walker and the reference validator.Found while implementing #5415 (out of scope there: that PR is
packages/lintonly, and its fixture imports the view module directly, so the fix does not
depend on the showcase registration). Verified against
origin/main9fad07f66.