Skip to content

plugin-approvals: the admin_rescue system comment is written into the approval timeline as English prose, so a zh-CN viewer reads it untranslated #25471

Closed as duplicate

Description

@marchtian

What happens

On a record's 审批 / Approvals tab, every timeline entry names the step by a title-cased version of the node id, not by the node's configured label:

提交 · Dev Admin · Review Reviewer
通过 · Dev Admin · Review Reviewer
提交 · Dev Admin · Review Director

The flow declares Chinese labels for those nodes, and the server already stores them. From sys_approval_action for the same request:

{ "step_name": "review_reviewer", "step_label": "初审人审批", "action": "approve", ... }

sys_approval_request.current_step_label is also 初审人审批. So the data is right; the console timeline renders step_name (humanized) rather than step_label.

A related case: the admin_rescue system comment is written into the timeline as English prose ("Routed to this organization's administrators because the approver slate named no one: position 'srm_procurement_director' has no holder."). It shows up untranslated on a zh-CN console.

Repro

  • @objectstack/* 18.0.0, objectstack dev, locale zh-CN.
  • App: objectstack-ai/hotsrm main, flow srm_admission_approval. Its nodes are review_reviewer (label 初审人审批) and review_director (label 采购总监审批).
  • Create an application, set its status to admission_review, and approve both steps.
  • Open the record and go to the 审批 tab.

Expected

The timeline shows 初审人审批 / 采购总监审批 (step_label, or the translated label once #24863's contract applies). System comments use the viewer's locale.

Related

Activity

  1. added
    area:i18nThe customer's own language, across UI, metadata and notifications
    bugSomething isn't working
    domain:serverDomain lane — seat card indexed by label:pm:seat
    pm:queueReady for the PM dispatch loop
    on Oct 23, 2026
  2. objectstack-fleet commented on Oct 23, 2026

    @objectstack-fleet
    Contributor

    Triage: lands in packages/plugins/plugin-approvals/src/approval-service.ts (~L3904, the admin_rescue comment text); rationale: this card had two halves.

    • The timeline drawing step_name instead of step_label on the record's Approvals tab is the console's RecordApprovalsPanel. That is objectui#13248, closed as completed on 2026-10-20, after the 18.0.0 this card was measured on. Same file, same mechanism, so that half is a duplicate and is dropped here. (The approval request page's own Timeline tab is a different surface, filed as plugin-approvals: the approval request page's Timeline lists each action's step as the machine id (dual_signoff) — its related list asks for step_name, while every row stores step_label #25501.)
    • The admin_rescue system comment ("Routed to this organization's administrators because the approver slate named no one: …") is composed server-side as an English sentence and stored as the comment, so every viewer reads it in English. That half is the server's, and it is what this card now tracks. The fix stores a code plus its parameters (or a translation key) and lets the reader localize it, instead of persisting prose.

    Retitled to the remaining half; the original title was "Console approval timeline shows a humanized step id ("Review Reviewer") instead of the stored step_label".
    Path: workflow · 审批在界面里做 | i18n.surface-matrix (P1 upper bound) | step ②
    Grade: priority:p3 — one system sentence, shown only when the admin-rescue route fires.
    Type: Bug

    Session: session_01AkmasAfXt3cu83xGzkuKhe (objectstack triage, run on the maintainer's request in the project thread)


    Generated by Claude Code

  3. changed the title [-]Console approval timeline shows a humanized step id ("Review Reviewer") instead of the stored step_label[/-] [+]plugin-approvals: the admin_rescue system comment is written into the approval timeline as English prose, so a zh-CN viewer reads it untranslated[/+] on Oct 23, 2026
  4. objectstack-fleet commented on Oct 24, 2026

    @objectstack-fleet
    Contributor

    Closed 2026-10-24T01:37Z. Superseded by #25576 — the same card ("the admin_rescue system comment is written into the approval timeline as English prose"), re-filed as objectstack-fleet[bot] with this body and these labels. This card was written off the fleet relay, under the maintainer's personal account, by a project-thread session through GitHub MCP, which pm-dispatch does not allow for content writes. The thread above stays here for reference; the queue continues on #25576.

    Instruction: the maintainer 田騏, in the Objectstack project thread, 2026-10-24T01:19:49Z: 「我看到有一些使用个人账户而不是车队账户提交的issue,应该严格按照 pm-dispatch 的规则处理」
    Session: session_018fnREjMeK9XQeHDwkJXKMW

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:i18nThe customer's own language, across UI, metadata and notificationsbugSomething isn't workingdomain:serverDomain lane — seat card indexed by label:pm:seatpriority:p3

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions