Repository navigation
docs(ui-merge): fold objectui.org into objectstack docs, K4 — retire the site, host 301s, links - #27329
Conversation
…loy-ui-site Claude-Session: https://claude.ai/code/session_01L9qibyMpJZ67jrDrno4jY1 Co-authored-by: Claude <noreply@anthropic.com>
…-redirects Claude-Session: https://claude.ai/code/session_01L9qibyMpJZ67jrDrno4jY1 Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01L9qibyMpJZ67jrDrno4jY1 Co-authored-by: Claude <noreply@anthropic.com>
…UI spelling Claude-Session: https://claude.ai/code/session_01L9qibyMpJZ67jrDrno4jY1 Co-authored-by: Claude <noreply@anthropic.com>
…docs/frontend Claude-Session: https://claude.ai/code/session_01L9qibyMpJZ67jrDrno4jY1 Co-authored-by: Claude <noreply@anthropic.com>
…t-inputs ledger Claude-Session: https://claude.ai/code/session_01L9qibyMpJZ67jrDrno4jY1 Co-authored-by: Claude <noreply@anthropic.com>
…-eq5jj6 # Conflicts: # ui/content/docs/guide/slotted-pages.md # ui/content/docs/plugins/meta.json # ui/packages/cli/src/__tests__/registered-types-validate-ratchet-10859.test.ts # ui/packages/plugin-ai/README.md # ui/packages/plugin-ai/package.json # ui/packages/types/src/__tests__/component-docs-retired-handler-keys-7340.test.ts # ui/scripts/markdown-test-inputs.mjs
…age floor after the merge Claude-Session: https://claude.ai/code/session_01L9qibyMpJZ67jrDrno4jY1 Co-authored-by: Claude <noreply@anthropic.com>
📓 Docs Drift Check
What this run could not see
Coarse fallback — 5 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): |
…ger use Lint UI's lint:root refused execFileSync in check-doc-component-types.test.ts and moduleSpecifiersOfBlock in check-doc-snippet-types.test.ts (object-ui/no-unused-imports). Claude-Session: https://claude.ai/code/session_01L9qibyMpJZ67jrDrno4jY1 Co-authored-by: Claude <noreply@anthropic.com>
…th its host-parity cases Lint UI's package lint refused both (object-ui/no-unused-imports). Claude-Session: https://claude.ai/code/session_01L9qibyMpJZ67jrDrno4jY1 Co-authored-by: Claude <noreply@anthropic.com>
|
Contract-review-handoff: triage — CONTRACT_REVIEW_TIER unavailable (maintainer rule 「契约复审都要等分诊」, the dispatching seat does not review, 2026-10-28T18:21Z) · head 9b423d3 This is the first contract review owed on this PR, with no prior PASS. It is Tier H by path ( The claim is #27145 comment 6471445866. Amendment 6475652394 widens it with the two bounded fixes listed in the body section "Bounded fixes outside the claim". One item is still open with the maintainer on a decision card: the frozen Generated by Claude Code |
…-eq5jj6 # Conflicts: # ui/content/docs/guide/architecture.md # ui/content/docs/utilities/index.md # ui/content/docs/utilities/meta.json # ui/packages/vscode-extension/README.md # ui/packages/vscode-extension/package.json # ui/packages/vscode-extension/src/__tests__/export-to-react-compiles.test.ts # ui/packages/vscode-extension/src/providers/HoverProvider.ts # ui/scripts/__tests__/check-doc-component-types.test.ts # ui/scripts/__tests__/check-doc-links.test.ts # ui/scripts/markdown-test-inputs.mjs
|
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U Contract-review-claim: Triage seat, taking the Generated by Claude Code |
… once the extension's last links left Merging main brought #27275, which deleted the vscode-extension package and with it the last two self-repo GitHub URLs in the tree, so the floor of 1 read 0. The extractor stays covered by its own selfRepoPath unit test. Claude-Session: https://claude.ai/code/session_01L9qibyMpJZ67jrDrno4jY1 Co-authored-by: Claude <noreply@anthropic.com>
|
domain:devx#1 · os-tesla · session_01L9qibyMpJZ67jrDrno4jY1 Head moved after the triage claim above: Generated by Claude Code |
|
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U Contract-review-claim: Triage seat. The head moved while triage reviewed Generated by Claude Code |
Contract reviewServed-tier: Head status. This is a fresh, full record on Delta since
The four ① Derived judgmentsEvery accept-set and public-surface change the diff implies, read in the tree at
② Semver level
③ Boundary flagsThe os-dev-report (card comment 6475572534) carries two
No dev flag in the PR body is unaddressed. The PR left draft after the checks went green, which the card's "draft until green" permits; the merge stays the maintainer's. ④ Design judgment
Must-fix: none in the Implemented-by: VERDICT: PASS Generated by Claude Code |
…-eq5jj6 # Conflicts: # ui/content/docs/guide/slotted-pages.md
|
Contract-review-handoff: triage — CONTRACT_REVIEW_TIER unavailable (maintainer rule 「契约复审都要等分诊」, the dispatching seat does not review, 2026-10-29T02:36Z) · head df07a80 This supersedes the PASS 6485237613 on Generated by Claude Code |
|
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U Contract-review-claim: Triage seat, taking the hand-off and Generated by Claude Code |
Contract reviewServed-tier: Head status. Fresh, full record on Delta since
The net diff against Rework note (PR comment 6486344454, the lane's handoff): "the merge is the only change; the PR's file set against Prior should-fixes, verified on this head. (1) The two skill pointers ( ① Derived judgmentsEvery accept-set and public-surface change the diff implies, read in the tree at
② Semver level
③ Boundary flagsThe os-dev-report (card comment 6475572534) carries two
No dev flag in the PR body is unaddressed. The merge stays the maintainer's (Tier H, over 3000 changed lines). ④ Design judgment
Must-fix: none in the Implemented-by: VERDICT: PASS Generated by Claude Code |
Takes main's deletion of ui/content/docs/api/schema-reference.md and ui/content/docs/plugins/plugin-form.mdx (#27329). The plugin-form page's new home, content/docs/frontend/plugins/plugin-form.mdx, gains the "Where an object-form block opens" section. Claude-Session: https://claude.ai/code/session_01JQwxbWHWPRD5rZXeY69YvL Co-authored-by: Claude <noreply@anthropic.com>
domain:devx#1 · os-tesla · session_01L9qibyMpJZ67jrDrno4jY1
Requested by Tesla · project thread
Fixes #27145
Part of #26993
Clause-②: no
Metadata-protocol: none
维护者速读
ui/apps/site(objectui.org 站点)、ui/content/docs(201 页)和deploy-ui-site部署任务;在apps/docs/redirects.mjs加 184 条只对 objectui.org 主机生效的永久跳转(183 页逐条 + 1 条兜底);37 个 ui package.json 的 homepage、README 链接、console 插件 homepage 改指 objectstack.ai/docs;33 处包描述 "Object UI" 改为 "ObjectUI";读旧文档页的测试和门禁改读content/docs/frontend。objectui(rescoped: objectui.org folds into objectstack docs) #27030),不会影响本站现有 URL;删掉的只有站点、旧页和只为它们存在的测试。回滚即还原本 PR。apps/docs/redirects.mjs的objectuiRedirects表;下方 "Tests whose page is gone" 一节(哪些测试删了、哪些只删了读页面的那一半);越界声明一节。pnpm check:docs-redirects;pnpm --dir ui exec vitest run scripts/;git grep -n "ui/apps/site\|ui/content/docs" -- ':!**/CHANGELOG.md'为空。content/docs/frontend补回 75 条 doc-snippet 标记、一处destructive→danger),以及 filter-builder 的类型表在文档删除后改为测试内冻结列表;合并由你来做,合并后按 maintainer-action(ui-merge): after #27145, move objectui.org and www.objectui.org onto the objectstack Vercel project and delete the Vercel projectobjectui(rescoped: objectui.org folds into objectstack docs) #27030 迁移域名。What changes
Redirects.
apps/docs/redirects.mjsgainsobjectuiRedirects: one row per published path of the old site (the 183 pages under itscontent/docsat the fold, by URL, taken from the final K1 #27168, K2 #27170 and K3 #27179 mapping tables), plus a final catch-all to/docs/frontendfor the home page, playground,llms.txtand OG images. The rows are host-scoped (has: [{ type: 'host', value: '(?:www\.)?objectui\.org' }]) and permanent, so they cannot shadow a URL of this site and stay inert until the domains move (#27030).scripts/check-docs-redirects.mjsnow judges them on the host the destination is served from: every destination is a real page and none is adocsRedirectssource. No row targets the retired/docs/ui/{console,studio,setup-app}pages.Deletions.
ui/apps/site(43 files),ui/content/docs(201 files), thedeploy-ui-sitejob indocs-deploy.ymland its CI wiring, the site-only gatescheck-doc-example-idsandcheck-docs-route-eager-closurewith their tests, the threesite-*script tests, andui/e2e/docs-smoke.spec.ts/ui/e2e/cascading-options.spec.ts, which drove the site.rfcs/0001-clipboard-paste.mdmoves toui/docs/rfcs/andguide/console-architecture.mdtoui/docs/design/. The lockfile drops the site importer.Links. The
homepagefield of 37package.jsonfiles underui/, thehomepageinui/apps/console/plugin.ts, the README and skill links that pointed at objectui.org or atui/content/docs,CONTRIBUTING.md's UI documentation paragraph, and the rootREADME.md. Each URL goes to the page that carries its content now (the redirect table), keeping a fragment only where the target page has that heading. The Console package's homepage is/docs/build-without-code, its plugin manifest's is/docs/frontend. The changeset covers the 35 published@object-ui/*packages whose metadata changed and@objectstack/skills.Spelling. 33 package
descriptionfields say "ObjectUI" instead of "Object UI".Readers re-pointed. The ui doc gates and their tests read
content/docs/frontend(root =ui/, so labels read../content/docs/frontend/…); floors were re-measured on 34 pages (76 files with the READMEs).check-doc-linksnow judges the 61objectstack.ai/docsURLs againstapps/docsinstead of trusting them.markdown-test-inputsresolves the monorepo docs tree too, and its ledger is re-keyed. The ui CI filter also coverscontent/docs/ui/pages.mdx, which two Test UI pins now read.Tests whose page is gone
K1 kept 34 pages of the 183 as files; the renderer pages became one table (
frontend/renderers.mdx) with no interface fences, and several guides were dropped or moved into platform pages. A test that pinned such a page was re-pointed when its content still exists, and otherwise lost only the leg that read the page:guideCrudAppRenderstests, the layout and app-shell guide pins,page-body-arity-8310,readme-kanban-example-8256). Two follow content that K2 moved:objectname-binding-required-11605reads the block table incontent/docs/ui/pages.mdx, andelement-data-source-objectname-waiver-11117reads itselement:numberfence there.slotted-pages-header-example-11165,button-group-doc-surface-6347,component-docs-disabled-inherited-7239,component-docs-retired-handler-keys-7340,chart-type-doc-row-11521,schema-reference-named-list-view-keys-7923,public-block-doc-examples-bag-11321,calendar-doc-key-set-8830.overlay-node-slot-doc-types-7082,overlay-trigger-union-7081,alert-dialog-read-dialect-7104,div-guidance-names-box(three surfaces now),object-kanban-group-by-limit-7322,catalog-gallery-renderandplugin-dashboard-gallery-render(the docs-site host parity cases),page-actions-refusal-7926(one control whose example moved to/docs/ui/pages), and the named-subject list inobject-calendar-record-source-7313.filter-builder-mirror-6939: decision batch Add AI conversation memory and cost tracking protocols #88 made the published doc the authority forFilterField.type, and the doc is gone. The doc's last 14-member union is now a frozenLAST_PUBLISHED_TYPESlist in the test, and the set-equality pin still holds the mirror to it in both directions. That brings back the hand-kept list objectui#8774 removed, for want of a source; the doc reader and its objectui#9073 fixtures went with the page.Every retired leg carries a short
objectstack#27145note at its site.Bounded fixes outside the claim
The claim (comment 6471445866) allows no edits to
content/docs/**page bodies beyond link fixes. Two edits undercontent/docs/frontendgo past that, both needed to keep the gates this PR moves onto those pages green:{/* doc-snippet: fragment — … */}markers restored above fences in 17 pages. They stood on the same fences in the old pages; K1 dropped them, socheck:doc-snippetsreported every fragment as a compile failure once it readcontent/docs/frontend. The marker text is the old page's, unchanged."variant": "destructive"→"variant": "danger"infrontend/layout.mdx, the valueaction:buttondeclares; the doc-types gate refused the old spelling.No other page body changed. The seat should amend the claim if it accepts these.
Acceptance notes
git grep -n "ui/apps/site\|ui/content/docs" -- ':!**/CHANGELOG.md'prints nothing.git grep -n "objectui.org" -- ':!**/CHANGELOG.md'prints 66 lines, all history comments, fixtures or the redirect machinery:apps/docs/redirects.mjs(5),apps/docs/lib/site.ts(1),scripts/check-docs-redirects.mjs(1).packages/plugins/plugin-hono-server/src/pattern-matcher.test.ts(19),hono-plugin.test.ts(3) and itsREADME.md(3),packages/adapters/hono/src/hono.test.ts(4).ui/packages/cli/src/__tests__/check-schema-marker.test.ts(2),check-jsonc-parse.test.ts(1); the ruling note inui/packages/cli/src/commands/check.ts(1).check-doc-links: the gate's history sections and its objectstack#27145 note (ui/scripts/check-doc-links.mjs, 10) and two test-header lines (ui/scripts/__tests__/check-doc-links.test.ts, 2)..github/workflows/ci.yml(3),.github/workflows/docs-deploy.yml(2),ui/e2e/live/cascading-options.spec.ts,ui/packages/layout/src/__tests__/app-shell-docs-nav-example.test.ts,ui/scripts/__tests__/zero-test-member-exclusion-9106.test.ts,ui/scripts/check-doc-fence-languages.mjs,ui/scripts/check-doc-json-fences.mjs(1 each).CHANGELOG.md(2, history).Tests
pnpm --dir ui exec vitest run scripts/: 171 files, 4915 passed, 2 skipped.packages/types(tsconfig.test.json),examples/schema-catalog(tsconfig.test.json),apps/console, and the seven packages whose tests changed.Verification
node scripts/pm/dispatch-gates.mjs --commandsderives 150 commands for this diff after mergingmainat 38bbc2f (re-merged at 7674028: clean, the ledger audit and the new tests it brought pass). All 150 ran locally:check-skills-token-ratchet(two skill links paid by deleting text in the same file),vitest run scripts/(the expression-carriage fence floor after the merge;check-vi-mock-inherithad timed out under the sweep's load and passes alone),check-plugin-teardown-shape --self-test(needed the pinned sha fetched).pnpm --filter @objectstack/spec run check:docsandcheck:skill-examplesrefused at first for want of a built@objectstack/spec; afterpnpm --filter @objectstack/spec buildboth exit 0 (232 generated files in sync; 270 prose examples type-check).check:dts-closureandcheck:dual-build-cjs-loadsread every package'sdist, which this checkout has not built. This diff changes no build inputs; CI runs both.Known red on
maintoo: the census non-firing control (layoutpage.tsx:462) fails onorigin/mainas well, so it is not this PR's.Tier H, over 3000 changed lines: draft until green, Tesla merges.
Re-merge 2026-10-29 (head 6a7c779).
mainbrought #27275, which deletedui/packages/vscode-extension; the modify/delete conflicts resolved to the deletion on both sides (the extension'sexport-to-react-compilesleg and its ledger row go with the package). That package held the tree's last two self-repo GitHub URLs, socheck-doc-links.test.ts's sweep now finds none and its population floor is gone; theselfRepoPathunit test still feeds the extractor every URL shape. Re-run after the merge:vitest run scripts/(one red, the floor above, then green), the 36 changed package tests,markdown-test-inputs --audit,check-docs-redirects,check:doc-types/doc-snippets/doc-examples/doc-json/readme-exports/skill-examples,docs:check-links, the ui CLIcheck, speccheck:liveness,lint:root, the ui package lint and rootpnpm lint: all exit 0.Human Minimum
packages/specholds no runtime logic. (packages/specis not touched.)pnpm lintpasses (exit 0 after mergingmainat 7674028).main, one pull request.packages/spectouched: not touched, nothing to regenerate.content/docs/references/,packages/*/CHANGELOG.mdorcontent/docs/releases/.🤖 Generated with Claude Code
https://claude.ai/code/session_01L9qibyMpJZ67jrDrno4jY1