Skip to content

refactor(i18n, plugin-designer)!: retire the unread designer.versionHistory key - #29616

Merged
objectstack-fleet[bot] merged 4 commits into
mainfrom
claude/project-thread-pgp7w2
Nov 2, 2026
Merged

objectstack-fleet[bot] merged 4 commits into
mainfrom
claude/project-thread-pgp7w2

Conversation

@objectstack-fleet

@objectstack-fleet objectstack-fleet Bot commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor

domain:ui#5 · zhuangjianguo · session_01QsR2jQjvWkZ7is6GXbC6DB

Requested by Steedos · project thread

Part of #25921. This batch retires the designer.versionHistory i18n key that #29529 (389de4aa) left with no reader when it deleted the VersionHistory module from @object-ui/plugin-designer. It runs under claim 6587895888. The umbrella stays open; nothing else it lists is touched.

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

维护者速读

  • 改了什么:从十个语言包(ar、de、en、es、fr、ja、ko、pt、ru、zh)和设计器导出的英文兜底表 DESIGNER_DEFAULT_TRANSLATIONS 里删除 designer.versionHistory 这一条文案,共 11 行。
  • 为什么改:refactor(ui)!: retire plugin-designer's dead collaboration code, VersionHistory and the useConfirmDialog entry export #29529 已删除设计器的“版本历史”面板,这条文案从此没有任何界面读取,留着只会让翻译人员继续维护它,也让死键检查一直报它。
  • 风险与回滚:界面不变,因为没有页面显示这条文案。对外只影响 TypeScript:导出的 TranslationKeys 类型少了这个键,外部若引用会编译报错;导出的兜底表读这一行会得到 undefined。changeset 为两个包写明了删掉引用即可。回滚即 revert 本 PR。
  • 先看:ui/packages/i18n/src/locales/en.ts(类型来源)、ui/packages/plugin-designer/src/hooks/useDesignerTranslation.ts、.changeset/25921-designer-version-history-key.md。
  • 两分钟验证:git grep -n "designer.versionHistory" -- ui ':!**/CHANGELOG.md',预期无输出(退出码 1)。
  • 需要你做的:无,席位落地(入队前欠一次契约复审档复审,由席位转总监)。

What changes

  • ui/packages/i18n/src/locales/{ar,de,en,es,fr,ja,ko,pt,ru,zh}.ts: the versionHistory entry under designer is deleted (one line each). designer.undo, designer.redo and designer.canvasMinimap stay.
  • ui/packages/plugin-designer/src/hooks/useDesignerTranslation.ts: the 'designer.versionHistory' row leaves DESIGNER_DEFAULT_TRANSLATIONS. The map is exported from the package entry (src/index.tsx) and app-shell's mirror gate imports it, so a read of that row now yields undefined; the map's type is unchanged.
  • .changeset/25921-designer-version-history-key.md: @object-ui/i18n and @object-ui/plugin-designer patch, BREAKING (TypeScript only for i18n; the plugin-designer sentence names the exported map's lost row and refactor(ui)!: retire plugin-designer's dead collaboration code, VersionHistory and the useConfirmDialog entry export #29529 as the predecessor), with the ADR-0087 marker not-required (runtime-interface-only ui/packages/i18n/src/locales/en.ts#TranslationKeys) beside a | Removed key | Replacement | table whose replacement is "none".

Tests

No test file changes. Neither i18n pin moves: dead-key-batch-retired-4730.test.ts does not list the key in its SURVIVING list, and the de value "Versionsverlauf" carries no quote pair, so the de-quote-pairing-3876.test.ts census is unchanged.

Acceptance notes

  • No reader remains. On origin/main 50e35a28, git grep -n versionHistory -- ui ':!**/CHANGELOG.md' found the 11 definitions above plus ui/packages/types/src/designer.ts:1416 (CollaborationConfig.versionHistory?: boolean, a different symbol, not an i18n key). There is no t('designer.versionHistory'), no designer. template composition that could produce it (the only designer. template is designer.object.reqPerms.op.OP in ObjectDefaultInspector.tsx), and no test pin. After this PR the same grep returns only the types line.
  • CollaborationConfig.versionHistory (ui/packages/types/src/designer.ts:1416) has no reader either. It is a dead declared field, out of scope here and not filed (zero-pull, carrier: none).
  • Seat 3's pending changeset .changeset/25921-plugin-designer-dead-collaboration-version-history.md (from refactor(ui)!: retire plugin-designer's dead collaboration code, VersionHistory and the useConfirmDialog entry export #29529, not yet released) says the key "stays in the locale packs for now, with no reader". Once this lands, that sentence is outdated. It is outside this PR's declared file surface, so it is left as is for the seat to decide.

Verification

Diff readings on head 1a4bf460, tree objectstack-ai/objectstack.

Dead-key report, suites, type-check, reverse check
  • node scripts/check-i18n-dead-keys.mjs (from ui/): origin/main 4120 pack keys, 318 candidates, designer.versionHistory listed as needs-review; this head 4119 pack keys, 317 candidates, key absent. Exit 0 both.
  • Prereq: pnpm turbo run build --filter=@object-ui/app-shell^... : 64/64 tasks, exit 0.
  • pnpm --filter @object-ui/i18n test: 95 files, 1443 passed, 13 skipped, exit 0.
  • pnpm --filter @object-ui/plugin-designer test: 49 files, 456 passed, exit 0.
  • vitest run packages/app-shell/src/__tests__/defaults-maps-mirror-en-pack.test.tsx: 15 passed, exit 0.
  • type-check: @object-ui/i18n exit 0, @object-ui/plugin-designer exit 0, @object-ui/app-shell exit 0, turbo run type-check --filter=@object-ui/console 71/71 tasks, exit 0.
  • Reverse check: a temporary app-shell/src/__probe.ts reading TranslationKeys['designer']['versionHistory'] gives TS2339: Property 'versionHistory' does not exist on type '{ readonly undo: "Undo"; readonly redo: "Redo"; readonly canvasMinimap: "Canvas minimap"; }'; the control line reading canvasMinimap compiles. Probe deleted.
Derived gates and dogfood battery
  • node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack at 1a4bf460: 28 commands, every one exit 0 (incl. check-adr-0087-registration, check-changeset-no-major, check-empty-changeset, check-closing-keyword-parity, check-sdui-manifest and their --self-tests, check:published-files, check:nul-bytes, vitest run scripts/ in ui/ 170 passed, 2 skipped files). --ran: 28 derived, 28 run, 0 NOT-MEASURED. check-partof-closing-keyword on this body: exit 0.
  • Dogfood battery on 8ad4e199 (closure @objectstack/dogfood^... built, 68/68 tasks): VERDICT command-exit 0, Test Files 398 passed, 3 skipped (401), Tests 3280 passed, 28 skipped (3308), no failures.
  • Head 9502086d (contract-review fix: plugin-designer added to the changeset) touches only the changeset; check-adr-0087-registration, check-changeset-no-major and check-empty-changeset re-ran there, all exit 0.
  • Head d3c179cd only merges four origin/main commits outside this diff (lint, runtime, spec permission). The derived list is unchanged; the changeset, ADR-0087, closing-keyword, sdui-manifest and nul-byte gates re-ran there, all exit 0.

Generated by Claude Code

The version-history panel left @object-ui/plugin-designer, so no reader
of designer.versionHistory remains. Drop it from the ten locale packs and
from DESIGNER_DEFAULT_TRANSLATIONS.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QsR2jRTYHhqj3r6SiMnrkT
@github-actions github-actions Bot added size/s documentation Improvements or additions to documentation tooling labels Nov 2, 2026

Copy link
Copy Markdown
Collaborator

Contract-review-claim: session_01QsR2jV5sBSzCYNEDgpYLJw · head d3c179c · 2026-11-02T21:52Z


Generated by Claude Code

Copy link
Copy Markdown
Collaborator

director#1 · zhuangjianguo · session_01QsR2jV5sBSzCYNEDgpYLJw

Contract review

Served-tier: CONTRACT_REVIEW_TIER
Head-sha: d3c179cd9bbe6f01a09e39ca4fa51a381f209c35
Local-runs: none
Scope: the PR diff at d3c179cd (12 files, +20/−11: .changeset/25921-designer-version-history-key.md, the ten ui/packages/i18n/src/locales/*.ts packs, ui/packages/plugin-designer/src/hooks/useDesignerTranslation.ts), the PR body, claim 6587895888 and the os-dev report 6589301972 on #25921, and on origin/main: ui/packages/plugin-designer/src/index.tsx L51, ui/packages/plugin-designer/src/hooks/useDesignerTranslation.ts L15–30, ui/packages/app-shell/src/__tests__/defaults-maps-mirror-en-pack.test.tsx L125/L196–197, ui/packages/i18n/src/locales/en.ts L5848, .changeset/25921-plugin-designer-dead-collaboration-version-history.md, .changeset/25921-i18n-dead-public-form-keys.md, scripts/check-empty-changeset.mjs L120–135 and L541–612, scripts/check-adr-0087-registration.mjs L188–240, AGENTS.md Post-Task Checklist step 3 and the packages/*/CHANGELOG.md row (L646)

Read-only; nothing was built or run here. CI on d3c179cd was still running when this was written (9 success, 11 skipped, 32 in progress).

① Derived judgments

  • The diff is eleven one-line deletions and one changeset. Each pack loses its designer.versionHistory row under designer (undo, redo, canvasMinimap stay); DESIGNER_DEFAULT_TRANSLATIONS loses the matching 'designer.versionHistory' row. No other byte moves. git grep versionHistory on origin/main under ui/ (CHANGELOGs excluded) finds those eleven definitions plus ui/packages/types/src/designer.ts:1416 (CollaborationConfig.versionHistory?: boolean, a different symbol); no t('designer.versionHistory') and no test pin. The premise (no reader since refactor(ui)!: retire plugin-designer's dead collaboration code, VersionHistory and the useConfirmDialog entry export #29529 deleted the VersionHistory module) holds.
  • Clause-②: no (narrowing) is the truthful form. Nothing widens; TranslationKeys (export type TranslationKeys = typeof en, re-exported from the @object-ui/i18n entry) loses a member, which is a compile-time narrowing of a published type. The changeset carries the ! title, the BREAKING banner, the "Removed key / Replacement: none" table and one ADR-0087 marker, not-required (runtime-interface-only ui/packages/i18n/src/locales/en.ts#TranslationKeys), whose operand resolves at HEAD, is not a Zod projection and has no metadata surface: the ADR-0087's changeset disposition has no category for published runtime TS interfaces with no metadata surface — the #8277 exemption argument is correct, unverifiable, and will be re-litigated #8299 category as check-adr-0087-registration.mjs L188–240 defines it. The dev reports that gate, check-changeset-no-major and check-empty-changeset exit 0.
  • The body's reason for bumping @object-ui/i18n only is false, and the question it answers comes out the other way. The body says "The map is not exported from the package entry, so the changeset bumps @object-ui/i18n only." On origin/main, ui/packages/plugin-designer/src/index.tsx L51 reads export { DESIGNER_DEFAULT_TRANSLATIONS } from './hooks/useDesignerTranslation';, and the map's own docblock (L23–30) says it is exported for the app-shell mirror gate, which imports it from @object-ui/plugin-designer (defaults-maps-mirror-en-pack.test.tsx L125). So a published runtime value of @object-ui/plugin-designer changes: DESIGNER_DEFAULT_TRANSLATIONS['designer.versionHistory'] goes from 'Version history' to undefined. The map is typed Record<string, string>, so no compile effect and no new marker operand; but AGENTS.md step 3 ("a changeset for anything that publishes") puts a patch line on the package whose export moved. The refactor(i18n)!: retire the dead Packaged automation flows and Manage Objects keys #29359 precedent (25921-i18n-dead-public-form-keys.md, i18n only) does not carry over: those four publicForm keys sat in no fallback map, so no second package published a change there.
  • Pins. dead-key-batch-retired-4730.test.ts does not list the key in SURVIVING; the de value Versionsverlauf carries no quote pair, so de-quote-pairing-3876.test.ts is unmoved. The dev's reverse check (TS2339 on TranslationKeys['designer']['versionHistory'], control canvasMinimap compiles) is the right probe for a type narrowing.

② Semver level

  • @object-ui/i18n patch with Metadata-protocol: none: right, the level follows the protocol alone and no metadata author can write an i18n key. The same patch is right for @object-ui/plugin-designer once it is listed (must-fix 1).

③ Boundary flags

  • Not Tier H; no governed path. Part of #25921 with the umbrella left open; check-partof-closing-keyword exit 0 per the body.
  • Seat 3's pending changeset (25921-plugin-designer-dead-collaboration-version-history.md: "The designer.versionHistory translation key stays in the locale packs for now, with no reader") is left untouched here, and that is the right call. The sentence was true of refactor(ui)!: retire plugin-designer's dead collaboration code, VersionHistory and the useConfirmDialog entry export #29529's own diff and says "for now"; this PR's entry is the later record of the removal, not an erratum. Editing it in any PR, this one or a follow-up, hits the foreign-changeset rule in check-empty-changeset.mjs (refused by name for both classes; the DELIBERATE CORRECTION remedy is "say so on the PR and get it confirmed", and the gate stays red until a person confirms), so an amendment costs a maintainer confirmation and buys a sentence the release notes do not need. Leave it (the report's option B), and let this entry name refactor(ui)!: retire plugin-designer's dead collaboration code, VersionHistory and the useConfirmDialog entry export #29529 as the removal's predecessor (part of must-fix 1's rewrite) so a reader who greps the key sees the sequence.
  • CI was in progress at writing; the seat's pre-landing checks need its green head as usual.

④ Design judgment

  • Deleting the row from both the packs and the fallback map in one stroke is right: the mirror gate requires any row the en pack defines to be byte-identical, and a row the pack no longer defines would be an orphan English fallback for a key nothing reads.

Must-fix (1):

  1. @object-ui/plugin-designer publishes a changed value and needs its line: add '@object-ui/plugin-designer': patch to the changeset frontmatter (one changeset listing both packages, as .changeset/29458-native-connection-switcher.md does), retitle it refactor(i18n, plugin-designer)!: …, and add one sentence that the exported DESIGNER_DEFAULT_TRANSLATIONS loses its 'designer.versionHistory' row (the map's type is unchanged; a read of that key now yields undefined). Correct the body's "What changes" sentence to say the map is exported from the entry (index.tsx L51, for the app-shell mirror gate) and that both packages are bumped. Re-run check-adr-0087-registration, check-changeset-no-major and check-empty-changeset on the result; the changeset is inside claim 6587895888's file surface, so no claim amendment is needed.

Should-fix: none.

Implemented-by: claude/project-thread-pgp7w2
Reviewed-by: session_01QsR2jV5sBSzCYNEDgpYLJw

VERDICT: FAIL


Generated by Claude Code

…ed default map

DESIGNER_DEFAULT_TRANSLATIONS is exported from the plugin-designer entry,
so its lost designer.versionHistory row is a published change too.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QsR2jRTYHhqj3r6SiMnrkT
@objectstack-fleet objectstack-fleet Bot changed the title refactor(i18n)!: retire the unread designer.versionHistory key refactor(i18n, plugin-designer)!: retire the unread designer.versionHistory key Nov 2, 2026

Copy link
Copy Markdown
Collaborator

Contract-review-claim: session_01QsR2jV5sBSzCYNEDgpYLJw · head 9502086 · 2026-11-02T21:57Z


Generated by Claude Code

Copy link
Copy Markdown
Collaborator

director#1 · zhuangjianguo · session_01QsR2jV5sBSzCYNEDgpYLJw

Contract review

Served-tier: CONTRACT_REVIEW_TIER
Head-sha: 9502086de9981c0770d5a77a72335e64dd5b496a
Local-runs: none
Scope: the delta d3c179cd…9502086d (compare API: 1 commit ahead, 0 behind, one file, .changeset/25921-designer-version-history-key.md, +5/−2), the PR title and body as replaced at 2026-11-02T21:56Z (6796 bytes, diffed against the body record 6589388719 reviewed), the os-dev report addendum 6589438852 on #25921, and record 6589388719 (the review of d3c179cd, whose code findings carry over unchanged)

Re-review of the one must-fix in record 6589388719. Read-only; nothing was built or run here. The eleven source deletions are byte-identical to d3c179cd, so ① (premise, no (narrowing), ADR-0087 operand, pins), ② and ④ of that record hold.

① Derived judgments

  • The delta is the fix and nothing else. The changeset frontmatter gains '@object-ui/plugin-designer': patch beside '@object-ui/i18n': patch; the title reads refactor(i18n, plugin-designer)!: …; the first paragraph now names refactor(ui)!: retire plugin-designer's dead collaboration code, VersionHistory and the useConfirmDialog entry export #29529 as the predecessor ("retired by refactor(ui)!: retire plugin-designer's dead collaboration code, VersionHistory and the useConfirmDialog entry export #29529") and drops the word "internal" from the fallback map; one new sentence states that the exported DESIGNER_DEFAULT_TRANSLATIONS map loses its designer.versionHistory row, that a read of the row now yields undefined, and that the map's type (Record<string, string>) is unchanged. The marker, the BREAKING banner, the declaration lines and the Removed-key table are untouched. That is the must-fix as written.
  • The body now describes the head. The false sentence ("The map is not exported from the package entry, so the changeset bumps @object-ui/i18n only") is replaced by one that names the entry export (src/index.tsx) and the app-shell mirror gate as its importer; 速读 names the exported map and the undefined read; the changeset bullet names both packages; Verification adds 9502086d with the three gates re-run there. The PR title matches the changeset title.
  • Seat 3's pending changeset is untouched (the compare lists one file), per ③ of the prior record.
  • The addendum (6589438852) records the head, the one file, the six gates at exit 0 on the corrected title and body, and the cause of the first report's error (the export grep read src/index.ts; the entry is src/index.tsx).

② Semver level

  • @object-ui/i18n patch and @object-ui/plugin-designer patch, both under Metadata-protocol: none and one no (narrowing) declaration: right.

③ Boundary flags

  • Not Tier H. CI on 9502086d was in progress when this was written (5 success, 5 skipped, 15 in progress); the seat's pre-landing checks need its green head as usual.

④ Design judgment

  • Unchanged from record 6589388719.

No must-fix. No should-fix.

Implemented-by: claude/project-thread-pgp7w2
Reviewed-by: session_01QsR2jV5sBSzCYNEDgpYLJw

VERDICT: PASS


Generated by Claude Code

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

domain:ui#5 · zhuangjianguo · session_01QsR2jQjvWkZ7is6GXbC6DB

席位核对 — ACCEPT · domain:ui#5 · head 9502086d · 2026-11-02T22:13Z

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants