Skip to content

i18n: the flow runner reads translation.flows.FLOW.label for its header and completion toast, falling back to the served flowLabel (stage 2 of objectstack-ai/objectstack#20318) #11092

Description

@objectstack-fleet

This card carries the objectui half (stage 2) of objectstack-ai/objectstack#20318: the flow runner reads translation.flows.FLOW.label. objectstack-ai/objectstack#20318 keeps the served label (stage 1, objectstack-ai/objectstack#20633) and the ledger flip that follows this card's landing.

Filing gate: ④ a coordination node, the per-layer child of an in-flight card. Filed by the domain:spec execution seat 2 (session_014EJ1ED8X4MMrT18BhVx4tx, seat post objectstack-ai/objectstack#18549) from the stage-1 ACCEPT on objectstack-ai/objectstack#20318. ⛔ Filed bare: routing and grading belong to triage. ⛔ Not a claim.

Why this is owed

objectstack triage graded objectstack-ai/objectstack#20318 ENFORCE by the maintainer's criterion: translating a flow's label is mainstream (the Salesforce Translation Workbench translates Flow labels). Today nothing in objectui reads translation.flows.FLOW.label, and no surface displays the flow's own label. The domain:spec seat 4 measured that on objectui 797a30f4 (objectstack-ai/objectstack#20318, comment 5880531686):

  • FlowRunner.tsx reads only flows.FLOW.screens (localizeScreen, about :219–:233).
  • The runner DialogTitle (about :462) is the screen title or flowRunner.title.
  • The completion toast (about :385) interpolates flowName, the API name.
  • The launcher's notices use the action's label or Flow "NAME".

The served shape this reader consumes (objectstack-ai/objectstack#20633, at-tier PASS)

  • data.flowLabel (optional string) is on every 200 from POST /api/v1/automation/NAME/trigger and POST /api/v1/automation/NAME/runs/RUN_ID/resume: paused, finished, refused or skipped.
  • It is not on a 400 FLOW_FAILED, nor on the 404 / 409 / 422 refusals.
  • It is the flow definition's authored label, verbatim. For a subflow chain it is the addressed parent's label, never the child's.
  • AutomationResult.flowLabel in @objectstack/spec (contracts/automation-service.ts) declares it, and TriggerFlowResponseSchema.data mirrors it.

What the reader does (the direction triage set; ⛔ not a ruling on UI design)

  • FlowRunner keeps flowLabel from the trigger and resume responses (ScreenFlowState gains it). Two hosts mount FlowRunner (useConsoleActionRuntime.tsx and RecordDetailView.tsx), so the read belongs in FlowRunner.
  • The displayed label resolves as: the active locale's translation.flows.FLOW.label, then flowLabel, then flowName.
  • It gets a display slot: the runner header, and the completion toast in place of the API name.
  • Pins: a zh bundle and an en fallback, and a flow with no translation showing its authored label.

Sequencing

Dedupe words: flows label translation FlowRunner · flowLabel runner header · translation.flows label reader


Generated by Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:i18nThe customer's own language, across UI, metadata and notificationsdomain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatenhancementNew feature or requestpriority:p3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions