Repository navigation
refactor(ui)!: the renderer runs @objectstack/sdui-parser; delete @object-ui/sdui-parser (#25712 2g PR 2) - #26343
Conversation
…ject-ui/sdui-parser 2g PR 2 (ruling 6418729849, E + B). Every ui importer, package manifest, alias and tsconfig path now names @objectstack/sdui-parser, and ui/packages/sdui-parser is deleted with no forwarding release. It leaves the changesets fixed group. gen-manifest.ts moves to ui/apps/console/scripts/. The five tests PR 1 left behind are re-homed. The ui guards that counted the package drop it, and the manifest record no longer reaches it. Claude-Session: https://claude.ai/code/session_01Xe3LjBvLrRVA6dmFUEGskm Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Xe3LjBvLrRVA6dmFUEGskm Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Xe3LjBvLrRVA6dmFUEGskm Co-authored-by: Claude <noreply@anthropic.com>
📓 Docs Drift CheckThis PR changes 2 package(s): 13 hand-written doc(s) NAME something this change touched and may need an implementation-accuracy re-verification:
⛔ 12 release-owned page(s) also name something this change touched. These are read-only:
What this run could not see
Coarse fallback — 146 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): Which tree this was computed onThis run read A worktree cut from an older # while this PR is open — GitHub drops the merge commit once it closes
git fetch origin 916c7a57709954c1b27d9ac3b3c24840fb981ac8 && git checkout 916c7a57709954c1b27d9ac3b3c24840fb981ac8
# afterwards, rebuild it from the two parents, which stay fetchable
git fetch origin 2163e80629578bb3518b5455fbca04d66696ba94 9cd30dc4a9b58c05644b887a0643394be0505191 && git checkout -B drift-repro 2163e80629578bb3518b5455fbca04d66696ba94 && git merge --no-ff 9cd30dc4a9b58c05644b887a0643394be0505191
node scripts/docs-audit/affected-docs.mjs --json 2163e80629578bb3518b5455fbca04d66696ba94
|
The re-homed test compiled under the ui tsconfig, which does not set noUnusedLocals. packages/lint's tsconfig.test.json does, so the seven function-local `type _X = Assert<...>` pins read as unused (TS6196) and check:test-typecheck refused the file. Exported at module level they are used, and each still bites: flipping one expectation fails with TS2344. Claude-Session: https://claude.ai/code/session_01Xe3LjBvLrRVA6dmFUEGskm Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Xe3LjBvLrRVA6dmFUEGskm Co-authored-by: Claude <noreply@anthropic.com>
…ing main Claude-Session: https://claude.ai/code/session_01Xe3LjBvLrRVA6dmFUEGskm Co-authored-by: Claude <noreply@anthropic.com>
#26274 retired the node-level visibleOn / hiddenOn / disabledOn spellings and edited the ui copy of the parser, which this branch deletes. Its parser half is carried onto packages/sdui-parser so it is not lost: the three leave SDUI_BASE_PROPS, validateTree answers each with an unknown-prop naming the canonical key, retired-visibility-dialects.ts moves in with its MIT notice, and base-props-one-list-11044 takes the same test edits. The pending changeset 25926 names @objectstack/sdui-parser, where that behaviour now ships. Claude-Session: https://claude.ai/code/session_01Xe3LjBvLrRVA6dmFUEGskm Co-authored-by: Claude <noreply@anthropic.com>
…alects base-props-one-list.test.ts listed visibleOn / hiddenOn / disabledOn among the every-node members. With #26274 carried onto this parser they are no longer base props: each draws one unknown-prop naming its canonical key, and the list is 17 entries. Claude-Session: https://claude.ai/code/session_01Xe3LjBvLrRVA6dmFUEGskm Co-authored-by: Claude <noreply@anthropic.com>
…ing main Claude-Session: https://claude.ai/code/session_01Xe3LjBvLrRVA6dmFUEGskm Co-authored-by: Claude <noreply@anthropic.com>
The PR declares `Metadata-protocol: none`, so check-changeset-no-major requires every entry it introduces or changes to be `patch`. The fixed group already carries the minor from @object-ui/types. Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Xe3LjBvLrRVA6dmFUEGskm
|
Batch #405 governed-draft line · maintainer 「同意」 2026-10-27T01:17Z Recorded by the director seat (summon #51 continuation, What 「同意」 is not: it is not an APPROVED review and nothing on this PR changes by it. |
main retired the per-package SDUI manifest records (scripts/sdui-manifest.sources/); this branch's re-records of those files resolve as deletions. Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Xe3LjBvLrRVA6dmFUEGskm
Requested by Tesla · project thread
Part of #25712 (item 3 = 2g, PR 2 of 3: rewrite the importers onto
@objectstack/sdui-parserand deleteui/packages/sdui-parser; Tier H: over 3000 lines, andskills/**).Part of #25677.
Clause-②: yes (narrowing: a
type-mismatchormember-type-mismatchthe html-tier compile used to gradewarningis now anerror, so a page that carried one now refuses to compile instead of rendering with the value dropped)Metadata-protocol: none
维护者速读(草稿)
@object-ui/sdui-parser的引用改为@objectstack/sdui-parser,包括 import、package.json依赖、vite/vitest 别名和 tsconfig 路径。ui/packages/sdui-parser(不发转发版本),并把它移出 changesets 的 fixed 组。gen-manifest.ts移到ui/apps/console/scripts/。PR 1 留下的 5 个测试搬到各自归属的包。columns='["name","amount"]',而columns声明为数组)会显示编译错误块,不再静默丢掉这个值。保存门本来就拒绝这种页面,所以经保存门保存的页面不受影响。@object-ui/sdui-parser停在 18.1,18.2 之后由维护者执行 npm deprecate。25831-object-ui-18-1-to-merge.md、26276-ui-package-test-vitest.md)原本列着@object-ui/sdui-parser。包删掉后,changeset version遇到不存在的包会失败,所以本 PR 删掉了这两行。check-empty-changeset把这种改动当作需要人确认的「主动更正」,会一直是红的,直到你确认。席位核对
(left for the dispatch seat)
Why
Ruling 6418729849 on #25712 keeps
@objectstack/sdui-parseras the one parser, deletesui/packages/sdui-parserwith no forwarding release, and takes@object-ui/sdui-parserout of the fixed group. The maintainer deprecates the npm package after 18.2. PR 3 (#26221, lockstep gate retired) and PR 1 (#26211, one body in@objectstack/sdui-parser) are on main. This PR moves the renderer onto that body and deletes the second copy.What changes
Importers (no behaviour of their own).
@object-ui/sdui-parserimport,package.jsondependency key, vite alias (console, console-starter, plugin-editor, plugin-markdown, runner), theui/vitest.config.mtsalias and theui/tsconfig.jsonpaths now name@objectstack/sdui-parser, which resolves to the rootpackages/sdui-parser.SchemaNode/ValidationResultaliases.Symbol.for('@object-ui/sdui-parser.html-tier-node')registry key, which is the cross-instance contract;@object-ui/sdui-parser" notices;Deleted:
ui/packages/sdui-parser(32 files).Moved:
ui/packages/sdui-parser/scripts/gen-manifest.tsui/apps/console/scripts/gen-manifest.ts(its only caller isemit-sdui-manifest.ts)…/__tests__/render.test.tsx,inline-whitespace.test.tsx,injected-component-input-6950.test.tsui/packages/react/src/__tests__/sdui-*(they import../SchemaRenderer, not@object-ui/react, percheck-package-self-import)…/__tests__/spec-symbol-batch7.test.tspackages/lint/src/sdui-spec-symbol-batch7.test.ts…/__tests__/dashboard-widget-options-census.test.tsui/packages/plugin-dashboard/src/__tests__/(leg 4 no longer counts the ui copy)@object-ui/reactgains@objectstack/sdui-parseras a devDependency for the re-homed tests.Guards that counted the package:
package-files-exist: owing floor 38→37;side-effects-declaration-consistency: 29→28 andfalse12→11;check-dist-completeness: tsc floor 12→11;QUICK_REFERENCE.md: 37→36 published packages;check:lockstep-package-count: 111→110 inbackward-compatibility.mdxandpublish-smoke-pack.mjs.turbo.objectui.jsondrops the 10 build inputs that pointed at the deleted package.select-type-check-scope's fixture now uses a live file.check-type-check-coveragedrops the deleted scripts directory.workspace-vitealias list drops the package.ui/.github/labeler.ymldrops its rule..changeset/config.jsonremoves it from the fixed group.Relative reads re-rooted to the root parser:
designerRegistrationInputs-11434;body-dialect-children-arm-7181;component-input-retired-keys-7493;unconsumed-widget-option-claim-6186;ui/README.mdlink, which is now a GitHub URL becausecheck-doc-linkstreatsui/as its root.Severity pin.
htmlTierColumnSpellings-6598form 2 (a JSON string wherecolumnsis declaredarray) moves from "the block's defaults render" to "fails loudly". The page now shows the compile error namingcolumns. The test's invariant, "never the reported state", holds either way.Manifest record.
node scripts/gen-sdui-manifest-node.mjsdropsscripts/sdui-manifest.sources/sdui-parser.json("no longer reached") and re-records components, core, plugin-dashboard and types.sdui.manifest.jsonis byte-unchanged (106 components, sha2561f6e1ccb925a…).Pending changesets.
25831-object-ui-18-1-to-merge.mdand26276-ui-package-test-vitest.mdeach lose their'@object-ui/sdui-parser'line, and nothing else changes. Without the edit,changeset versionfails on a package that is not in the workspace. This is the DELIBERATE CORRECTION class ofcheck-empty-changeset, so that gate is red until a maintainer confirms the two deletions.Verification
Head
7fd87174on main62941574. 185 paths: +1182 / −7242 lines (8424), of which the deleted package and the lockfile account for −7007. Governed:skills/**×1 (skills/objectui/README.md, one line) and over the 3000 human-merge line.node scripts/pm/dispatch-gates.mjs --commandsderives 137. All 137 ran:check-empty-changesetexits 1 for the reason above;90f44cec. The 18 families added by thecheck:lockstep-package-count --fixcommit, plus that gate, ran on0b13f123, whose tree equals7fd87174. Only the commit message was reworded.--ranreconciles 137 derived, 137 run, 0 NOT-MEASURED, 0 UNRUN.unitproject ran: 1643 files and 31054 tests. Every red was fixed in this diff, except the 47→48ObjectSchemakey pin, which main already carries.dom-heavypassed 35 of 35 files, anddomshards 1–3 of 4 passed 2914 files. Shard 4 was cut off by the local time limit, and CI's 16 shards cover it.GITHUB_ACTIONS=true GITHUB_EVENT_NAME=push node scripts/pm/check-dispatch-gates.mjs) on7fd87174:✓ dispatch-gates self-test: 2164 cases pass, exit 0.Changeset
.changeset/25712-renderer-runs-one-sdui-parser.md: apatchfor the 13 published@object-ui/*packages whose dependency moved, with the Clause-② narrowing above and an ADR-0087not-required (no-migration-prescription)marker.🤖 Generated with Claude Code
https://claude.ai/code/session_01Xe3LjBvLrRVA6dmFUEGskm