You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
spec: every repeater item schema except dashboard header.actions still has no JSON Schema title, so 21 property-panel tables render machine keys in every locale #17232
Found while landing #16458 (PR #17227), which fixed exactly one instance of this shape and was
scoped by dispatch to that one instance only.
The defect
Studio's property panel renders a type: 'repeater' field as a table whose column headers read items.properties[k].title ?? k from the JSON Schema derived by z.toJSONSchema(...). When no
item-schema field carries a title, the fallback arm runs — and it runs for every locale,
English included, so the maker sees raw machine keys (actionUrl, defaultCollapsed, ...) inside
an otherwise fully translated panel. This is not a translation gap; it is a missing authoring label
in the contract, and #16458's triage refused the i18n route by name.
Measured on origin/main
22 repeater fields are declared across 11 *.form.ts files in four domains:
Only one of them — dashboard.header.actions — now has titled row properties, landed by
PR #17227. Across packages/spec/src/**/*.zod.ts there are 37 .meta({ title occurrences, and
every one is either a driver-config schema or one of the four that PR added:
packages/spec/src/data/driver/*.zod.ts 32
packages/spec/src/system/translation.zod.ts 1
packages/spec/src/ui/dashboard.zod.ts 4 (added by #17227)
Spot control: git grep -nP 'meta\(\{ title' packages/spec/src/ui/view.zod.ts packages/spec/src/ui/dataset.zod.ts returns nothing, so view.columns, dataset.dimensions and dataset.measures all render machine keys today.
The mechanism already exists — this is application, not design
#16458 ruled mechanism A and PR #17227 built both halves of it, so a follow-up needs no new
contract decision:
author .meta({ title }) on the Zod item schema (the English name);
enumerate the repeater's children in its *.form.ts so os i18n extract emits the catalog keys;
the mechanism is written up in content/docs/protocol/kernel/i18n-standard.mdx.
packages/platform-objects/src/apps/translations/dashboard-header-children.test.ts is the pin
shape to copy.
Suggested handling
Worth splitting per domain rather than one sweeping PR — each domain's item schemas need real
authoring names chosen, plus translated catalog leaves in zh-CN / ja-JP / es-ES, which is
copy work rather than mechanical work.
承接者: the domain:spec lane, as the downstream half of objectui#8218's property-panel
de-developerization — the same effort that filed #16458. Whoever picks up the next slice of #8218
lands on these files.
Found while landing #16458 (PR #17227), which fixed exactly one instance of this shape and was
scoped by dispatch to that one instance only.
The defect
Studio's property panel renders a
type: 'repeater'field as a table whose column headers readitems.properties[k].title ?? kfrom the JSON Schema derived byz.toJSONSchema(...). When noitem-schema field carries a
title, the fallback arm runs — and it runs for every locale,English included, so the maker sees raw machine keys (
actionUrl,defaultCollapsed, ...) insidean otherwise fully translated panel. This is not a translation gap; it is a missing authoring label
in the contract, and #16458's triage refused the i18n route by name.
Measured on
origin/main22 repeater fields are declared across 11
*.form.tsfiles in four domains:Only one of them —
dashboard.header.actions— now has titled row properties, landed byPR #17227. Across
packages/spec/src/**/*.zod.tsthere are 37.meta({ titleoccurrences, andevery one is either a driver-config schema or one of the four that PR added:
Spot control:
git grep -nP 'meta\(\{ title' packages/spec/src/ui/view.zod.ts packages/spec/src/ui/dataset.zod.tsreturns nothing, soview.columns,dataset.dimensionsanddataset.measuresall render machine keys today.The mechanism already exists — this is application, not design
#16458 ruled mechanism A and PR #17227 built both halves of it, so a follow-up needs no new
contract decision:
.meta({ title })on the Zod item schema (the English name);resolveMetadataFormSchemaTitles(@objectstack/spec/system, new in feat(spec): item-level property names for the dashboard header-action repeater #17227) overlays a bundle'smetadataForms.TYPE.fields.PATH.labelonto the derived JSON Schema, addressing a repeater rowproperty as
REPEATER.PROPERTY;*.form.tssoos i18n extractemits the catalog keys;content/docs/protocol/kernel/i18n-standard.mdx.packages/platform-objects/src/apps/translations/dashboard-header-children.test.tsis the pinshape to copy.
Suggested handling
Worth splitting per domain rather than one sweeping PR — each domain's item schemas need real
authoring names chosen, plus translated catalog leaves in
zh-CN/ja-JP/es-ES, which iscopy work rather than mechanical work.
承接者: the
domain:speclane, as the downstream half of objectui#8218's property-panelde-developerization — the same effort that filed #16458. Whoever picks up the next slice of #8218
lands on these files.
Back-links: #16458, PR #17227, objectui#8218.
Generated by Claude Code