Repository navigation
refactor(ui)!: retire plugin-designer's dead collaboration code, VersionHistory and the useConfirmDialog entry export - #29529
Conversation
…ionHistory and the useConfirmDialog entry line The CollaborationProvider left the package entry in the previous batch and nothing mounts it, so useCollaboration() is always null: delete the module and the four designers' broadcast branches and status chips. VersionHistory has no reader in the package or outside it: delete the module, its test and its sub-barrel lines. useConfirmDialog stays module-local (seven designers use it); only the entry and README stop publishing it. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QsR2jR9JS6qCZyzC5esvUr
… from the aria-label census The data model and process designers no longer render the collaboration status chip, so the census declares one literal fewer in each file. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QsR2jR9JS6qCZyzC5esvUr
|
Contract-review-claim: session_01QsR2jV5sBSzCYNEDgpYLJw · head 681e6c7 · 2026-11-02T18:30Z Generated by Claude Code |
|
director#1 · zhuangjianguo · session_01QsR2jV5sBSzCYNEDgpYLJw Contract reviewServed-tier: Read-only review of the committed tree; nothing was built or run here. ① Derived judgments
② Semver level
③ Boundary flags
④ Design judgment
One must-fix (② — both Implemented-by: VERDICT: FAIL Generated by Claude Code |
…arrowing The batch only removes names from the package entry, so the Clause-② line reads "no (narrowing)" rather than a bare "yes". Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QsR2jR9JS6qCZyzC5esvUr
|
Contract-review-claim: session_01QsR2jV5sBSzCYNEDgpYLJw · head bf91408 · 2026-11-02T18:37Z (re-review of the must-fix in record 6585079783) Generated by Claude Code |
|
director#1 · zhuangjianguo · session_01QsR2jV5sBSzCYNEDgpYLJw Contract reviewServed-tier: Re-review of the one must-fix in record 6585079783. Read-only; nothing was built or run here. ① Derived judgments
② Semver level
③ Boundary flags
④ Design judgment
No must-fix. No should-fix. Implemented-by: VERDICT: PASS Generated by Claude Code |
|
domain:ui#3 · zhuangjianguo · session_01QsR2jV4dWohojjbTJTQq5m 席位核对 · ACCEPT · 2026-11-02T18:53ZHead-sha:
|
Requested by Steedos · project thread
Part of #25921. This is the
@object-ui/plugin-designerbatch named in landing note 6579769954 ("New since this batch"), under claim 6583164004 and amendment 6583226546. The card stays open. Every other item it lists is untouched:CommentSearchResult, the providers/upload fold,clearSharedDiscoveryCacheand the other packages' barrel batches.Clause-②: no (narrowing)
Metadata-protocol: none
维护者速读
@object-ui/plugin-designer中 refactor(ui)!: retire zero-consumer exports from @object-ui/plugin-gantt and @object-ui/plugin-designer #29388 之后已成死代码的协作实现:整个CollaborationProvider.tsx,以及页面、数据模型、流程、报表四个设计器里永远为 null 的useCollaboration()分支和工具栏上的“N users / Connected”标记。删除无人渲染的VersionHistory组件及其测试。包入口不再导出VersionHistory和useConfirmDialog。useConfirmDialog模块保留,因为七个设计器内部都在用。@object-ui/collaborationand@object-ui/mobile#28385 方法,origin/main128681f4,hotcrmd4ffe99)显示,这些名字在包外只有一个测试文件的历史注释提到,hotcrm 为零。CollaborationProvider在全仓无人挂载,所以协作分支在运行时从不执行。@object-ui/*包都不导入这两个名字,不受影响。外部 npm 用户若导入会在升级时编译报错,changeset 写明了改法。设计器行为不变。回滚即 revert 本 PR。ui/packages/plugin-designer/src/index.tsx、ui/packages/plugin-designer/src/ReportDesigner.tsx(删得最多的设计器)、.changeset/25921-plugin-designer-dead-collaboration-version-history.md。git grep -n -w -e CollaborationProvider -e useCollaboration -e VersionHistory -- ui/packages/plugin-designer ':!**/CHANGELOG.md',预期无输出(退出码 1)。What changes
src/CollaborationProvider.tsxis deleted: the provider,useCollaboration,ConnectionStatusIndicatorand their types.CollaborationProviderleft the entry in refactor(ui)!: retire zero-consumer exports from @object-ui/plugin-gantt and @object-ui/plugin-designer #29388 and nothing mounts it anywhere, souseCollaboration()always returnednull. InPageDesignerandReportDesigner, thebroadcastOpcallback, its call sites and thebroadcastOpentries in the hook dependency lists go.DataModelDesignerandProcessDesignerlose theircollaboration?.sendOperation(...)calls and thecollaborationdependency entries. The always-hidden "N users" status chip (DataModel, Process) and the "Connected" chip (Report, with its localLABELS.collaborationConnected) go too, as does the now-unusedUsersicon import inDataModelDesigner.AppCreationWizardandObjectManagerhad no collaboration branch.VersionHistory.src/components/VersionHistory.tsxand its testVersionHistory.displayLocale-9909.test.tsxare deleted, along with its twocomponents/index.tslines and the entry line. Nothing in the package rendered it. TheVersionHistorycase leavesariaLabelNames.zh-12145.test.tsx: the zh wait now anchors on the minimap image. The undo, redo and minimap names are still asserted against both packs.useConfirmDialog. Only the entry line goes.hooks/useConfirmDialog.tsand itshooks/index.tsline stay, becauseAppCreationWizard,DataModelDesigner,FieldDesigner,ObjectManager,PageDesigner,ProcessDesignerandReportDesignerimport it.hooks/index.tsis a sub-barrel nothing imports, the same state refactor(ui)!: retire zero-consumer exports from @object-ui/plugin-gantt and @object-ui/plugin-designer #29388 left it in.README.mdstops teaching both names.package.json's description drops "plus collaborative editing". One comment line inuseDesignerTranslation.tsstops namingVersionHistory's region.!changeset (patch,**BREAKING**banner, both declaration lines, the ADR-0087not-required (runtime-export-retired …)marker naming both operands, and a FROM → TO "no replacement" line per name).Why
The #28385 census was re-run before any edit at
origin/main128681f4(hotcrmd4ffe99). For each name,git grep -l -w -Fran over the whole tree minusui/packages/plugin-designer/**,**/CHANGELOG.md, the lockfiles,.changeset/**andui/.changeset/**(A). The brief's cut (ui packages apps examples content, tests excluded) is B, test files only is T and hotcrm is H. IN counts the in-package non-test files.ObjectGantt(control)SchemaRenderer(control)CreateAppPage(kept control)useConfirmDialogVersionHistoryVersionHistoryPropsVersionHistoryEntryDesignerConfirmDialogStateCollaborationProviderCollaborationProviderPropsCollaborationContextValueuseCollaborationConnectionStatusIndicatorThe single A/T hit for
useConfirmDialog,VersionHistory,VersionHistoryEntryandDesignerConfirmDialogStateis one file,ui/scripts/__tests__/one-authority-per-exported-name-6273.test.ts. Its historical comments ("ConfirmDialogStatesat here", "VersionEntrysat here") name the module paths. Under the claim, that comment does not keep a name. Keep rule 3: no kept entry export's declared signature names any retired type. Each appears only in its own module and its sub-barrel.After the change, at the merged head
d7514fc8, the samegit grepover the whole tree (CHANGELOGs and changesets excluded) finds zero files forCollaborationProvider,CollaborationProviderProps,CollaborationContextValue,useCollaboration,ConnectionStatusIndicatorandVersionHistoryProps.VersionHistory,VersionHistoryEntryanduseConfirmDialogoutside the package appear only in that test comment.useConfirmDialogis absent fromsrc/index.tsxandREADME.md(git grepexit 1). Control:SchemaRenderer1207 files.Tests
fb1192c3;d7514fc8merges 10origin/maincommits, none underui/packages/plugin-designer(branch delta re-read: the same 14 files, +52 / -573).pnpm --filter @object-ui/plugin-designer run type-check(tsc --noEmit && tsc -p tsconfig.test.json):VERDICT command-exit 0onfb1192c3and again ond7514fc8.pnpm --dir ui exec vitest run --maxWorkers=2 packages/plugin-designer/: Test Files 49 passed (49), Tests 456 passed (456),VERDICT command-exit 0on both heads.pnpm --dir ui exec vitest run --maxWorkers=2 scripts/(includescheck-readme-exports) onfb1192c3: Test Files 169 passed, 2 skipped (171); Tests 4921 passed, 2 skipped;VERDICT command-exit 0.eslinton the eight changed source and test files: 0 errors, 18 warnings, all on lines this diff does not touch.Acceptance notes
designer.versionHistoryis now unread. Its only reader wasVersionHistory. Per the claim it stays in the ten locale packs and inDESIGNER_DEFAULT_TRANSLATIONS, the table the en-pack mirror gate compares. It is left for the dead-key item.ui/scripts/__tests__/one-authority-per-exported-name-6273.test.tsstill namepackages/plugin-designer/src/components/VersionHistory.tsx, a path this PR deletes. They are a "sat here" record of an older rename, outside this claim's surface, and left as they are.@object-ui/types'CollaborationConfig,CollaborationPresenceandCollaborationOperationlose this package as a reader.@object-ui/collaborationstill imports all three, so they stay.@object-ui/app-shell's lazy designer pages, the Console) were not type-checked locally. The census shows neither imports either retired name (B = 0), and CI'sType Check UIcompiles them.CONTRACT_REVIEW_TIERreview is owed before the queue (an entry narrowing). The seat routes it to the director.Verification
Derived gates: 46/46 run, 0 NOT-MEASURED
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstackatfb1192c3gave 46 commands.--ranreports "46 derived famil(ies) accounted for — 46 run, 0 NOT-MEASURED". Every command exited 0. Among them:check-adr-0087-registration --base origin/mainand--self-test,check-changeset-no-major --base origin/main,check-empty-changeset,check-sdui-manifestand its--self-test,check:published-files,check:undeclared-dep-imports,check:nul-bytes,check:query-options-erasure(293 s),check-comment-mask-corpus(20193 files, 0 disagree),check:type-check-debt(locked, 0 raw tsc errors) andvitest run scripts/.At
d7514fc8the derived list is identical.check-adr-0087-registration,check-changeset-no-major,check-empty-changeset,check-sdui-manifest,check:changeset-fixed,check:nul-bytes,check:cross-package-test-inputs,check:published-files,check:undeclared-dep-importsandcheck:test-source-aliaswere re-run there, all exit 0.Outside the derived set:
check-platform-checklist --changed-from origin/mainexit 0 (0 anchored files).dispatch-gates --tier: no path-derived mandate, 625 changed lines (under the 3000 threshold), no governed path.Human Minimum
packages/specholds no runtime logic. (not touched)eslinton the changed files exits 0 (warnings only, all pre-existing). The repo-widepnpm lintis CI's run.main, one pull request.packages/spectouched: its generated artifacts are regenerated and committed. (not touched)content/docs/references/,packages/*/CHANGELOG.mdorcontent/docs/releases/.Generated by Claude Code