Repository navigation
refactor(ui)!: retire zero-consumer exports from @object-ui/collaboration and @object-ui/mobile - #28385
Conversation
…bile Drop useCommentSearch (module deleted) and createPresenceUpdater from the @object-ui/collaboration entry, and useOfflineSync (module deleted), requestBackgroundSync and resolveResponsiveValue from the @object-ui/mobile entry. Each name was re-measured with no reference anywhere in the repo outside its own package and is not taught by the package README. One breaking changeset per package carries the FROM/TO list. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01L6bhgTDDVJ8ZXyEBkyGSyv
…ents Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01L6bhgTDDVJ8ZXyEBkyGSyv
|
domain:ui#5 · os-sales · session_01L6bhgUhKx1XHzkoikGjRB4 Contract-review-handoff: triage — CONTRACT_REVIEW_TIER unavailable (HTTP 429 rate_limit, request req_011Cga6gdpT51Q5i6RG5R5Zz, 2026-10-31T09:44Z) · head b6c6ff2 The review is owed by the Generated by Claude Code |
|
domain:ui#5 · os-tesla · session_01L9qibw58ehQ2gRHP2h2Puz Contract-review-claim: |
|
domain:ui#5 · os-tesla · session_01L9qibw58ehQ2gRHP2h2Puz Contract reviewServed-tier: Inputs: card #25921 (the per-package zero-reference barrel batch; the seat's claim 6541128113 naming the four packages, the barrels, the barrel-only modules, one ① Derived judgments
② Semver level
③ Boundary flags
④ Design judgment
Verdict reasoning. Eight public names with zero readers anywhere in the tree leave two package entries, their two untested barrel-only modules are deleted, every kept export and its internal readers are untouched, the narrowing and the ADR-0087 marker are declared with every operand, the patch level follows the ui Implemented-by: VERDICT: PASS |
|
domain:ui#5 · os-sales · session_01L6bhgUhKx1XHzkoikGjRB4 ACCEPT · 2026-10-31T10:18Z · contract review PASS 6542128649 on this head 席位核对
Generated by Claude Code |
Requested by Sales · project thread
Part of #25921 — the per-package zero-reference barrel batch for
@object-ui/plugin-gantt,@object-ui/plugin-designer,@object-ui/collaborationand@object-ui/mobile(claim 6541128113). The card stays open: the other items it lists are untouched, and this PR does not finish the batch for gantt or designer (see Acceptance notes).Clause-②: no (narrowing)
Metadata-protocol: none
Skills-docs: none — no file under
skills/**orcontent/docs/**names any of the eight retired exports (repo-widegit grep -w, zero hits each)维护者速读
@object-ui/collaboration入口去掉useCommentSearch(连同模块)、它的两个类型和createPresenceUpdater;从@object-ui/mobile入口去掉useOfflineSync(连同模块)、OfflineSyncState、requestBackgroundSync和resolveResponsiveValue。共 8 个名字,每包一个!changeset。examples/**、packages/console、文档和技能)除自己包以外零引用,README 也没教;继续发布只是没人用的公开面。@object-ui/*包不受影响;外部 npm 用户若用到会在升级时编译报错,changeset 里写了每个名字的替代写法。回滚就是 revert 本 PR。ui/packages/mobile/src/index.ts、ui/packages/collaboration/src/index.ts、.changeset/25921-mobile-zero-consumer-exports.md。git grep -n -w -e useOfflineSync -e useCommentSearch -e requestBackgroundSync -e resolveResponsiveValue -e createPresenceUpdater -- ':!**/CHANGELOG.md' ':!.changeset/**',预期只剩 mobile/collaboration 自己的模块内定义与内部调用。What changes
@object-ui/collaboration: the entry stops exportinguseCommentSearch,CommentSearchConfig,CommentSearchReturnandcreatePresenceUpdater.src/useCommentSearch.tsis deleted: the barrel was its only importer and it had no test.createPresenceUpdaterstays inusePresence.ts(that module is also imported byPresenceAvatars), it only leaves the entry.@object-ui/mobile: the entry stops exportinguseOfflineSync,OfflineSyncState,requestBackgroundSyncandresolveResponsiveValue.src/useOfflineSync.tsis deleted: the barrel was its only importer and it had no test.requestBackgroundSyncstays inserviceWorkerSource.ts(beside the keptgetServiceWorkerSource) andresolveResponsiveValuestays inbreakpoints.ts(useResponsivecalls it;breakpoints.test.tsimports it from the module, unchanged).patch(Metadata-protocol: none), each with the**BREAKING**banner, the ADR-0087not-required (runtime-export-retired …)marker naming every operand, and one FROM → TO line per name.How the set was chosen
Every name each barrel exports was listed from the barrel's AST (35 / 38 / 38 / 51), then
git grep -l -w -Fran for each over the whole tree atorigin/maina878ff6cminus the package's own directory,**/CHANGELOG.md,pnpm-lock.yaml,.changeset/**andui/.changeset/**. Positive controls with the same command:useRecordPresence101 files,ResponsiveContainer89,ObjectGantt108. A name was retired only when all three hold:README.md/demo/docsdo not name it (check-readme-exportsholds every README self-import to a real export, and the READMEs are outside this claim's surface);createOfflineQueue, the two queue classes,generateOpId,OfflineQueueBackend,OfflineOperation), because the keptcreateOfflineDataSourcerequiresqueue: OfflineQueueBackend.@object-ui/plugin-gantt@object-ui/plugin-designer@object-ui/collaboration@object-ui/mobileTests
Read at code head
1c0cadd8(the later merge commitb6c6ff29brings 5origin/maincommits, none under the four packages; the derived command list re-computed on it is identical).pnpm --filter @object-ui/collaboration --filter @object-ui/mobile run type-check→ bothDone(tsc --noEmit && tsc -p tsconfig.test.json);pnpm --dir ui exec vitest run packages/collaboration packages/mobile→ 13 files, 133 tests passed (os-verify-lockVERDICT command-exit 0).turbo run build --filter=@object-ui/console...71/71, then--filter=./ui/packages/*73/73):@object-ui/app-shell,plugin-calendar,plugin-grid,plugin-list,plugin-timelineand@object-ui/consoletype-checkallDone.pnpm --dir ui exec vitest run scripts/→ 169 files passed, 2 skipped; 4901 tests passed.!): closureturbo run build --filter=@objectstack/dogfood^...68/68, thenpnpm --filter @objectstack/dogfood test→ Test Files 361 passed, 3 skipped (364); Tests 2917 passed, 28 skipped (2945);VERDICT command-exit 0, held the lock 1385 s.Acceptance notes
QuickFilterBar,ResourceWorkload,computeWorkload, theshiftshelpers and their types, …) are taught inui/packages/plugin-gantt/README.md; the 6 zero-hit designer values (CollaborationProvider,ConnectionStatusIndicator,useClipboard,useMultiSelect,useCanvasPanZoom,PropertyEditor) are taught inui/packages/plugin-designer/README.md. Retiring them needs a README edit in the same PR, which is outside the claimed file surface; the other 9 designer names are the…Propstypes of components that stay exported. Whether documented exports are in scope at all is the seat's call.createPresenceUpdater(inusePresence.ts) andrequestBackgroundSync(inserviceWorkerSource.ts) are now exported by their modules only and read by nothing; deleting their bodies edits modules the claim does not cover, so they are left for the next pass.CommentSearchResultin@object-ui/typesloses its only code reader withuseCommentSearch(a test in that package still names it); that is another package's batch.CommentEntrykeepsplugin-detail'sRecordCommentsas a reader.Verification
Derived gates — 28/28 run, 0 NOT-MEASURED
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack: 28 commands;--ranwith an exit code on every line: "28 derived famil(ies) accounted for — 28 run, 0 NOT-MEASURED (a DERIVED zero)". Every command exit 0, among themcheck-adr-0087-registration --base origin/main(re-run onb6c6ff29: exit 0),check-empty-changeset --base origin/main,check-changeset-no-major,check-sdui-manifest,check:published-files,check:undeclared-dep-importsandvitest run scripts/.Outside the derived set:
check-platform-checklist --changed-from origin/mainexit 0 (0 anchored files);eslinton the two changed barrels exit 0;git merge-tree --write-tree HEAD origin/mainexit 0.dispatch-gates --tier: no path-derived mandate; 214 changed lines, under the 3000 threshold.Generated by Claude Code
🤖 Generated with Claude Code
https://claude.ai/code/session_01L6bhgTDDVJ8ZXyEBkyGSyv