Repository navigation
retire(components): remove the second ActionParamDialog export; app-shell's is the surviving implementation (#5685) - #5780
Merged
os-zhuang merged 1 commit intoAug 23, 2026
Conversation
…survives (#5685) Maintainer ruling of 2026-08-22 (issue #5685, option A): retire the `@object-ui/components` `ActionParamDialog` published export. Measured at the branch point it had zero production consumers — its only in-repo importers were its own five test files, and no other repo in the org imports the symbol from this package. The app-shell dialog (`packages/app-shell/src/views/ ActionParamDialog.tsx`) is the surviving implementation and is untouched. - delete `packages/components/src/custom/action-param-dialog.tsx` and its five `__tests__/action-param-dialog-*.test.tsx` files - drop the `custom` barrel's `export * from './action-param-dialog'` - withdraw the unreleased objectui#4758 changeset for this component (the fix retires before it ever ships) - unlist the deleted file from `config-panel-renderer.tsx`'s measured createSafeTranslation site list - changeset: `@object-ui/components` minor, breaking semantics and migration terms in the body (never `major`, per the version-alignment rule) The five-string i18n rebind this card originally asked for dies with the retirement, per the same ruling. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EuPCi56cnGyykygi3z9w4m
Contributor
✅ 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
|
os-zhuang
marked this pull request as ready for review
August 23, 2026 08:04
os-zhuang
deleted the
claude/issue-5685-retire-components-action-param-dialog
branch
August 23, 2026 08:05
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #5685
What this is
Maintainer ruling of 2026-08-22 on the issue (option A, recorded by the triage seat): retire
@object-ui/components'ActionParamDialog— the repo's second implementation of the action-param surface. The app-shell dialog (packages/app-shell/src/views/ActionParamDialog.tsx) is the surviving implementation and is untouched by this PR. The five-string i18n rebind the card originally asked for dies with the retirement, per the same ruling — it is deliberately not done here.Policy measurement — why this is one PR, not deprecate-then-remove
The ruling says "deprecate-first per repo policy"; the dispatch instructed measuring what that policy resolves to rather than inventing it. Measured:
AGENTS.mdandCONTRIBUTING.md;docs/hits are audits.minorbump, breaking semantics + migration terms in the changeset, surviving implementation named. Instances in this repo's own history: the sweep: dead-surface deletions batch 3 — 3 zero-consumer items, one claim, one PR (findings-triage 2026-08-11) #4328 dead-surface sweep (@object-ui/corestopped exportingmergeViewsIntoObjectswith "The live implementation … is unchanged and remains the only one"), the zero-consumer@object-ui/tenantpackage dropped whole ([liveness] @object-ui/tenant 包 + types/tenant.ts 零消费者 — 按 enforce-or-remove 处置(同 framework#2763 教义) #2564), the phantomCloudOperationssurface ([finding] CloudOperations is a phantom surface: the installed @objectstack/client has nocloudnamespace, so deploy() fabricates a deploymentId for work that never happened #4152), the shadowedSimpleTableRendererdeleted (finding(components):table被注册两次,data-display 的 SimpleTableRenderer 被 complex/table.tsx 完全遮蔽 —— 而它是唯一读bind的表格渲染器 #5125),capability-multiselect(capability-multiselectwidget 在实际注册路径上根本不存在 —— 代码注释却说它可从记录表单用 #3308), theglobal_navdesigner surfaces (retire(studio): drop the global_nav designer surfaces with the rc.6 spec bump (objectstack#7100) #4169).@deprecated-and-keep is used for surfaces that still have importers (the legacyActionSchemaincrud.ts).This export is in the first class, so the standing precedent applies: direct removal, one PR, no follow-up card.
Zero-consumer premise, re-measured on the base (
origin/main@ 286dd8d)__tests__/action-param-dialog-*.test.tsxfiles plus thecustombarrel line. All other ~38 in-repoActionParamDialoghits are the app-shell twin or comments about it (verified file-by-file).packages/components/src/custom/config-panel-renderer.tsxmentions it only in a comment (confirmed).objectstack: all 5 mentions are comments about the app-shell/console dialog; zero imports of@object-ui/componentsanywhere in that repo.objectstack-ai/objectstack, all comments/changelogs — no importer.docs/adr/0059names the app-shellActionParamDialogas its consumer, which survives — no ADR change is required, so the governed surface stays untouched.Changes
packages/components/src/custom/action-param-dialog.tsxand its five test files.export * from './action-param-dialog';frompackages/components/src/custom/index.ts..changeset/retire-components-action-param-dialog-5685.md):@object-ui/componentsminor per the version-alignment rule (nevermajor), with breaking semantics and FROM → TO migration terms for an out-of-repo host. Note the surviving twin is not a published standalone export — it is rendered by app-shell's action runtime — so the migration text says so honestly instead of promising a drop-in..changeset/action-param-dialog-option-visiblewhen-4758.md): it documents aselect-options fix to this very component; the component retires before that fix ever ships, so keeping it would put behaviour notes for a nonexistent surface into the same release's notes.config-panel-renderer.tsx's "measured, not chosen"createSafeTranslationsite list (comment-only edit) — otherwise the comment names a file that no longer exists.Verification (all at head
6d9c8321c; the tree tested is byte-identical to the commit —git status --porcelainwas empty between the runs and the commit, and nothing was edited after)os-verify-lock: VERDICT command-exit 0, 48.5s.grep -c ActionParamDialog packages/components/dist/index.d.ts→0; no file underpackages/components/dist/contains the symbol. The worktree never had a pre-edit build, so this cannot be a stale-dist reading.turbo run type-check --filter=@object-ui/components):VERDICT command-exit 0.pnpm exec vitest run packages/components/ --maxWorkers=2):Test Files 179 passed (179)/Tests 1640 passed (1640),VERDICT command-exit 0.6d9c8321c, each quoting its own verdict line: changeset presence ("✅ 8 source file(s) of 1 released package(s) changed, and this change declares 1 changeset(s)"), no-major ("✅ No changeset declares amajorbump."), control-bytes ("✅ check-control-bytes: OK (scanned 4807 tracked text file(s))"), self-import ("✅ No package names itself inside its own src/.").check:i18n-dead-keys(report, exit 0): the deleted file's only key,common.select, keeps its other consumers (LookupField, pinned pack tests) — no orphaned key.no-explicit-anywarnings inconfig-panel-renderer.tsx, untouched by this diff).Declared narrowing (CI runs the full farm): the repo-wide build/lint/test farm was not run locally. Evidence the narrowing excludes nothing: (1) a removed export can only break a module that names the symbol, and the population of symbol references was measured over the whole workspace plus the org (zero importers outside the deleted files); (2) this repo's lint rules are per-file AST bans (no cross-file count baselines — verified in
eslint.config.js/eslint-rules/), so untouched files' verdicts cannot move; (3)check-eager-closure-budgetis a size ceiling on the console's eager closure — a pure removal cannot raise it.Not touched:
content/(so the realBuild Docsdoes not trigger; the known-red #5668 stays out of play),docs/adr/**,AGENTS.md,CLAUDE.md,.claude/**,skills/**, and everything underpackages/app-shell/.Generated by Claude Code