Repository navigation
fix(platform-objects): zh-CN metadata forms say 仪表盘 for dashboard - #30485
Conversation
The served zh-CN dashboard authoring form still said 仪表板 on six leaves while the Console and Studio say 仪表盘. The generated bundle is the extract's merge baseline, so the leaves are corrected in place and the bundle regenerated; a test reads the served bundle. Co-Authored-By: Claude <[email protected]> Claude-Session: https://claude.ai/code/session_01Utp6CZNuVoLVGgYU36KdYe
Co-Authored-By: Claude <[email protected]> Claude-Session: https://claude.ai/code/session_01Utp6CZNuVoLVGgYU36KdYe
📓 Docs Drift CheckNothing in this diff resolved to a documentable surface (no symbol, route or SDK anchor derived from 1 changed package(s)), so this run has no opinion about the docs. What this run could not see
Coarse fallback — 2 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): |
|
domain:server#6 · os-bill · session_01Utp6CXCS98uhsFQYk64epE 席位核对 · ACCEPT · 2026-11-05T13:18Z · head
|
|
domain:server#6 · os-bill · session_01Utp6CXCS98uhsFQYk64epE 席位记录 · 2026-11-05T13:49Z · Head-sha
|
|
domain:server#6 · os-bill · session_01Utp6CXCS98uhsFQYk64epE 出队记录 · 2026-11-05T14:09Z · head
|
⛔ merge queue 构建失败 — 先分诊,再决定要不要重排队列构建 42040560124 红了。队列跑的是全量套件(PR 侧 CI 只跑 affected 子集), 分类: 失败的 job(日志抽取,best effort):
跨 PR 相同签名(24h,按失败测试文件聚合):
历史信号:
分诊清单:
Generated by Claude Code · merge-queue-triage workflow (#4859) |
Requested by Bill · project thread
domain:server#6 · os-bill · session_01Utp6CXCS98uhsFQYk64epE
Fixes #30164
Clause-②: no
Metadata-protocol: none
Skills-docs: none (
git grep -n 仪表板 -- skills/on the final tree: 0 hits)维护者速读
packages/platform-objects/src/apps/translations/zh-CN.metadata-forms.generated.ts(6 行文字),再看新测试zh-cn-dashboard-word.test.ts。pnpm --filter @objectstack/platform-objects exec vitest run src/metadata-translations/zh-cn-dashboard-word.test.ts,预期 2 条通过。What changes
zh-CN.metadata-forms.generated.tsis theos i18n extractmerge baseline (scripts/i18n-extract.config.tspinsmetadataFormsto the committed file, and--mergeonly fills gaps), and both its own header andmetadata-translations/index.tssay its leaves are edited in place. So the sixdashboardleaves were corrected there, then the bundle regenerated:pnpm i18n:extractreproduces the committed tree byte for byte (no diff after the run) andpnpm check:i18nis green. No other source underpackages/carries the zh-CN form text. The source-hash tables are untouched: these leaves are translations, not source copies, so the generated provenance table never recorded them.Tests
New
packages/platform-objects/src/metadata-translations/zh-cn-dashboard-word.test.tsreads the SERVED bundle (MetadataFormsTranslations['zh-CN'], afterwithSourceFallback, the bundlerest-server.tslocalizes/api/v1/meta/typesforms with): the dashboard form title is 仪表盘, and no served zh-CN metadata-form string contains 仪表板.scripts/ablation-replace.mjs): the class test goes red naming 仪表板标识与描述, restored to the HEAD blob withgit diff HEADempty.pnpm --filter @objectstack/platform-objects test: 112 files, 1523 tests passed.typecheck(includescheck:test-typecheck): exit 0.Acceptance notes
packages/rest/src/meta-types-schema-titles.test.tsandpackages/runtime/src/domains/i18n-translations-served-groups.test.tsname 仪表板 only inside their own inline fixture bundles and assert the fixture back; they do not read the platform bundle, so they were left as they are.packages/spec/src/marketplace/package-l10n.test.tsandpackages/spec/src/system/i18n-resolver.test.tslikewise use their own fixtures and do not pin served form text (out of this card's surface, untouched).Verification
All local readings on head
df4de5fb(after mergingorigin/main).pnpm check:i18n: exit 0,check-i18n-bundles: OK (10 package(s) — all bundles in sync, no undeclared authoring keys).pnpm i18n:extract: exit 0, 11 files written,git statusclean afterwards.pnpm --filter @objectstack/platform-objects test: exit 0 (112 files, 1523 tests).typecheck: exit 0.pnpm lint: exit 0.dispatch-gates --commands: 58 derived;--ranreconciliation: 58 accounted, 56 exit 0, 2 NOT MEASURED (exit 3, PREREQUISITE NOT MET):node scripts/check-plugin-teardown-shape.mjs --self-test: shallow clone cannot reach its pinned positive-control commit (checker-health only, judges no diff).pnpm check:dual-build-cjs-loads: needs every workspace package'sdist/; only the i18n build closure was built here. CI runs both.Red on main, ablation
Red (main's bundle):
expected '仪表板' to be '仪表盘'; offenders listed 仪表板, 仪表板标识与描述, 仪表板页眉配置(title、subtitle、actions), 在页眉中显示仪表板标题, 在页眉中显示仪表板描述, 包含位置和尺寸的仪表板组件.Tests 2 failed (2).Ablation:
ablation-replace: ok mutation landed: anchor 1 -> 0, then× no served zh-CN metadata-form string carries the retired spelling 仪表板,Tests 1 failed | 1 passed (2);ablation-replace: ok restored: blob == HEAD (ab03233a6fe0) and git diff HEAD is empty.Generated by Claude Code
🤖 Generated with Claude Code
https://claude.ai/code/session_01Utp6CZNuVoLVGgYU36KdYe