Repository navigation
fix(app-shell): the permission set's Add user picker shows each person's email beside their name - #27808
Conversation
…n's email beside their name Fixes the picker on Setup › Permission set › Assigned users, the same shape as Position › Add holder: name and email columns, sys_user's schema for the picker's own column read rule. Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Utp6CazvDXxebLfghuZZ7t
…og takes it Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Utp6CazvDXxebLfghuZZ7t
|
domain:ui#4 · os-bill · session_01Utp6CbDAucNyQ4UtzCJKyh 席位核对ACCEPT · head
Generated by Claude Code |
Claude-Session: https://claude.ai/code/session_01Utp6CZLnkdSxVfvNuQ6RgB Co-authored-by: Claude <noreply@anthropic.com>
Requested by Bill · project thread
维护者速读
AssignedUsersSection.tsx里RecordPickerDialog新增的objectSchema与columns两个属性;新测试AssignedUsersSection.pickerColumns-27433.test.tsx。sys_user.email的角色只看到姓名列。Fixes #27433
Clause-②: no
Metadata-protocol: none
What changes
On a Setup permission-set page, Assigned users › Add user opened
RecordPickerDialogonsys_userwith nocolumns, so the picker drew the name alone. It now passes, in the same shape as Position › Add holder (#27427):columnsfornameandemail, headed from the section's own en/zh copy (Name/Email,姓名/邮箱) — no new@object-ui/i18nkey, soClause-②: no;objectSchemaset tosys_userfrom theuseMetadata()objects the section already holds — no new fetch;readableColumnsrule decides what is drawn.Files:
ui/packages/app-shell/src/views/metadata-admin/AssignedUsersSection.tsx, one new test beside it,.changeset/27433-permission-set-user-picker-email.md(@object-ui/app-shell+@object-ui/consolepatch, as #27427's).Tests
AssignedUsersSection.pickerColumns-27433.test.tsx, against the realRecordPickerDialog(not a stub) and a realPermissionProvider:data-lookup-cell);sys_userin another organization is not drawn);sys_user_permission_set{ user_id, permission_set }by name;sys_user.email(grant writes allowed), only the name column is drawn and no email text appears in the dialog.Ablation (one-shot, not kept):
scripts/ablation-replace.mjsdeleted thecolumnsprop (anchor 1 → 0, blob6e003bf1→495a0d0e) → the column test went red (1 failed / 4 passed), the four CONTROLs stayed green; restored to blob == HEAD,git diff HEADempty. The later commit3b0005b0only changes the schema cast's type.Acceptance notes
Verification
All on head
3b0005b0(base968cacfd), locally:Tests
pnpm --dir ui exec vitest run packages/app-shell/src/views/metadata-admin/AssignedUsersSection.pickerColumns-27433.test.tsx— Test Files 1 passed, Tests 5 passed (verify lock VERDICT command-exit 0).AssignedUsersSection(44 files: the section's own six, the PermissionMatrixEditor family,setupHoldersGrant-12082,trailDoorsGate-12475,openPathObjectReaders-12811,affordanceGrantMap-12082and others) — Test Files 44 passed, Tests 332 passed (VERDICT command-exit 0).pnpm --filter @object-ui/app-shell run type-check— VERDICT command-exit 0.columns→ 1 failed / 4 passed; restored,git diff HEADempty.Derived gates (34)
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack, each run with its exit code recorded before any pipe; reconciled with--ran: 34 derived, 34 run, 0 NOT-MEASURED, 0 UNRUN.origin/mainmoved 13 commits since the base; none touches the three changed files orRecordPickerDialog, so the branch is not merged with it (no overlap). Every CI family (Test UI, Type Check UI, Lint & Repo Gates, …) is the PR's own check-runs.Generated by Claude Code