Repository navigation
docs(sdk): fold objectui.org into objectstack docs, K1 — move the Object UI SDK guide and 57 renderer-type pages into content/docs/sdk - #27168
Conversation
…content/docs/sdk Claude-Session: https://claude.ai/code/session_01L9qibzngYyRjmvNxjkfVyd Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01L9qibzngYyRjmvNxjkfVyd Co-authored-by: Claude <noreply@anthropic.com>
…nces, named sections, audit scope Claude-Session: https://claude.ai/code/session_01L9qibzngYyRjmvNxjkfVyd Co-authored-by: Claude <noreply@anthropic.com>
…nd prose Claude-Session: https://claude.ai/code/session_01L9qibzngYyRjmvNxjkfVyd Co-authored-by: Claude <noreply@anthropic.com>
📓 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): |
|
This is the known, expected red named in the PR body's first Acceptance note. Five
The gate's own remedy for this kind is Generated by Claude Code |
… a list-shaped key from the detail-view example Claude-Session: https://claude.ai/code/session_01L9qibzngYyRjmvNxjkfVyd Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01L9qibzngYyRjmvNxjkfVyd Co-authored-by: Claude <noreply@anthropic.com>
The 29 remaining occurrences are SDK API keys that docs cannot rename: the ai SDK chat message key in plugin-chatbot (24) and the ARIA role DOM key (5). Baselined with check-role-word.mjs --update at the maintainer's ruling in the project thread. Claude-Session: https://claude.ai/code/session_01L9qibzngYyRjmvNxjkfVyd Co-authored-by: Claude <noreply@anthropic.com>
…ed to what only SDK readers need The moved SDK pages leave content/docs/sdk for a new entry, content/docs/frontend (Custom front-end), placed after API & SDK. Its landing page routes three needs: a custom page inside the Console (React pages), data access from your own front-end (Client SDK), and rendering ObjectStack metadata in your own React app (the Object UI SDK). Pages that duplicated the site are cut or merged: - schema-overview and api/schema-reference are removed; the generated component reference and references/ui cover them. - core/schema-renderer is merged into schema-rendering; plugins/index into the UI plugins overview (plugins/index); plugin-report into ui/reports. - The 57 renderer-type pages become one renderer types page; none of the types is in sdui.manifest.json. - Plugin pages keep installation and React usage; their Schema API, catalog example galleries and metadata sections are removed, with a link to each type's generated entry. - Metadata behaviour the site lacked moves to the metadata pages: field drawing (referenceVia, registry pickers, heading faces) into data-modeling/field-types, element data-source keys per block into ui/pages, edit-save semantics into ui/forms, and three report sections into ui/reports. Claude-Session: https://claude.ai/code/session_01L9qibzngYyRjmvNxjkfVyd Co-authored-by: Claude <noreply@anthropic.com>
|
Red on Both fail on the same 15 links. They come from the 11 trimmed plugin pages and point at Nothing else is red locally: 52 of 54 derived gates exit 0, Generated by Claude Code |
Claude-Session: https://claude.ai/code/session_01L9qibzngYyRjmvNxjkfVyd Co-authored-by: Claude <noreply@anthropic.com>
Requested by Tesla · project thread
Fixes #27140
Clause-②: no
Metadata-protocol: none
维护者速读
content/docs/frontend/,侧栏在 API & SDK 之后)。入口页先分三条路:在 Console 里加自定义页面去 React pages,自己的前端读写数据去 Client SDK,自己的 React 应用里渲染元数据才是 ObjectUI SDK。objectui.org 的 95 页按你定的方案 B 精简后放进来:SDK 专属的 16 页指南、UI 插件总览和 15 个插件页保留,57 个渲染器类型页合成一页清单,重复的 schema 总览、schema 参考、报表插件页删掉。sdk放最外层有歧义、ui/只该放 UI 元数据,并选了「新入口 + 方案 B」(评估文档在项目线程里)。data-modeling/field-types、ui/pages、ui/forms、ui/reports,共 +495 行,内容取自被删的 SDK 页。ui/content/docs没动,apps/docs不加依赖。回滚就是 revert 本 PR。content/docs/frontend/index.mdx(三条路的入口页)、content/docs/frontend/renderers.mdx(57 个类型合成的清单)、content/docs/ui/pages.mdx的 Element data sources 一节(并入的最大一块,+302 行)。pnpm docs:dev,打开/docs/frontend,侧栏应出现「Custom Front-end」,入口页顶部是三行选择表。/docs/ui/components/plugins#…,K3 没合之前check:doc-anchors会报这 15 个链接。K3 合并后我合一次 main 转绿,超过 3000 行,由你合并。What changes
content/docs/frontend/("Custom front-end"), listed incontent/docs/meta.jsonafterapi. Its landing page is a three-row chooser: a custom page inside the Console → React pages (metadata, stays inui/); data access from your own front-end → Client SDK; rendering ObjectStack views and forms in your own React app → the ObjectUI SDK, which is the rest of the section.ui/keeps metadata only.concepts/architecturefor the protocol layers), schema-rendering, component-registry, fields, data-source, layout, app-shell, sidebar-nav, theming, plugin-development (now says it is the front-end kind and linksplugins/development), cli, create-plugin, data-objectstack, troubleshooting, andplugins/(the UI plugins overview plus 15 plugin pages).guide/schema-overview(the landing page covers it) andapi/schema-reference(1443 lines; the generated component reference andreferences/uicover it, and it carried stale shapes such as a detail view holdingtabsbesidecolumns).core/schema-rendererintoschema-rendering(its one unique section, thedata-obj-id/data-obj-typeattributes, checked inSchemaRenderer.tsx); the old plugin galleryplugins/indexinto the UI plugins overview, which gainedplugin-listandplugin-detailentries and a line separating it from runtime plugins;plugin-reportintoui/reports.renderers.mdx. None of the 57 types is insdui.manifest.json, so an ObjectStack page cannot use them; the page says so in a callout and lists each type with its description and the source file holding itsComponentRegistry.registercall (52 in@object-ui/components, 3 in@object-ui/plugin-view, each path checked).Schema APIsection, the catalogExample schemasgallery and theExamplessection are removed (plus calendar/gantt/mapConfigurationand dashboard's filter, widget-options and drill sections, whichui/dashboardsalready has). Each page now links its types' generated entries in/docs/ui/components/plugins(K3) and keeps installation, React usage, component props, events, data providers and TypeScript. Chatbot, editor, view and detail document types outside the manifest or React component APIs and keep their schema sections.data-modeling/field-types, under "How the Console renders a field": polymorphic pointer pairs (referenceVia,referenceDeletedWhen), naming a registry item by name (position-ref,permission-ref), a widget's face on the record heading. The number-input section was already there from K2.ui/pages, under "Element data sources": how a savedviewcombines with the binding, and the per-block table of whichdataSourcekeys each block honours (withparentDataSourceand{record_id}).frontend/data-sourcekeeps the SDK side (useElementDataSource, the host'sapiFetch,ElementApiOpenScope) and links here.ui/forms: "What an edit save writes".ui/reports: where the numbers come from, stored pre-9.0 documents (the lossy bridge, confirmed inReportRenderer.tsx), and the filter-time CEL limitation.SchemaExamplebecame a fencedjsonblock; no@object-ui/*dependency inapps/docs.scripts/docs-audit/handwritten-docs.jsonregenerated with--write;scripts/role-word-baseline.jsonis a pure relocation of the rows the maintainer approved (5sdk/rows, 29 occurrences, out; 3frontend/rows, 26, in; the 3 others left with the removed pages).⛔ Nothing under
ui/is edited or deleted;ui/apps/siteis untouched. K4 does both.Old path → new path (for K4's redirect map)
Every row is
/docs/PATHon www.objectui.org → its target on objectstack.ai. 95 rows: 19 moved, 14 moved and trimmed, 60 merged into another page (57 renderer pages land on their group's heading inrenderers), 2 removed and pointed at the page that covers them.95 rows
ui/content/docs/)index.md/docs/docs/frontendguide/quick-start.md/docs/guide/quick-start/docs/frontend/quick-startguide/building-crud-app.md/docs/guide/building-crud-app/docs/frontend/building-crud-appguide/architecture-overview.md/docs/guide/architecture-overview/docs/frontend/architecture-overviewguide/schema-overview.md/docs/guide/schema-overview/docs/frontendguide/schema-rendering.md/docs/guide/schema-rendering/docs/frontend/schema-renderingguide/component-registry.md/docs/guide/component-registry/docs/frontend/component-registryguide/fields.md/docs/guide/fields/docs/frontend/fieldsguide/plugins.md/docs/guide/plugins/docs/frontend/pluginsguide/plugin-development.md/docs/guide/plugin-development/docs/frontend/plugin-developmentguide/data-source.md/docs/guide/data-source/docs/frontend/data-sourceguide/layout.md/docs/guide/layout/docs/frontend/layoutguide/theming.md/docs/guide/theming/docs/frontend/themingguide/troubleshooting.md/docs/guide/troubleshooting/docs/frontend/troubleshootingcore/schema-renderer.mdx/docs/core/schema-renderer/docs/frontend/schema-renderinglayout/app-shell.mdx/docs/layout/app-shell/docs/frontend/app-shelllayout/sidebar-nav.mdx/docs/layout/sidebar-nav/docs/frontend/sidebar-navapi/schema-reference.md/docs/api/schema-reference/docs/ui/componentsutilities/cli.mdx/docs/utilities/cli/docs/frontend/cliutilities/create-plugin.mdx/docs/utilities/create-plugin/docs/frontend/create-pluginutilities/data-objectstack.mdx/docs/utilities/data-objectstack/docs/frontend/data-objectstackplugins/index.md/docs/plugins/docs/frontend/pluginsplugins/plugin-calendar.mdx/docs/plugins/plugin-calendar/docs/frontend/plugins/plugin-calendarplugins/plugin-charts.mdx/docs/plugins/plugin-charts/docs/frontend/plugins/plugin-chartsplugins/plugin-chatbot.mdx/docs/plugins/plugin-chatbot/docs/frontend/plugins/plugin-chatbotplugins/plugin-dashboard.mdx/docs/plugins/plugin-dashboard/docs/frontend/plugins/plugin-dashboardplugins/plugin-detail.mdx/docs/plugins/plugin-detail/docs/frontend/plugins/plugin-detailplugins/plugin-editor.mdx/docs/plugins/plugin-editor/docs/frontend/plugins/plugin-editorplugins/plugin-form.mdx/docs/plugins/plugin-form/docs/frontend/plugins/plugin-formplugins/plugin-gantt.mdx/docs/plugins/plugin-gantt/docs/frontend/plugins/plugin-ganttplugins/plugin-grid.mdx/docs/plugins/plugin-grid/docs/frontend/plugins/plugin-gridplugins/plugin-kanban.mdx/docs/plugins/plugin-kanban/docs/frontend/plugins/plugin-kanbanplugins/plugin-list.mdx/docs/plugins/plugin-list/docs/frontend/plugins/plugin-listplugins/plugin-map.mdx/docs/plugins/plugin-map/docs/frontend/plugins/plugin-mapplugins/plugin-markdown.mdx/docs/plugins/plugin-markdown/docs/frontend/plugins/plugin-markdownplugins/plugin-report.mdx/docs/plugins/plugin-report/docs/ui/reportsplugins/plugin-timeline.mdx/docs/plugins/plugin-timeline/docs/frontend/plugins/plugin-timelineplugins/plugin-view.mdx/docs/plugins/plugin-view/docs/frontend/plugins/plugin-viewcomponents/basic/button-group.mdx/docs/components/basic/button-group/docs/frontend/renderers#basiccomponents/basic/div.mdx/docs/components/basic/div/docs/frontend/renderers#basiccomponents/basic/navigation-menu.mdx/docs/components/basic/navigation-menu/docs/frontend/renderers#basiccomponents/basic/pagination.mdx/docs/components/basic/pagination/docs/frontend/renderers#basiccomponents/basic/separator.mdx/docs/components/basic/separator/docs/frontend/renderers#basiccomponents/basic/sidebar.mdx/docs/components/basic/sidebar/docs/frontend/renderers#basiccomponents/complex/carousel.mdx/docs/components/complex/carousel/docs/frontend/renderers#complexcomponents/complex/data-table.mdx/docs/components/complex/data-table/docs/frontend/renderers#complexcomponents/complex/filter-builder.mdx/docs/components/complex/filter-builder/docs/frontend/renderers#complexcomponents/complex/filter-ui.mdx/docs/components/complex/filter-ui/docs/frontend/renderers#complexcomponents/complex/resizable.mdx/docs/components/complex/resizable/docs/frontend/renderers#complexcomponents/complex/scroll-area.mdx/docs/components/complex/scroll-area/docs/frontend/renderers#complexcomponents/complex/sort-ui.mdx/docs/components/complex/sort-ui/docs/frontend/renderers#complexcomponents/complex/view-switcher.mdx/docs/components/complex/view-switcher/docs/frontend/renderers#complexcomponents/data-display/avatar.mdx/docs/components/data-display/avatar/docs/frontend/renderers#data-displaycomponents/data-display/breadcrumb.mdx/docs/components/data-display/breadcrumb/docs/frontend/renderers#data-displaycomponents/data-display/kbd.mdx/docs/components/data-display/kbd/docs/frontend/renderers#data-displaycomponents/data-display/list.mdx/docs/components/data-display/list/docs/frontend/renderers#data-displaycomponents/data-display/statistic.mdx/docs/components/data-display/statistic/docs/frontend/renderers#data-displaycomponents/data-display/tree-view.mdx/docs/components/data-display/tree-view/docs/frontend/renderers#data-displaycomponents/disclosure/collapsible.mdx/docs/components/disclosure/collapsible/docs/frontend/renderers#disclosurecomponents/disclosure/toggle-group.mdx/docs/components/disclosure/toggle-group/docs/frontend/renderers#disclosurecomponents/feedback/empty.mdx/docs/components/feedback/empty/docs/frontend/renderers#feedbackcomponents/feedback/loading.mdx/docs/components/feedback/loading/docs/frontend/renderers#feedbackcomponents/feedback/progress.mdx/docs/components/feedback/progress/docs/frontend/renderers#feedbackcomponents/feedback/skeleton.mdx/docs/components/feedback/skeleton/docs/frontend/renderers#feedbackcomponents/feedback/sonner.mdx/docs/components/feedback/sonner/docs/frontend/renderers#feedbackcomponents/feedback/spinner.mdx/docs/components/feedback/spinner/docs/frontend/renderers#feedbackcomponents/feedback/toast.mdx/docs/components/feedback/toast/docs/frontend/renderers#feedbackcomponents/form/calendar.mdx/docs/components/form/calendar/docs/frontend/renderers#formcomponents/form/checkbox.mdx/docs/components/form/checkbox/docs/frontend/renderers#formcomponents/form/combobox.mdx/docs/components/form/combobox/docs/frontend/renderers#formcomponents/form/command.mdx/docs/components/form/command/docs/frontend/renderers#formcomponents/form/date-picker.mdx/docs/components/form/date-picker/docs/frontend/renderers#formcomponents/form/file-upload.mdx/docs/components/form/file-upload/docs/frontend/renderers#formcomponents/form/form.mdx/docs/components/form/form/docs/frontend/renderers#formcomponents/form/input-otp.mdx/docs/components/form/input-otp/docs/frontend/renderers#formcomponents/form/input.mdx/docs/components/form/input/docs/frontend/renderers#formcomponents/form/radio-group.mdx/docs/components/form/radio-group/docs/frontend/renderers#formcomponents/form/select.mdx/docs/components/form/select/docs/frontend/renderers#formcomponents/form/slider.mdx/docs/components/form/slider/docs/frontend/renderers#formcomponents/form/switch.mdx/docs/components/form/switch/docs/frontend/renderers#formcomponents/form/textarea.mdx/docs/components/form/textarea/docs/frontend/renderers#formcomponents/form/toggle.mdx/docs/components/form/toggle/docs/frontend/renderers#formcomponents/layout/aspect-ratio.mdx/docs/components/layout/aspect-ratio/docs/frontend/renderers#layoutcomponents/layout/page.mdx/docs/components/layout/page/docs/frontend/renderers#layoutcomponents/navigation/header-bar.mdx/docs/components/navigation/header-bar/docs/frontend/renderers#navigationcomponents/overlay/alert-dialog.mdx/docs/components/overlay/alert-dialog/docs/frontend/renderers#overlaycomponents/overlay/context-menu.mdx/docs/components/overlay/context-menu/docs/frontend/renderers#overlaycomponents/overlay/dialog.mdx/docs/components/overlay/dialog/docs/frontend/renderers#overlaycomponents/overlay/drawer.mdx/docs/components/overlay/drawer/docs/frontend/renderers#overlaycomponents/overlay/dropdown-menu.mdx/docs/components/overlay/dropdown-menu/docs/frontend/renderers#overlaycomponents/overlay/hover-card.mdx/docs/components/overlay/hover-card/docs/frontend/renderers#overlaycomponents/overlay/menubar.mdx/docs/components/overlay/menubar/docs/frontend/renderers#overlaycomponents/overlay/popover.mdx/docs/components/overlay/popover/docs/frontend/renderers#overlaycomponents/overlay/sheet.mdx/docs/components/overlay/sheet/docs/frontend/renderers#overlaycomponents/overlay/tooltip.mdx/docs/components/overlay/tooltip/docs/frontend/renderers#overlayTests
Head
12b1047arenames "Object UI" to "ObjectUI" incontent/docs/frontend(25 occurrences plus the sidebar separator), on Tesla's question in the card thread. It is a wording-only commit on top of773055de; the docs gates were re-run green, andcheck:doc-anchorsstill fails only on the same 15 K3 links. The readings below are for773055de.Docs-only diff; no package source changes, so no package test or typecheck applies.
pnpm --filter @objectstack/docs build(the command production runs) at head773055de: exit 0 under the verify lock. It emits 34 pages under/en/docs/frontend(the landing page, 16 SDK pages,renderers, the UI plugins overview and 15 plugin pages).git grep -n "InteractiveDemo\|ComponentDemo\|LiveSplitDemo\|SchemaExample" -- content/docsprints nothing (card acceptance).import { … } from '@object-ui/PKG'resolves to a name the package'ssrc/index.tsexports; everyComponentRegistry.*method the pages call exists inui/packages/core/src/registry/Registry.ts; everyobjectui SUBCOMMANDthe pages name is a.command()inui/packages/cli/src; every@object-ui/*package named exists, except@object-ui/plugin-calendar-view, which the calendar page names only in its migration note (that package merged intoplugin-calendar).apps/docs/package.json: unchanged.Verification
Local gates at head
773055de:node scripts/pm/dispatch-gates.mjs --commandsderives 54 commands, all run, exit codes captured before any pipe.pnpm --filter @objectstack/spec run check:skill-examplesexited 3 in the sweep (packages/spec/distdeclarations predated the sources after merging main). Afterenv -u OS_SKIP_DTS pnpm --filter '@objectstack/client-react...' build: exit 0, "270 prose examples type-check across 3 surface(s)".pnpm check:doc-anchorsexits 1 on exactly 15 links, all/docs/ui/components/plugins#TYPEfrom the trimmed plugin pages. That page is K3's (docs(ui): generate the component reference for all 106 components from sdui.manifest.json, with a drift check #27179) and is not onmainyet; this PR lands after K3, and the gate goes green whenmainis merged in.Acceptance notes
renderersreplaces 57 pages of per-type examples with one list. An SDK reader who needs a type's inputs follows its source link to theComponentRegistry.registercall, which declares them.rolekeys (theaiSDK chat message key, the ARIA DOM key). This revision only relocates those rows: 29 occurrences in 5sdk/rows become 26 in 3frontend/rows; the other 3 left withapi/schema-referenceand the trimmed page-header section oflayout. No other row changes.guide/themingkeepsexport const brand = { … } satisfies Theme;(the SDK's@object-ui/typesruntime object, not spec metadata), as in the first revision.ui/content/docs/links outside this section are K4's sweep, untouched here.Generated by Claude Code