feat(plugin-detail)!: delete seven unregistered, unmounted exports - #10453
Conversation
Deletes CommentInput, DiffView, InlineCreateRelated, MentionAutocomplete, PointInTimeRestore, RecordNavigationEnhanced and RelationshipGraph, their own tests, and every value and type export the barrel carried for them. None was registered with ComponentRegistry and none was mounted anywhere; the downstream readings (cloud, hotcrm) are zero, and the maintainer ruled delete (relayed on objectui#7192; also settles objectui#7175). The detail.* keys only these components read leave all ten locale packs and DETAIL_DEFAULT_TRANSLATIONS: PointInTimeRestore's ten (objectui#7163), DiffView's five and RecordNavigationEnhanced's six. Shared keys stay. Follow-through on text that named the deleted files: the display-locale suite loses its PointInTimeRestore and DiffView rows, comments that cited the InlineCreateRelated test or CommentInput are repointed, the plugin docs page stops teaching CommentInput / MentionAutocomplete, and the downstream-consumer census records the ruling. Changeset: minor with a BREAKING body (fixed group, AGENTS.md section 9). Claude-Session: https://claude.ai/code/session_01BA3nKVUwKQJf8DBxrSVtNC
…estore The dead-keys report, read before and after the deletion, surfaced one more key the seven components were the only readers of: detail.emptyValue (an older key than objectui#7163's ten). It leaves all ten packs and DETAIL_DEFAULT_TRANSLATIONS; the changeset lists it with the others and no longer names it among the kept shared keys. Claude-Session: https://claude.ai/code/session_01BA3nKVUwKQJf8DBxrSVtNC
|
changeset-claim-re-read
|
✅ Console Performance Budget
The eager closure is every chunk the entry reaches through static imports — what the browser fetches and parses before the app renders. The entry chunk on its own is a small fraction of it. 📦 Bundle Size Report
Size Limits
|
…bjectui#10425) The count-not-one half of seven values behind the `count === 1` switch held one noun form, wrong at some of the counts it serves (ru 2-4 and 21; ar 2 and 11+). Each becomes a count label, the objectui#10024 / #10242 device: ru list.recordCount; ar list.recordCount, lookup.recordCount, detail.reactionCount, collaboration.presentUserCount / moreUserCount and search.itemsAvailable. Key sets and call sites are unchanged. The card's eighth value, ar detail.revisionFieldsChanged, left the tree with its only consumer (PointInTimeRestore) in #10453. Pins: a real-render pin beside the objectui#10242 one, the 9664 value pin flipped to the new ar value, and the pending 9664 changeset's last sentence reworded to the shape the ar value now has. Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KUxVUa7e39aNjhkKi1gsoy
Fixes #7192
Clause-②: no
What this does
Deletes the seven
@object-ui/plugin-detailcomponents that nothing registered and nothing mounted, by maintainer ruling (relayed by triage on objectui#7192, comment 5819441716). The same PR settles the card that started the census:Fixes #7175
@object-ui/plugin-detailstops exporting seven components, one helper and fifteen types, and@object-ui/i18ndrops 22detail.*keys from all ten locale packs. The changeset isminorwith a BREAKING body, nevermajor(AGENTS.md §9: the fixed group follows the@objectstackmajor).CommentInputCommentInputPropsDiffViewDiffViewProps,DiffFieldType,DiffMode,DiffLineInlineCreateRelatedInlineCreateRelatedProps,RelatedFieldDefinition,RelatedRecordOptionMentionAutocomplete(+ valuecreateMentionFromSuggestion)MentionAutocompleteProps,MentionSuggestionItemPointInTimeRestorePointInTimeRestoreProps,RevisionEntryRecordNavigationEnhancedRecordNavigationEnhancedPropsRelationshipGraphRelationshipGraphProps,GraphNodeKept on purpose:
RichTextCommentInputand itsMentionSuggestiontype (the composerRecordActivityTimelinemounts),RecordComments(DetailViewmounts it),extractMentions.Migration (in the changeset): no replacement. An external user copies the component source from a release tag that still ships it;
@object-ui/plugin-detail@17.5.0was checked to contain all seven files (git cat-file -e, 7 of 7 exit 0, a missing-file control exit 128). A real consumer later gets a new card.The diff
PointInTimeRestore.i18n.test.tsxand the four__tests__/InlineCreateRelated.*.test.tsx. The other five components had no test of their own.packages/plugin-detail/src/index.tsx): the value and type exports listed above are gone.DETAIL_DEFAULT_TRANSLATIONS. That is 22 keys, not the 17 the dispatch assumed (see Measurements):PointInTimeRestore's 10 from objectui#7163;emptyValue, an older key whose last reader wasPointInTimeRestore;DiffView's 5;RecordNavigationEnhanced's 6.recordOf,noRecords,cancel,activityEmptyValue, and the relative-time keys.detailTimestamps.displayLocale-9786.test.tsxloses itsPointInTimeRestoreandDiffViewrows, fixtures and imports. Its header now says why those rows left.InlineCreateRelated.closeButtonName.test.tsx(close-label.tsxand twocomponentstests) now keep only the live example.useDetailTranslation.tsPointInTimeRestorecomment is gone with its block.app-shelltest comment called the composerCommentInput's textarea. It isRichTextCommentInputasRecordActivityTimelinemounts it, and the comment now says so.content/docs/plugins/plugin-detail.mdxstops teachingCommentInput,MentionAutocompleteandCommentInputProps. This edit was required, not cosmetic: see the ablation below.docs/audits/2026-09-plugin-detail-downstream-consumer-census.mdgains a dated "Conclusion (2026-09-24)" section: the ruling, how the open populations closed, and a pointer to this PR through objectui#7192 and this branch. The PR number is not written into the doc because this body is written once, before the number exists..changeset/7192-retire-seven-unmounted-detail-exports.md:minorfor@object-ui/plugin-detailand@object-ui/i18n, marked BREAKING, listing every removed export and key, with the migration.Measurements (base
9ec8ceba0)git grep -lw NAME -- 'packages/*/src/*' 'apps/*' 'examples/*'. The controlRecordCommentslightsDetailView.tsx. Mounts for each of the seven: 0.plugin-detail.mdx.skills/,apps/and all packageREADMEs: zero hits.ROADMAP.mdand CHANGELOGs are history.plugin-detailmakes 16ComponentRegistry.registercalls, and none registers any of the seven. No other package names them.emptyValuestep,detail.emptyValueappeared as a NEW candidate. That is how it was found.enpack keys went from 3053 to 3031.useDetailTranslation, which stays live.Mention(@object-ui/types) lost its only importer outsidepackages/types, butFeedItem.mentionsstill references it.Verification, at head
ecfb362b3All runs below are at
ecfb362b3, the final commit.pnpm exec vitest run packages/plugin-detail/ packages/i18n/(repo root):Test Files 271 passed | 1 skipped (272),Tests 3183 passed | 8 skipped. The skipped file is the pre-existingskipIfinsummaryChip.dateOnlyZone-10183.scripts/__tests__/together with every test that reads a touched file as text:Test Files 199 passed | 2 skipped (201),Tests 5799 passed | 2 skipped. Those tests aredefaults-maps-mirror-en-pack, the dialog-close i18n suites,registry-inputs-spec-parity, thetypesparity suites, and the rest found withgit grepfor the touched paths.turbo run buildof all packages; every task was a turbo cache miss that executed):@object-ui/plugin-detail,@object-ui/i18n, and every importer of plugin-detail (app-shell,plugin-calendar,plugin-gantt,plugin-grid,plugin-kanban,plugin-tree,console,example-console-starter). All exit 0.tsconfig.test.json --listFilesincludes the edited 9786 test.plugin-gridimportedRecordComments,PointInTimeRestoreandRevisionEntryfrom@object-ui/plugin-detail.tscreturned exit 2, with exactly two errors, bothTS2305 has no exported member(PointInTimeRestore,RevisionEntry).RecordCommentsresolved. There were 0 errors elsewhere.git statusis clean..d.ts.plugin-detail.mdxrestored over the edit,check-doc-snippet-typesexits 1 withTS2305 ... has no exported member 'CommentInputProps'on that page. The restore was proven by blob hash equal to HEAD and an emptygit diff HEAD.check:readme-exports: OK, 546 real, 0 fabricated.check:i18n-keys: every call-site key resolves, 3031 keys.check:i18n-dead-keys: report-only; set equals base.check:unreferenced-sources: OK.check:control-bytes: OK.check:new-line-citations: 0 new.check-changeset-presence: 1 changeset declared.check:changeset-claims: report-only, see Acceptance notes.check-changeset-no-major,check-changeset-overwrite(no pending changeset modified) andcheck-changeset-fixed.check:doc-snippets,check:doc-types,check:doc-fences,check:doc-examples,check:doc-example-ids,docs:check-links.check:i18n-drift,check:i18n-designer-parity,check:eager-locale-catalogues,check:dist-completeness,check:published-dist,check:phantom-deps,check:unused-deps,check:self-import,check:esm-specifiers,check:side-effects-array,check:sdui-registration-pins,check:component-surface-parity,check:registry-bare-names,check:handler-key-reads,check:doc-example-readers,check:pending-changeset-literals,check:test-path-roots,check:vi-mock-specifiers.check-governed-queue-guard --testover the 32 changed paths says NOT GOVERNED. Its control,AGENTS.md, returns exit 3.react-refresh/only-export-componentsonindex.tsxis 30 at base and 29 now.pnpm lintover the whole repo, the fullpnpm testand the remaining check families are left to CI.Acceptance notes
detailTimestamps.displayLocale-9786.test.tsx, which import two deleted components;componentstest comments and oneapp-shelltest comment that named deleted files or components;content/docs/plugins/plugin-detail.mdx, which redscheck:doc-snippetswithout the edit.DiffView's,RecordNavigationEnhanced's and theemptyValuekeys. The claim's parenthetical said the objectui#7163 keys only. The ruled deliverable is the keys only these components use, and measurement found these as well.7163-detail-timestamp-i18nand9786-detail-timestamps-display-localedescribe work onPointInTimeRestoreandDiffView, which will ship in the same release as their removal.check-changeset-overwritereports none modified.check:changeset-claimslists 4 pending changesets that name a touched file. Each paragraph was read, and each is still accurate as a description of its own change.ROADMAP.mdstill listsCommentInputandMentionAutocompleteas done items. It is a historical checklist and is not edited here.plugin-detail.mdx"Key Components" table does not listRichTextCommentInput, the composer that is actually mounted. Adding it would widen this PR, so it is not done.Generated by Claude Code