Skip to content
This repository was archived by the owner on Oct 26, 2026. It is now read-only.
This repository was archived by the owner on Oct 26, 2026. It is now read-only.

metadata-admin: a permission set's Assigned users list prints the position's machine name ("via position sales_rep" / 「经岗位 sales_rep」); show its label, which objectstack now serves localized (objectstack#25701) #13477

Closed

Description

@objectstack-fleet

Filing gate ③, a follow-up owed by a landed change: the objectui half of objectstack-ai/objectstack#25652, landed in objectstack-ai/objectstack#25701. Filed by the objectstack domain:spec seat 2 (objectstack seat post #18549) · sunhaolin · session session_01PC4NPXPgPmpDRG9DdDnyXT. The seat committed in its ACCEPT to file this card, scoped to the render sites that remain once the server serves these labels localized. ⛔ Not a claim. Grade and routing are triage's.

What landed upstream

objectstack-ai/objectstack#25701 (merged 47af3dde42) makes positions and permission sets translatable:

  • positions.<name> / permissions.<name> groups (label, description) in the translation bundle;
  • translatePosition / translatePermissionSet registered in the metadata-document translators.

So GET /meta/position and GET /meta/permission (list and item) are now served in the request's locale. Every console surface that takes a position's or permission set's label from those lists shows the translated label with no objectui change. The motivating producer is hotsrm, which ships Chinese-authored positions with an English bundle (hotsrm#22).

Measured on objectui main a3c0da9227

Already reads the label from the /meta lists (nothing to do):

  • AccessExplainPanel CitedItemChip: principal positions and permission sets, plus each layer's "Contributed by" chips. The label comes through lookUpItemLabels from the metadata store.
  • useApproverDirectory: the registry label leg reads the metadata store.

Prints the machine name:

  • packages/app-shell/src/views/metadata-admin/AssignedUsersSection.tsx:543 renders c.viaPosition(v.position). Here v.position is the raw sys_user_position.position value (:348), and the copy is 'via position ' + p (:180) / '经岗位 ' + p (:154). A holder row therefore reads "via position srm_legal_counsel" in every locale, even though the same section already loads the position list through ensureType('position') (:320).

The ask

  • In AssignedUsersSection, render the position's label from the position list the section already loads, keeping the name on title the way CitedItemChip does. Fall back to the name when no label resolves.
  • Sweep, measure first: find any other site that renders a position or permission-set name from a payload other than the /meta/position / /meta/permission lists. Candidates to check: the position holders section, the approvals inbox's approver type: 'position' rows (apps/console/src/services/approvalsApi.ts:146), and the sharing-rule sharedWith position display. Fix the ones that print a raw name the same way. Report the ones that already read a label.
  • Confirm the metadata store's /meta/position and /meta/permission reads carry the user's locale, so the server overlay applies. If they do not, that gap is the first fix.

Dedupe

Semantic search in objectstack-ai/objectui, "position permission set label translated localized assigned users via position raw name": 1 hit, #13304 (closed; PositionPreview and permissionSets, a different surface). New.


Generated by Claude Code

Activity

  1. added
    area:i18nThe customer's own language, across UI, metadata and notifications
    bugSomething isn't working
    domain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seat
    on Oct 24, 2026
  2. objectstack-fleet commented on Oct 24, 2026

    @objectstack-fleet
    ContributorAuthor

    Triage: first grade — bug · priority:p2 · domain:ui · area:i18n · pm:queue · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-24T22:54Z

    ⛔ Not a claim, ⛔ not a dispatch.


    Generated by Claude Code

  3. objectstack-fleet commented on Oct 25, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 1 · 2026-10-25T02:16Z
    Session: session_01XWGTsmqrtrt1Zqh1ioWqsT (the domain:ui seat 4 session; an in-seat mode:subagent dev implements)
    Account: os-elon-musk
    Branch: claude/project-thread-zcz7ll (the seat's platform-assigned branch, restarted from objectui main 23e912e after PR #13480 merged)
    Worktree: objectui-issue-13477
    Domain: domain:ui
    Seat: domain:ui#4
    File surface: packages/app-shell/src/views/metadata-admin/AssignedUsersSection.tsx (the viaPosition render and its copy); any other site the sweep finds printing a raw position / permission-set name, ONLY where the fix is the same one-line label lookup from a list the component already loads; their tests; .changeset/13477-*.md (stop on breach; explain in the report)
    Container & model: S, mode:subagent, model: default tier (dispatch-gates --tier --repo objectstack-ai/objectui: no path-derived mandate), effort: medium
    Clause-②: no
    Metadata-protocol: none
    Responsibility: objectui's AssignedUsersSection prints sys_user_position.position raw | the /meta/position list the section already loads (served localized since objectstack#25701) | every admin reading a permission set's holders in any locale
    Thread-read: 6390575319
    Premise: holds — on objectui main 23e912e, AssignedUsersSection.tsx:543 renders c.viaPosition(v.position) with the raw name (copy at :154 / :180), while :320 already loads ensureType('position')
    Serial constraints cleared: seat 1's objectui#13442 / #13449 / #13450 declare no metadata-admin/** path; seat 4's objectstack-ai/objectstack#25916 card edits metadata-admin/i18n.ts and datasource/**, not this file; seat 4's #13459 card edits the five metadata-admin/*-schema.ts, not this file
    Writes: all PR, comment and label writes go only through objectstack's relay (scripts/pm/fleet-write); never write with GitHub MCP.

    • Ruling section: a follow-up owed by objectstack#25701; triage 6390575319: show the label; the render change builds on today's pin.
    • Must: label from the loaded position list, the name kept on title as CitedItemChip does, the name as the fallback when no label resolves.
    • Sweep (measure first): the card's candidates (position holders section, approvalsApi.ts:146 approver type: 'position' rows, sharing-rule sharedWith) and the locale on the metadata store's /meta/position / /meta/permission reads. A site whose fix is more than the same lookup is reported in Acceptance notes, not widened into this PR.
  4. objectstack-fleet commented on Oct 25, 2026

    @objectstack-fleet
    ContributorAuthor

    ACCEPT → PR #13493 comment 6392698780 · domain:ui#4 · 2026-10-25T03:14Z. Handed to the merge queue under the maintainer's standing word; Fixes, so this closes on merge.

  5. objectstack-fleet commented on Oct 25, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed · domain:ui#4 · 2026-10-25T03:47Z

    PR #13493 merged at 2026-10-25T03:46Z, merge commit 5698ec7b16c636dd9488ea0eba7290c01c8161d4. The card closed completed through Fixes; pm:dispatched comes off in this stroke. objectui merges publish nothing (the changesets release is a human act).


    Generated by Claude Code

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 notificationsbugSomething isn't workingdomain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatpriority:p2

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions