Skip to content

refactor(plugin-dashboard, plugin-list)!: retire eight zero-consumer entry exports - #30541

Merged
objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/project-thread-h719zv
Nov 5, 2026
Merged

objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/project-thread-h719zv

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Requested by Sales · project thread

Part of #25921. The umbrella stays open; this is one barrel batch of it (claim 6660204183, amended 6660498263, seat domain:ui#6).

Clause-②: no (narrowing)
Metadata-protocol: none

维护者速读

  • 改了什么:@object-ui/plugin-dashboard 的包入口不再导出 5 个名字(配置面板的默认英文表与翻译钩子、已退役节点类型的墓碑组件及其上报/重置函数),@object-ui/plugin-list 不再导出 3 个名字(视图切换下拉、标签栏下拉、条件格式包装函数)。模块本身全部保留。
  • 为什么改:这 8 个名字在仓内(包外)与 hotcrm 均零引用,只是让公开面看起来比实际大;本卡逐包清理无人使用的 barrel 导出。
  • 风险与回滚:对外是 breaking 收窄,只影响直接从包入口 import 这些名字的外部宿主;控制台与所有 @object-ui/* 包不受影响,退役节点仍按名拒绝。回滚即 revert 本 PR。
  • 先看:ui/packages/plugin-dashboard/src/index.tsx(两段导出改写)、.changeset/25921-plugin-dashboard-zero-consumer-exports.md(迁移说明)、ui/packages/plugin-list/src/index.tsx。
  • 两分钟验证:git grep -n -w -e ViewSwitcherDropdown -e TabBarSelect -e evaluateConditionalFormatting -e useConfigPanelTranslation -e RetiredDashboardNodeTombstone -- ':!ui/packages/plugin-list' ':!ui/packages/plugin-dashboard' ':!**/CHANGELOG.md' 应只命中两份新 changeset。
  • 需要你做的:无,席位落地。

What changes

  • ui/packages/plugin-dashboard/src/index.tsx: the entry stops exporting CONFIG_PANEL_DEFAULT_TRANSLATIONS, useConfigPanelTranslation, RetiredDashboardNodeTombstone, reportRetiredDashboardNodeType and resetRetiredDashboardNodeTypeReports. ConfigPanelTranslate (the README teaches it) and RETIRED_DASHBOARD_NODE_TYPES stay. The two comments that justified the old exports are rewritten: the defaults-vs-pack mirror gate (defaults-maps-mirror-en-pack.test.tsx) discovers every defaults table from source through scanDefaultsTables, so it needs no import from this entry.
  • ui/packages/plugin-dashboard/src/__tests__/dashboardBareKeyOwnership.test.tsx: imports RetiredDashboardNodeTombstone and resetRetiredDashboardNodeTypeReports from ../retired-node-types instead of ../index. Same objects, so the identity comparison is unchanged; the entry import still performs the registrations.
  • ui/packages/plugin-list/src/index.tsx: the entry stops exporting ViewSwitcherDropdown, TabBarSelect and evaluateConditionalFormatting.
  • Two new changesets, .changeset/25921-plugin-dashboard-zero-consumer-exports.md and .changeset/25921-plugin-list-zero-consumer-exports.md: patch level, ! title, BREAKING paragraph, one FROM/TO line per retired name, ADR-0087 marker not-required (runtime-export-retired …) naming every operand.
  • No module file is deleted. Every retired name keeps an in-package reader (ListView renders ViewSwitcherDropdown; the config panels use the hook; index.tsx registers the tombstone; the rest are read by their own tests).

Tests

Census on origin/main fa9c0aa with the #28385 / #29388 method: the entry export list from the TypeScript checker; per name git grep -o -w -F over the whole tree minus the package directory, **/CHANGELOG.md, lockfiles and .changeset/**; the package README, SKILL.md and demo; keep rule 3 (a name a kept export's declared signature reaches, walked with the checker); hotcrm 6961ab1 git grep -l -w -F.

Package Name Hits outside the package hotcrm Verdict
plugin-dashboard CONFIG_PANEL_DEFAULT_TRANSLATIONS 0 0 retired
plugin-dashboard useConfigPanelTranslation 0 0 retired
plugin-dashboard RetiredDashboardNodeTombstone 0 0 retired
plugin-dashboard reportRetiredDashboardNodeType 0 0 retired
plugin-dashboard resetRetiredDashboardNodeTypeReports 0 0 retired
plugin-dashboard ConfigPanelTranslate 0 kept: README "TypeScript Support" teaches it
plugin-dashboard WidgetDatasetCatalogEntry, WidgetDatasetDimension, WidgetDatasetMeasure 0 kept: rule 3, via WidgetConfigPanelProps
plugin-dashboard DashboardMetricNodeSchema 0 kept: its entry line is what loads widgetDispatch's CustomNodeRegistry augmentation into consumers' programs
plugin-list ViewSwitcherDropdown 0 0 retired
plugin-list TabBarSelect 0 0 retired
plugin-list evaluateConditionalFormatting 0 0 retired
plugin-list TabBarProps, UserFiltersHandle, ListViewRowGroup 0 kept: rule 3, via TabBar, UserFiltersProps, ListViewProps
controls DashboardRenderer 76, RETIRED_DASHBOARD_NODE_TYPES 2, ViewSwitcher 29, TabBar 11, normalizeFilterCondition 9, ListView 621; hotcrm ListView 7

Readings at head 14d4c82:

  • turbo run type-check for @object-ui/plugin-dashboard, @object-ui/plugin-list, @object-ui/app-shell, @object-ui/console with their ^build closure: 77 of 77 tasks successful (lock VERDICT command-exit 0, 8m39s).
  • pnpm --dir ui exec vitest run --maxWorkers=2 packages/plugin-dashboard/ packages/plugin-list/: Test Files 391 passed (391); Tests 3741 passed, 6 skipped (3747); VERDICT command-exit 0.
  • Reverse check on the rebuilt .d.ts: a temporary probe in app-shell importing all eight retired names plus four kept controls gave exactly eight errors, one per retired name (TS2305 / TS2724 … has no exported member), while RETIRED_DASHBOARD_NODE_TYPES, DashboardRenderer, TabBar and ViewSwitcher resolved. Probe deleted; git status clean.
  • pnpm --dir ui run check:readme-exports: 0 fabricated, 0 stale omission(s); exit 1 only on the known prerequisite (packages/cli dist unbuilt, its two self-imports unjudged).
  • node scripts/check-platform-checklist.mjs --changed-from origin/main: exit 0, 0 anchored files.
  • No ablation: export lines removed, no tested behaviour changed.

Acceptance notes

  • TabBarSelect and evaluateConditionalFormatting now have no reader in the package's non-test code either: only their own tests import them from the module. evaluateConditionalFormatting is a one-line wrapper over @object-ui/core's resolveConditionalFormatting. Retiring the bodies (and their tests) is a later pass on this card, not filed separately.
  • ui/packages/plugin-dashboard/README.md says the package's "whole type export surface is WidgetConfigPanelProps, ConfigPanelTranslate and the three WidgetDataset* catalog types"; DashboardMetricNodeSchema has been on the entry since an earlier release, so that sentence was already incomplete before this PR. Untouched here (README not on the claim's surface).
  • Branch name is the platform-assigned claude/project-thread-h719zv, not claude/issue-25921-*.
  • A contract-review-tier review is owed before the queue (narrowing batch); the seat runs it.

Verification

Derived gates, dogfood battery and the final-head readings are in the os-dev-report comment on #25921; CI check-runs on this PR are the record for every family CI runs.


Generated by Claude Code

…entry exports

plugin-dashboard's entry stops publishing CONFIG_PANEL_DEFAULT_TRANSLATIONS,
useConfigPanelTranslation, RetiredDashboardNodeTombstone,
reportRetiredDashboardNodeType and resetRetiredDashboardNodeTypeReports;
plugin-list's stops publishing ViewSwitcherDropdown, TabBarSelect and
evaluateConditionalFormatting. Each name had zero hits outside its package
(workspace and hotcrm); every module stays. The dashboard bare-key test
imports the tombstone and its reset helper from their module.

Claude-Session: https://claude.ai/code/session_01L6bhgUR8Nu4M7tbtgES7q2
Co-authored-by: Claude <noreply@anthropic.com>
@github-actions github-actions Bot added size/s documentation Improvements or additions to documentation tooling Fix lands in tooling, not a product package — enters pm:queue only with Unblocks: or a named surface labels Nov 5, 2026
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

domain:ui#6 · os-sales · session_01L6bhgUR8Nu4M7tbtgES7q2

维护者速读

  • 改了什么:@object-ui/plugin-dashboard 的入口不再导出 5 个名字(配置面板的英文默认表与翻译钩子、已退役节点的墓碑组件及其上报与重置函数),@object-ui/plugin-list 的入口不再导出 3 个名字(视图切换下拉、标签栏下拉、条件格式包装函数)。模块本身都留在包里,行为不变。
  • 为什么改:retire the zero-consumer surface: nine dead modules (2,211 LOC), plugin-ai, runner's publish flag, test-only reset helpers on public barrels, the providers trio, 122 dead i18n keys, root orphans #25921 收窄 ui 包的公共入口,这一批是工作区与 hotcrm 里零引用的导出。
  • 风险与回滚:只有从包入口直接 import 这 8 个名字的外部宿主会编译失败;工作区与 hotcrm 均无此类引用。每包一份 patch changeset,带 BREAKING 段与 FROM/TO 替代写法。回滚即撤本 PR。
  • 先看:ui/packages/plugin-dashboard/src/index.tsx、ui/packages/plugin-list/src/index.tsx 两处导出行,以及两份 changeset。
  • 两分钟验证:pnpm --dir ui exec vitest run packages/plugin-dashboard/src/__tests__/dashboardBareKeyOwnership.test.tsx,预期全绿。
  • 需要你做的:无,席位落地。
  • 席位意见:可合。卡保持打开,其余包的批次回到队列。

席位核对 — ACCEPT · head 14d4c82

  • 形态:5 文件 +56/−26(两个包入口、一份测试改从 ../retired-node-types 引、两份 changeset)。check-governed-merges --pr 30541:NOT governed,82 行 ≤ 3000。Part of #25921,draft,目标 main,merge-tree 对 main 干净。批次与认领修订 6660498263 一致,未碰 fields、data-objectstack、providers(ui#1 的折叠认领 6660217585 所在)。
  • 契约(收窄,契约复核档):Clause-② no (narrowing),Metadata-protocol none。席位在 head 上独立复核:8 个退役名在两个包目录之外的源码、文档(*.md/*.mdx,排除 CHANGELOG 与本 PR 的 changeset)里 0 处出现;dev 报告 6661715256 另列 hotcrm 6961ab1 0 处、README 不教、保留导出的声明类型不经过它们。保留项各有理由:ConfigPanelTranslate(README 教)、WidgetDataset*(经 WidgetConfigPanelProps)、DashboardMetricNodeSchema(加载 CustomNodeRegistry 增广)、RETIRED_DASHBOARD_NODE_TYPES(拒绝文案断言要引)、TabBarProps。两份 changeset 各有 ! 标题、BREAKING 段、逐名 FROM/TO 与 runtime-export-retired 的 ADR-0087 标记;墓碑仍由包自身按 RETIRED_DASHBOARD_NODE_TYPES 每键注册,view:dashboard 照旧按名拒绝。收窄无未述的使用方,席位接受。
  • 前提实测:dev 报告 6661715256。四包 type-check(含 ^build)77/77;两包 vitest 391 文件 3741 绿;scripts/ 4985 绿;dogfood 420/423 文件过、VERDICT 0;派生门禁 35/35、0 NOT-MEASURED。反向核对:重建 d.ts 后临时探针引 8 个退役名得恰好 8 个 TS2305/TS2724,4 个保留对照均解析,探针已删。
  • 门禁 check-runs:head 上 55 个,44 success,11 skipped,0 红。mergeable_state clean。
  • 接受的偏差:① 首个 commit 的 Claude-Session 尾注写成了本席会话;分支为卡线程分支,按 AGENTS §3 不改史,席位接受。② PR 归属块链接卡线程,与本席其它卡线程 PR 一致。③ main 领先 5 个 commit,只动 MetricWidget,与本 diff 不相交,未合入。
  • 范围外去向:其余 ui 包的零引用导出留在 retire the zero-consumer surface: nine dead modules (2,211 LOC), plugin-ai, runner's publish flag, test-only reset helpers on public barrels, the providers trio, 122 dead i18n keys, root orphans #25921,落地时写进 Release,卡回 pm:queue。
  • 落地条款:中继 pr_ready + automerge_enable。合并后卡不关(Part of),席位同一笔摘掉 pm:dispatched、换回 pm:queue,留一条 Release 评论写清本批交付与剩余。

@objectstack-fleet
objectstack-fleet Bot marked this pull request as ready for review November 5, 2026 15:23
@objectstack-fleet
objectstack-fleet Bot enabled auto-merge November 5, 2026 15:23
@objectstack-fleet
objectstack-fleet Bot added this pull request to the merge queue Nov 5, 2026
Merged via the queue into main with commit 48b3ae6 Nov 5, 2026
56 checks passed
@objectstack-fleet
objectstack-fleet Bot deleted the claude/project-thread-h719zv branch November 5, 2026 16:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/s tooling Fix lands in tooling, not a product package — enters pm:queue only with Unblocks: or a named surface

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant