Repository navigation
fix(studio): plainer authoring in Studio — option labels first, named rules, labelled fields, honest counts - #27830
Merged
Conversation
Claude-Session: https://claude.ai/code/session_01Utp6CbkBiXQKn2AfkfK8tM Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Utp6CbkBiXQKn2AfkfK8tM Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Utp6CbkBiXQKn2AfkfK8tM Co-authored-by: Claude <noreply@anthropic.com>
…call site The Console's StudioRoute keeps the sentence as its inline defaultValue, and the call-site gate requires the en pack to match it. That file is outside this change's surface, so the refusal sentence stays as it is. Also pass FlowCanvas its required props in the object-label pin. Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Utp6CbkBiXQKn2AfkfK8tM
This was referenced Oct 30, 2026
An administrator grants it with a permission set in Setup → Permission Sets. The en and zh packs, the Console's inline fallback sentence and the route test's NOTICE move together, as the i18n call-site gate requires. Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Utp6CbkBiXQKn2AfkfK8tM
…eight packs check:i18n-drift requires a changed en value to be translated in every pack in the same change. ja, ko, de, fr, es, pt, ru and ar now carry the access refusal's grantor sentence and the confirm note's all-or-nothing clause, and the confirm-note claim pin reads each pack's new spelling. Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Utp6CbkBiXQKn2AfkfK8tM
Contributor
Author
|
domain:ui#3 · os-bill · session_01Utp6CaJoinvGQSbHeDaWBe 席位核对ACCEPT · head
Generated by Claude Code |
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.
domain:ui#3 · os-bill · session_01Utp6CaJoinvGQSbHeDaWBe
Requested by Bill · project thread
Part of #27521
Clause-②: no
Metadata-protocol: none
维护者速读
ObjectFieldInspector.tsx(选项编辑器)、ObjectValidationsPanel.tsx(规则名生成)、StudioDesignSurface.tsx(字段数与发布提示)。pnpm --dir ui exec vitest run packages/app-shell/src/views/metadata-admin/inspectors/ObjectFieldInspector.optionLabelFirst-27521.test.tsx,应 9 个用例全绿。What changes
Studio rows 24–39 of #27521, re-measured on
mainate5cce096(code reading plus jsdom pins; no browser pass in this run). Each row is taken here with a pin, handed to the seat as a card, or answered as already done or will not do.ManifestSchema's own.describe()by design (package-schema.ts, "Help text"), and the landing's overlay wording is pinned byBuilderLanding.environmentOverlayCopy-12171. A name-only first step is a dialog redesign plus a wording producer inpackages/spec.detectStatusField) or where an option already declares a kind. Pin:ObjectFieldInspector.optionLabelFirst-27521.labelSubjects, so the flow mounts keep their spellings), under "Pick a field". A new rule's API name follows its message until edited; an authored name never moves. Type, severity, name and guard labels in plain words. Pins:ConditionBuilder.subjectLabels-27521,ObjectValidationsPanel.ruleNameFromMessage-27521.en,zh); the confirm note still says all go live or none do. Carrier check: #27356 row 17 landed in #27432 for flow nodes only. Naming other types' changes in words (a view, a validation rule by its label, keys as words) is a card.ConsoleToaster: top-centre by objectui#13340, bottom-right refused by objectui#7482).useObjectCatalogread). Pin:FlowCanvas.objectLabel-27521. The flow header's one-row truncation with the whole text on hover is designed (objectui#13135). The Interfaces rail row was not measured in a browser (see notes).DataPillar.hiddenSystemFields-11780.aria-disabled, described by the missing step. Pin:AddFieldPopover.createReason-27521.ObjectDefaultInspector.readOnlyLook-27521. Publish's reason on a read-only package is already there (the tooltip wrapper of objectui#12303). The number inputs read are the sharedInputprimitive, which already greys out.StudioDesignSurface.publishCount-11807.InspectorShell, so the overlap needs a browser read).enandzhpacks, the Console's inlinedefaultValueinStudioRoute.tsx(the call-site gate ties it toen, objectui#3810) and the route test'sNOTICE, together. The seat widened the file surface to the Console call site for this row. Pin:studioAccessGrantor-27521.useFlowNodePaletteadoptsdescription), so the producer isservice-automation/plugin-approvals; #27838 carries it with #27356 row 15's words half.Tests
New pins: the seven files named above. Existing tests that read the old copy or behaviour were moved with it: the rule-type labels, the derived rule names, the guard group's name, the "N fields" load signal ("1 field" now), the publish toast's Access action, the confirm note's sentence and its
enclaim marker.Readings
8170cb82:studioAccessGrantor-27521,StudioRoute.test.tsx,StudioRoute.accessNotice-12035: 43/43;pnpm --dir ui exec vitest run scripts/: 169 files passed.pnpm --filter @object-ui/app-shell type-checkon the tree ofeb92b33e(under the verify lock, with the object-label pin's test): VERDICT command-exit 0.vitest runoverstudio-design/,metadata-admin/inspectors/,metadata-admin/previews/,preview/,i18n/src/__tests__/andStudioRoute.accessNotice-12035: first run 755 files, 38 tests red, every one a pin of the old copy or behaviour; after moving them, the 25 affected files plus the new pins: 265/265 green; the last two pins 4/4.Acceptance notes
field_service_work_order....row (the rail reads the target's label, else its name; a draft-only object's label may be missing there) and row 36's footer overlap.preview.changes.confirmNoteandconsole.studio.accessRequiredchanged in all ten packs; all ten carry both sentences (check:i18n-drift).docs/qa/platform-checklist/areas/studio-authoring.jsonstill quotes the old "(one atomic release)" toast; it is outside this card's file surface and is left as is.Verification
Gates derived by
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack: 34 derived, 34 run, all exit 0 (--ranreconciliation: 0 NOT-MEASURED, 0 UNRUN). The per-gate lines are in the report comment on #27521.Generated by Claude Code