feat(spec,lint): ADR-0081 — kind:'html' (rename) + trusted kind:'react' tier#2470
Merged
Conversation
…t' tier - spec: PageSchema.kind gains 'html' (the renamed constrained tier; 'jsx' kept as a deprecated alias) and 'react' (trusted real-React, executed at render, host-capability gated). Completeness gate requires source for all three. - lint: validate-jsx-pages lints html/jsx; skips react (real JS, not constrained JSX). +tests. - examples: command-center page moves to kind:'html'. - docs: ADR-0081. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Contributor
📓 Docs Drift CheckThis PR changes 3 package(s): 93 hand-written doc(s) reference the affected code and may need an implementation-accuracy re-verification:
|
… page A complete real-React example (ADR-0081 trusted tier): composes the platform's real <ListView> + <ObjectForm> with React state to build a master/detail workbench (row click → controlled recordId; save → list refresh; live KPIs via useAdapter). Browser-verified through the real PageRenderer. Renders behind the host capability CAP_REACT_PAGES (a trusted deployment enables it); otherwise it shows the enterprise-capability notice. Also renames the JSX nav label to (HTML). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ACT_PAGES Per platform-author decision the react tier is no longer enterprise-gated/ default-off. It runs author JS, so it stays behind a host capability — but that capability defaults ON (trusted, reviewed, draft-gated authors). A deployment that does not trust its authors disables it with one env var: - cli: console serving injects window.__OBJECTUI_CAPABILITIES_DISABLED__ = ['react-pages'] into the served HTML when OS_DISABLE_REACT_PAGES is set (read per request, no rebuild). - spec: kind describe reframed (default-on, OS_DISABLE_REACT_PAGES opt-out). - ADR-0081 + showcase comment reframed away from enterprise-only. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…off disables) Page-namespaced toggle reads cleaner than an OS_DISABLE_* flag: default on, OS_PAGE_REACT=off disables. Updates cli console injection logic, spec describe, ADR-0081, showcase comment, changeset.
…x gate - objectstack-ui skill: new section on the source-authoring tiers — when to use kind:'html' (constrained, parsed) vs kind:'react' (real React, executed), the injected react scope (React/useAdapter/ObjectForm/ListView/...), a master-detail example, and the OS_PAGE_REACT availability note. The AI build agent now knows the tiers exist. - lint: validate-react-pages transpiles kind:'react' source (Sucrase, never executed) so syntax errors fail at os build, not at render. Wired into os validate (ADR-0081). +tests (93 lint tests green). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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.
Summary
ADR-0081 splits the AI page-authoring surface (ADR-0080) into honest tiers. ADR-0080's
kind:'jsx'oversold itself — authors expected "JSX" to mean any HTML + any JS, which a constrained parse-never-execute model cannot do. This separates the two:kind:'html'— the constrained, parse-never-execute tier renamed to match what it is (HTML + Tailwind + registered components).'jsx'kept as a deprecated alias so already-saved pages keep loading.kind:'react'— a new trusted tier whosesourceis real React, executed at render in the main React tree by@object-ui/react-runtime, gated behind a host capability (default OFF, enterprise/private only). Security = trust + human review, not a sandbox.Changes
@objectstack/spec—PageSchema.kind→enum(['full','slotted','html','react','jsx']);source/kinddescribes updated; the ADR-0078 completeness gate now requires a non-emptysourceforhtml/react/jsx.@objectstack/lint—validate-jsx-pageslintshtml/jsx(constrained parse) and skipsreact(real JS would false-error the constrained parser). +tests for both.command-centerpage moves tokind:'html'.Verification
distrebuild (incl. strict DTS) clean.htmlvalidated /reactskipped cases).@objectstack/example-showcasetypecheck clean against the newkindtype.Pairs with objectui #2105 (the runtime + renderer + capability gate + the full HTML tag set, browser-verified through the real PageRenderer).
🤖 Generated with Claude Code