Repository navigation
docs(ui-merge): merge the 46 objectui field, Console-behaviour and schema pages into the objectstack docs (K2) - #27170
Merged
Merged
Conversation
…tui field pages into field-types Claude-Session: https://claude.ai/code/session_01L9qibzFEhNgS8KGkqBsQFu Co-authored-by: Claude <noreply@anthropic.com>
…e, notification and predicate-failure guides Claude-Session: https://claude.ai/code/session_01L9qibzFEhNgS8KGkqBsQFu Co-authored-by: Claude <noreply@anthropic.com>
…data-diagnostics and Studio console guides Claude-Session: https://claude.ai/code/session_01L9qibzFEhNgS8KGkqBsQFu Co-authored-by: Claude <noreply@anthropic.com>
…d branding into apps Claude-Session: https://claude.ai/code/session_01L9qibzFEhNgS8KGkqBsQFu Co-authored-by: Claude <noreply@anthropic.com>
…etails into dashboards, print-pages and react-pages Claude-Session: https://claude.ai/code/session_01L9qibzFEhNgS8KGkqBsQFu Co-authored-by: Claude <noreply@anthropic.com>
…nd list-block behaviour into pages Claude-Session: https://claude.ai/code/session_01L9qibzFEhNgS8KGkqBsQFu Co-authored-by: Claude <noreply@anthropic.com>
…skill into forms, create-vs-edit-form and ai/skills Claude-Session: https://claude.ai/code/session_01L9qibzFEhNgS8KGkqBsQFu Co-authored-by: Claude <noreply@anthropic.com>
…tes into actions Claude-Session: https://claude.ai/code/session_01L9qibzFEhNgS8KGkqBsQFu Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01L9qibzFEhNgS8KGkqBsQFu Co-authored-by: Claude <noreply@anthropic.com>
…pe, and drop a reserved word from the page-header table Claude-Session: https://claude.ai/code/session_01L9qibzFEhNgS8KGkqBsQFu Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01L9qibzFEhNgS8KGkqBsQFu Co-authored-by: Claude <noreply@anthropic.com>
Contributor
📓 Docs Drift CheckNothing in this diff resolved to a documentable surface (no symbol, route or SDK anchor derived from 0 changed package(s)), so this run has no opinion about the docs. What this run could not see
Coarse fallback — 0 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): |
os-zhuang
approved these changes
Oct 28, 2026
os-zhuang
marked this pull request as ready for review
October 28, 2026 09:08
os-zhuang
enabled auto-merge
October 28, 2026 09:08
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.
Requested by Tesla · project thread
Fixes #27141
维护者速读
ui/content/docs;与 spec 冲突的说法(如menu、grid字段类型、${}写的 visibleWhen、旧 report/action 组件形状)一律未搬。回滚即还原本 PR。content/docs/ui/console.mdx、content/docs/ui/studio.mdx。pnpm --filter @objectstack/docs build绿;打开 /docs/ui/console、/docs/ui/studio、/docs/data-modeling/field-types 看渲染。What changes
Card K2 of the objectui.org docs fold. The 46 pages the card names are merged into the existing objectstack pages: only what the target lacked (widget and display behaviour, Console interaction, worked examples) was carried, rewritten as plain code blocks; what the target already says was dropped; where the two disagreed the target's wording was kept; and every carried claim was read against
packages/spec, so an objectui claim that contradicts the spec was dropped or corrected, not merged.data-modeling/field-types.mdxkeeps one page with per-type In the Console paragraphs and a new How the Console renders a field section, so its existing anchors survive.ui/console.mdx(how the Console renders metadata, per-user state, predicate failures) andui/studio.mdx(access and package scope, drafts, object design, the Flow Designer, metadata diagnostics). Both are listed inui/meta.jsonand the module index.ui/print-pages.mdxandui/react-pages.mdxare now the single page for their topic.ui/content/docs/,ui/apps/siteorcontent/docs/sdk/is touched; K4 retires the old pages and adds redirects from the table below.Old path → target (46 rows)
ui/content/docs/…)content/docs/…)fields/auto-numberdata-modeling/field-types.mdx#autonumberfields/booleandata-modeling/field-types.mdx#booleanfields/currencydata-modeling/field-types.mdx#currencyfields/datedata-modeling/field-types.mdx#date,#deadlines-duelike-and-settledwhendueLike/settledWhendeadline renderingfields/datetimedata-modeling/field-types.mdx#datetimefields/emaildata-modeling/field-types.mdx#emailmailto:link when read-only and in gridsfields/filedata-modeling/field-types.mdx#media-types,#filesys_fileid(s); upload refusal;maxSizechecked before upload; restricted files (metadataRefused) draw a lock; legacy inline objects still render; list displayfields/formuladata-modeling/field-types.mdx#formulareturnTypefields/griddata-modeling/field-types.mdx#master_detailgridis not a specFieldType, so the page's widget content went to themaster_detailinline grid (InlineGridColumnSchemacolumns, derived columns, ordering). Dropped:gridas a field typefields/imagedata-modeling/field-types.mdx#imageacceptdefaults toimage/*fields/locationdata-modeling/field-types.mdx#locationfields/lookupdata-modeling/field-types.mdx#lookuplookupColumns(string widths),lookupPageSize,displayField/descriptionField, quick create (allowCreate), dependent lookups. Dropped:reference_field,avatar_field, pickersubtitle(not spec keys)fields/numberdata-modeling/field-types.mdx#number,#what-a-number-input-silently-rewritesstep), theuseGroupingtable, what a native number input announces and silently rewritesfields/objectdata-modeling/field-types.mdx#jsonjson,compositeandrecordshare a JSON text editor; what it accepts and refusesfields/passworddata-modeling/field-types.mdx#passwordfields/percentdata-modeling/field-types.mdx#percentscaleas displayed decimals and input step; the fraction-vs-whole storage rulefields/phonedata-modeling/field-types.mdx#phonetelinput and link. Dropped: the input mask (the widget reads noformatmask)fields/rich-textdata-modeling/field-types.mdx#richtextmarkdown/html/richtext, and whattypechangesfields/selectdata-modeling/field-types.mdx#selectvisibleWhen/dependsOn), server enforcement of the option setfields/summarydata-modeling/field-types.mdx#summaryfields/textdata-modeling/field-types.mdx#textplaceholderfields/textareadata-modeling/field-types.mdx#textarearowsas the editor heightfields/timedata-modeling/field-types.mdx#timeHH:mminputfields/urldata-modeling/field-types.mdx#urlhttp(s)values become linksfields/userdata-modeling/field-types.mdx#userfields/vectordata-modeling/field-types.mdx#vectorfields/widget-propsdata-modeling/field-types.mdx#how-the-console-renders-a-fieldwidget, the shared empty-value affordance. Not carried: theFieldWidgetComponentPropsAPI detail beyond one sentence (SDK)guide/consoleui/console.mdx(new),ui/studio.mdx(new)guide/metadata-diagnosticsui/studio.mdx#metadata-diagnostics,ui/console.mdx#when-a-predicate-cannot-be-evaluated_diagnosticsenvelope, the sweep endpoint and its response (statsincludeslocked), the four Studio surfaces, CEL lint on drafts, the runtime fail-open / fail-closed table, submit refusal, blank rules. Corrected: the/api/v1/meta/items/…paths (no such route) andos check(the command isos validate). Not carried:MetadataClient/useGlobalDiagnostics(SDK)guide/flow-designerui/studio.mdx#the-flow-designerconfigSchemaforms, approver values, decision branches, assignments), the four panelsguide/notificationsui/console.mdx#notificationsNotificationSchemais not in the spec)guide/slotted-pagesui/pages.mdx#record-pagesrelatedList: 'primary', Attachments, width-based layout), the slot table, the discussion panel andenable.feeds, related-list gating, paging and action ids, header action placement and the refresh button. Corrected:details+tabsare refused together (the spec), not "tabs wins". Dropped:relatedLayout(not a spec key) and the@object-ui/plugin-detailsub-builders (SDK)guide/record-edit-modesui/create-vs-edit-form.mdx#modal-or-page-editmodeeditMode(modal/page), the page routes,navigate_create/navigate_editbuttons withproperties.paramstemplatesguide/designing-app-navigationui/apps.mdx#designing-the-navigationviewName/filters/ page entries, the rule of least power, label fallback. Dropped: "menuis deprecated legacy" (the spec refusesmenu)guide/dashboard-filtersui/dashboards.mdx#filter-controls-and-options,#in-the-consoleoptionsFrom, theobjecttranslation key, symbolic presets,page.dateRangeshape, nested variable scopes, the Studio bindings inspector, Refresh All. Not carried: the tutorial steps the target already coversguide/public-formsui/forms.mdx#6-internal-forms-_consoleformsname/apps/:appName/forms/:name, heading resolution, Cancel. Not carried:EmbeddableForm(SDK component, its own security options)guide/user-state-persistenceui/console.mdx#what-each-users-own-state-keepsguide/expressionsui/pages.mdx#expression-holes-in-element-properties${…}holes in element properties, their roots, locale maps, what an unresolved hole renders. Dropped: the JS-style${…}visibleWhen/hidden/disabledexamples (the spec makes those CEL predicates) and thePredicateScopeProvider/ evaluator API (SDK)guide/print-pagesui/print-pages.mdx#print-in-the-browserguide/react-pagesui/react-pages.mdx,ui/pages.mdx#list-blocks-in-a-region<box>as the html-tier wrapper, no raw-HTML block; list-block sizing in regions and tab badges. The rest the target already says. Merged into the one pageguide/agent-skillsai/skills.mdx#the-skill-catalogobjectuiskill ships in@objectstack/skills, its structure and its boundary. Dropped: thenpx skills add objectstack-ai/objectuiinstall (the catalog installs from npm)core/app-schemaui/apps.mdx#action-navigationactionnavigation item. Dropped:AppComponentSchema(menu,path,layout,hidden: '${…}'), which the spec'sAppSchemarefusescore/report-schemaui/reports.mdx@object-ui/types'ReportComponentSchema(inlinefields,filters,schedule,exportConfigs), which the spec's dataset-boundReportSchemadoes not acceptcore/enhanced-actionsui/actions.mdx#collect-input-and-shape-the-uxvisible;successMessage{{ }}holes,outcomeMessages,onSuccess. Dropped:ajax/confirm/dialogaction types,chain,condition,tracking,retry(the@object-ui/typesActionSchema, not the spec's)core/theme-schemaui/apps.mdx#brandingaccentColor, the--primary/--accentmapping, the single logo asset, no theme document in metadata. Not carried:ThemeProvider/useTheme/ theThemedocument (React SDK; the spec retired its theme module)layout/page-headerui/pages.mdx#the-page-header,ui/actions.mdx#permissions-and-visibilityactionsas the whole id set, the record chip, the one-<h1>rule; relation fields bind as their id andcurrent_user.can/hasCapabilitygates. Not carried: Tailwind class lists and the ReactPageHeaderexport. Corrected:os.userexamples tocurrent_userscripts/docs-audit/handwritten-docs.jsongains the two new pages, whichcheck:docs-audit-scoperequires of any new hand-written page.Why
objectui.org folds into the objectstack docs site (Tesla's option B on the fold evaluation). Metadata authors and Console users read objectstack.ai/docs, and today half of a field's or a page's behaviour lives on a site that goes away with the fold.
Tests
Docs only: no code, no test changes. The carried claims were checked by reading
packages/spec(Zod schemas and their descriptions) and, for routes and commands, the server and CLI sources; the corrections are named in the rows above.Verification
pnpm --filter @objectstack/docs build: exit 0.node scripts/pm/dispatch-gates.mjs --commandsderives 53 command families for this diff; all 53 ran locally with exit 0 (--ranreconciliation: 53 derived, 53 run, 0 NOT-MEASURED, 0 UNRUN), includingcheck:docs,check:doc-authoring,check:doc-anchors,check:doc-frontmatter,check:docs-redirects,check:docs-single-h1,check:docs-spec-enumerations,check:doc-formula-expressions,check:doc-security-postureandcheck:skill-examples(270 prose examples type-check).editModeexample object declared nosharingModel.Acceptance notes
packages/spec; where an objectui page did, the claim was dropped or corrected, and the row says so.consoleandstudiotocontent/docs/ui/meta.json; whichever lands second mergesmain.Clause-②: no
Metadata-protocol: none
Human Minimum
packages/specholds no runtime logic. (Not touched.)pnpm lintwas not run locally; this diff is MDX, JSON and one audit list, and CI runs the lint lanes.)main, one pull request.skip-changeset.)packages/spectouched: its generated artifacts are regenerated and committed. (Not touched.)content/docs/references/,packages/*/CHANGELOG.mdorcontent/docs/releases/.Generated by Claude Code