Uh oh!
There was an error while loading. Please reload this page.
fix(studio): localize lookup picker config + keep published org objects editable - #1937
Merged
Conversation
…ts editable Two dogfooding fixes in the object-field designer: 1. i18n — the lookup field's "Picker config" sub-panel (display/description field, selectable-records filters, depends-on, page size, quick-create) was hard-coded English in an otherwise-Chinese designer. Routed every literal through t()/tFormat() with new designer.field.lookup.* keys (en + zh). 2. Published org objects read back as read-only. After publish, an org object's active version surfaces in the layered 'code' slot tagged with the 'sys_metadata' provenance sentinel. ResourceEditPage treated any non-null 'code' as a packaged artifact (needs allowOrgOverride, which 'object' lacks), so a freshly-published custom object locked itself read-only. Mirror the server's isArtifactBacked() — which excludes _packageId === 'sys_metadata' — so org-authored items stay editable. Complements the framework-side fix that stops stamping runtime metadata into a loaded code package. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The latest updates on your projects. Learn more about Vercel for GitHub. |
Contributor
✅ Console Performance Budget
📦 Bundle Size Report
Size Limits
|
Uh oh!
There was an error while loading. Please reload this page.
os-zhuang added a commit
that referenced
this pull request
Jun 24, 2026
…estore F6 wording (#1941) * test(metadata-admin): add data-testid hooks to the Studio object designer Stable selectors for the live-e2e/dogfood gate (no behavior change): object-name-input, field-apiname-input, field-label-input (via an optional InspectorTextField testId prop), package-id-input/package-name-input, package-switcher, source-editor, metadata-validation-banner, readonly-banner. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * test(metadata-admin): Studio object-designer dogfood gate (F1-F6) A "drive the Studio designer as a user" regression gate for the UX classes fixed in #1926 — the kind static gates (build/unit/spec-liveness) miss because the break only appears when a real user drives the real controlled inputs against the real spec validator. Live e2e (e2e/live/studio-object-designer.spec.ts, runs against the real stack): F2 — object Name accepts a TYPED underscore. Must pressSequentially, not fill(): .fill() sets the value in one shot and hides the per-keystroke trim. Proven to go red when the trailing-trim bug is reintroduced. F3 — a field API name derives from its label on blur. F4 — adding a picklist + an empty option row does NOT trip spec validation. Live validation is debounced, so the negative assertion settles first; proven red when empty rows are persisted again. F1 — a newly created package appears in the switcher without a reload (creates + cleans up a throwaway package). Component/unit (fast layer, no backend): F5 — JsonSourceEditor falls back to an editable textarea when Monaco can't paint (offline/CSP/worker-blocked). fallbackDelayMs added so the test doesn't wait the full grace period. F6 — artifactLockedBanner wording (en + zh): not "shipped by a code package", and states the real edit path. This gate immediately earned its keep: the F6 test failed on first run because a parallel PR (#1937, branched off pre-#1926 main) had silently reverted the banner wording. Re-applied here (i18n.ts) — exactly the regression class the gate exists to catch. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
This was referenced Jun 24, 2026
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 freeto 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.
Found while dogfooding Studio's object designer as a business user.
1. i18n — lookup "Picker config" sub-panel was hard-coded English
In an otherwise-Chinese designer, the lookup field's advanced Picker config
block ("Picker config", "Display field", "Description field", "Search fields…",
"Selectable records", "Add filter", "No filter — every … record is selectable.",
"Depends on …", "Picker page size", "Allow quick-create", …) rendered in English.
Routed every literal through
t()/tFormat()with newdesigner.field.lookup.*keys (en + zh). Browser-verified: all strings now Chinese, zero English left.
2. Published org objects read back as read-only
After publishing a custom (org-authored) object, its active version surfaces in
the layered
codeslot — but tagged with thesys_metadataprovenance sentinel,not a real package.
ResourceEditPagecomputedisArtifactItem = layered?.code != null,treating it as a packaged artifact (which needs
allowOrgOverride, a capabilitythe
objecttype lacks) → the object the user just created locked itselfread-only. Mirror the server's
isArtifactBacked(), which excludes_packageId === 'sys_metadata', so org items stay editable.Complements framework #2252 (which stops stamping runtime metadata into a loaded
code package). #2252 fixes the persisted
package_id; this closes the matchingfront-end gate so the object is actually editable end-to-end.
Verification
@object-ui/app-shellvitest (ObjectFieldInspector + _shared.select): 19/19 green.against layered metadata (org object
code._packageId = sys_metadatavs a realcode object
= com.example.showcase).🤖 Generated with Claude Code