Repository navigation
Commit fa9c0aa
fix(ui): Setup's everyone note and header tags speak to an administrator (#30488)
<!-- claude-projects-attribution: {"github_login":"os-sales"} -->
_Requested by **Sales** · [project
thread](https://claude.ai/code/project/chan_01D5bWFY3rFzgJcytD5gD4Uu?thread=cmsg_01D5bWFY3rFzgJcytD5gD4UuLMXrdNyk1pRovMvtWKFsbH)_
domain:ui#6 · os-sales · session_01L6bhgWjg9S7avVTjuNn9P2
Refs #30208
Clause-②: no
Metadata-protocol: none
## 维护者速读
- 改了什么:设置里两处给管理员看的文字改成业务说法。权限集分配页,被 everyone 岗位分发的权限集提示从「已绑定到 everyone
锚点 — 所有登录成员都持有此权限集。」改为「所有登录成员都持有此权限集。」;设置列表标题旁的三个标签 管理配置 / 平台架构 / 身份 改为
在此配置 / 平台预置 · 可编辑 / 经身份服务写入(十个语言包同步)。
- 为什么改:#30208 走查第 4、9 行:「everyone
锚点」是岗位机器名加引擎术语,三个标签说的是对象怎么建的,管理员不悬停看提示就不知道意思。
- 风险与回滚:只改前端文案,不加不删词条键,不改标签何时显示(objectui#12194、objectui#13385
的裁决不动),悬停说明文字不变;回滚即还原本 PR。
- 先看:`ui/packages/i18n/src/locales/zh.ts` 的
`managedByBadge.*.short`、`ui/packages/app-shell/src/components/ManagedByBadge.tsx`
的 `VARIANTS`
英文兜底、`ui/packages/app-shell/src/views/metadata-admin/AssignedUsersSection.tsx`
的 `everyoneNote`。
- 两分钟验证:`pnpm --dir ui exec vitest run
packages/app-shell/src/views/metadata-admin/AssignedUsersSection.test.tsx
packages/app-shell/src/components/__tests__/ManagedByBadge.keyboard-27521.test.tsx`,预期
22 个用例全绿。
- 需要你做的:无,席位落地。
## What changes
Card #30208 is a nine-row walkthrough. This PR ships the two rows whose
text `ui/` draws; the other rows are listed under Acceptance notes with
their owning lane, so the card stays open.
- **Row 4, permission set assignment.** `AssignedUsersSection`'s
`everyoneNote`, shown when the everyone position distributes the set,
now reads 「所有登录成员都持有此权限集。」 / "Every signed-in member holds this set." It
no longer names the everyone anchor.
- **Row 9, Setup list header tags.** The card offered "remove, or
explain". This takes **explain**: the badge stays, drawn under the same
rule as before (authoring callers only; Setup record pages carry it on
the header chip), and its short label now says what the bucket means for
the administrator:
| bucket | before (zh / en) | after (zh / en) |
|:--|:--|:--|
| `config` | 管理配置 / Admin config | 在此配置 / Configured here |
| `system-data` | 平台架构 / Platform schema | 平台预置 · 可编辑 / Built in ·
editable |
| `better-auth` | 身份 / Identity | 经身份服务写入 / Via identity service |
The same three `short` values change in the ar, de, es, fr, ja, ko, pt
and ru packs, so no pack keeps the old meaning. `ManagedByBadge.tsx`'s
English fallbacks match `en.ts`. Tooltip titles and bodies are
unchanged. No key is added or removed.
- **Changeset.** `.changeset/30208-setup-admin-wording.md`,
`@object-ui/app-shell` and `@object-ui/i18n` patch.
Branch: the harness-assigned `claude/project-thread-9po7qw`, not
`claude/issue-30208-*`; the card is #30208.
## Tests
- `AssignedUsersSection.test.tsx` gains a top-level describe (3 cases)
on its existing harness, with the console locale mocked through
`./i18n`'s `useMetadataLocale`: zh-CN shows 「所有登录成员都持有此权限集。」 and the
section's text has neither 锚点 nor everyone; English shows "Every
signed-in member holds this set." with no "anchor"; CONTROL, a set the
everyone position does not distribute shows no note.
- `ManagedByBadge.keyboard-27521.test.tsx` gains a top-level describe (3
cases): the zh pack's three tags, the English three, and a CONTROL that
`engine-owned` and `append-only` keep 系统管理 and 只读 · 审计日志.
- Positive control: with the four source files restored to the base
(`git restore --source=c5800818`) and the new tests kept, 4 failed / 18
passed (the four non-control cases), restored with `git checkout HEAD
--` and `git diff HEAD` empty.
## Acceptance notes
Rows not shipped here, each with its reason and owning lane, for the
seat to split:
- **Row 1** (permission set assignment help: `fail-closed`, 半开区间 [from,
until), 智能体授权): the help texts are served from
`packages/plugins/plugin-security/src/translations/zh-CN.objects.generated.ts`
(and plugin-approvals for the same 半开区间 phrase). `domain:server`.
- **Row 2** (new business unit: 图谱语义, Null 表示租户根节点, HRIS, 图谱查询):
`packages/platform-objects/src/apps/translations/zh-CN.objects.generated.ts`.
`domain:server`.
- **Row 3** (edit organization 「为 true 时…」): the same platform-objects
zh-CN bundle, and the pattern recurs on other objects' booleans there.
`domain:server`.
- **Row 5** (Settings → 数据生命周期 retention / row quota / class quota as
raw JSON): needs a new field control over a settings shape served by
`packages/objectql/src/lifecycle/lifecycle-settings.ts`; not a pure
`ui/` control over an existing field shape. Needs a spec/settings
decision on the shape first.
- **Row 6** (通知偏好 topic/channel free text, 免打扰 JSON) and the comment's
通知模板 topic/channel: `channel` is free text by an earlier ruling (route A
on #25346, cited in
`packages/services/service-messaging/src/objects/notification-preference.object.ts`)
because the channel set is open at runtime and a `select` cannot store
`*`. A picker reverses that ruling, so it is a decision for the
maintainer, not a `ui/` fix. 免打扰 (`quiet_hours`, `Field.json`) needs a
new time-range control.
- **Row 7** (队列 / 队列成员 pages in English, 新建Queue): `sys_queue` and
`sys_queue_member` are declared in `packages/plugins/plugin-sharing`,
which ships no translation bundle at all; the title, columns and help
come from its English object metadata. `domain:server`.
- **Row 8** (邮件投递 banner `No mail leaves this machine`, toast `Sent test
email to…`):
`packages/plugins/plugin-email/src/live-transport-status.ts` and
`email-plugin.ts`. `domain:server`.
- Seen while taking the screenshots, same class as row 7: on the zh-CN
console the Setup sidebar's 人员与组织 / 访问控制 entries contributed by
plugin-security (Users, Organization, Business Units, Teams,
Invitations, Position Holders, Permission Set Assignment, Sharing Rules,
Record Shares, Queues, Queue Members, API Keys) render in English,
though `packages/platform-objects/src/apps/translations/zh-CN.ts`
carries 「权限集分配」 for `nav_permission_set_assignment`. Visible in the
screenshots below. Not measured further, so which side drops the
translation (the contributed nav item or the console's nav label lookup)
is not established.
## Verification
Gates and tests ran on `cd7b73ac`; the head merges `origin/main` (15
files differ from main, all this PR's), after which the two test files
and `packages/i18n/` were re-run (below).
<details><summary>Live rig and screenshots (zh-CN console, 1440
wide)</summary>
`examples/app-showcase` `objectstack dev --seed-admin` on a private port
and file database, the console via `vite` in `ui/apps/console` with
`DEV_PROXY_TARGET`, Chromium with browser locale zh-CN, signed in as the
seeded admin. `member_default` is distributed by the `everyone` position
(`GET /api/v1/meta/position`: `everyone
["showcase_member_default","member_default"]`). Before shots: the four
source files restored to the base under vite HMR, then restored to
`HEAD`.
Screenshots live on the never-merged branch
`claude/issue-30208-evidence` (commit `c30ec3b2`).
Before, 权限集分配 → 成员 — 标准访问: note 「已绑定到 everyone 锚点 — 所有登录成员都持有此权限集。」

After: 「所有登录成员都持有此权限集。」

Before / after, 用户权限集 list (`system-data`): 平台架构 → 平台预置 · 可编辑


Before / after, users list (`better-auth`): 身份 → 经身份服务写入


Before / after, email template list (`config`): 管理配置 → 在此配置


</details>
<details><summary>Tests, typecheck, lint</summary>
- `pnpm --dir ui exec vitest run` on the two changed test files: Test
Files 2 passed (2), Tests 22 passed (22), lock VERDICT command-exit 0.
- Wider run: `packages/i18n/`,
`packages/app-shell/src/views/metadata-admin/`,
`packages/app-shell/src/components/` and the five ObjectView /
RecordDetailView / RecordFormPage managed-by badge files: Test Files 825
passed (825), Tests 9149 passed, 14 skipped, lock VERDICT command-exit
0.
- `turbo run type-check --filter=@object-ui/app-shell
--filter=@object-ui/i18n`: lock VERDICT command-exit 0.
- `pnpm --dir ui run check:spec-symbols`: exit 0. eslint on the changed
files and `packages/i18n/src/locales`: exit 0. `pnpm --dir ui run
check:new-line-citations`: 0 new citations, exit 0. `pnpm
check:doc-authoring`: exit 0.
- After merging `origin/main` (head `a5f5ec0b`): rebuilt the console
closure (73 tasks), then `packages/i18n/` plus the two changed test
files: Test Files 97 passed (97), Tests 1465 passed, 13 skipped, lock
VERDICT command-exit 0.
</details>
<details><summary>Derived gates (35/35 exit 0)</summary>
`node scripts/pm/dispatch-gates.mjs --commands` derived 35 families at
`cd7b73ac`; each ran and exited 0. `--ran` reconciliation: 35 derived,
35 run, 0 NOT-MEASURED (a derived zero: every line carries an exit code
and none is 3). CI runs the rest.
</details>
---
_Generated by [Claude
Code](https://claude.ai/code/session_01L6bhgWjg9S7avVTjuNn9P2)_
---------
Co-authored-by: Claude <noreply@anthropic.com>1 parent 7d11067 commit fa9c0aa
15 files changed
Lines changed: 135 additions & 36 deletions
File tree
- .changeset
- ui/packages
- app-shell/src
- components
- __tests__
- views/metadata-admin
- i18n/src/locales
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
41 | 41 | | |
42 | 42 | | |
43 | 43 | | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
44 | 49 | | |
45 | 50 | | |
46 | 51 | | |
47 | 52 | | |
48 | | - | |
| 53 | + | |
49 | 54 | | |
50 | 55 | | |
51 | 56 | | |
| |||
112 | 117 | | |
113 | 118 | | |
114 | 119 | | |
115 | | - | |
| 120 | + | |
116 | 121 | | |
117 | 122 | | |
118 | 123 | | |
| |||
140 | 145 | | |
141 | 146 | | |
142 | 147 | | |
143 | | - | |
| 148 | + | |
144 | 149 | | |
145 | 150 | | |
146 | 151 | | |
| |||
162 | 167 | | |
163 | 168 | | |
164 | 169 | | |
165 | | - | |
| 170 | + | |
166 | 171 | | |
167 | 172 | | |
168 | 173 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
64 | 64 | | |
65 | 65 | | |
66 | 66 | | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
37 | 37 | | |
38 | 38 | | |
39 | 39 | | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
40 | 46 | | |
41 | 47 | | |
42 | 48 | | |
| |||
217 | 223 | | |
218 | 224 | | |
219 | 225 | | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
158 | 158 | | |
159 | 159 | | |
160 | 160 | | |
161 | | - | |
| 161 | + | |
162 | 162 | | |
163 | 163 | | |
164 | 164 | | |
| |||
186 | 186 | | |
187 | 187 | | |
188 | 188 | | |
189 | | - | |
| 189 | + | |
190 | 190 | | |
191 | 191 | | |
192 | 192 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
996 | 996 | | |
997 | 997 | | |
998 | 998 | | |
999 | | - | |
| 999 | + | |
1000 | 1000 | | |
1001 | 1001 | | |
1002 | 1002 | | |
1003 | 1003 | | |
1004 | | - | |
| 1004 | + | |
1005 | 1005 | | |
1006 | 1006 | | |
1007 | 1007 | | |
| |||
1016 | 1016 | | |
1017 | 1017 | | |
1018 | 1018 | | |
1019 | | - | |
| 1019 | + | |
1020 | 1020 | | |
1021 | 1021 | | |
1022 | 1022 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
887 | 887 | | |
888 | 888 | | |
889 | 889 | | |
890 | | - | |
| 890 | + | |
891 | 891 | | |
892 | 892 | | |
893 | 893 | | |
894 | 894 | | |
895 | | - | |
| 895 | + | |
896 | 896 | | |
897 | 897 | | |
898 | 898 | | |
| |||
907 | 907 | | |
908 | 908 | | |
909 | 909 | | |
910 | | - | |
| 910 | + | |
911 | 911 | | |
912 | 912 | | |
913 | 913 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1155 | 1155 | | |
1156 | 1156 | | |
1157 | 1157 | | |
1158 | | - | |
| 1158 | + | |
1159 | 1159 | | |
1160 | 1160 | | |
1161 | 1161 | | |
| |||
1165 | 1165 | | |
1166 | 1166 | | |
1167 | 1167 | | |
1168 | | - | |
| 1168 | + | |
1169 | 1169 | | |
1170 | 1170 | | |
1171 | 1171 | | |
| |||
1175 | 1175 | | |
1176 | 1176 | | |
1177 | 1177 | | |
1178 | | - | |
| 1178 | + | |
1179 | 1179 | | |
1180 | 1180 | | |
1181 | 1181 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
917 | 917 | | |
918 | 918 | | |
919 | 919 | | |
920 | | - | |
| 920 | + | |
921 | 921 | | |
922 | 922 | | |
923 | 923 | | |
924 | 924 | | |
925 | | - | |
| 925 | + | |
926 | 926 | | |
927 | 927 | | |
928 | 928 | | |
| |||
937 | 937 | | |
938 | 938 | | |
939 | 939 | | |
940 | | - | |
| 940 | + | |
941 | 941 | | |
942 | 942 | | |
943 | 943 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
912 | 912 | | |
913 | 913 | | |
914 | 914 | | |
915 | | - | |
| 915 | + | |
916 | 916 | | |
917 | 917 | | |
918 | 918 | | |
919 | 919 | | |
920 | | - | |
| 920 | + | |
921 | 921 | | |
922 | 922 | | |
923 | 923 | | |
| |||
932 | 932 | | |
933 | 933 | | |
934 | 934 | | |
935 | | - | |
| 935 | + | |
936 | 936 | | |
937 | 937 | | |
938 | 938 | | |
| |||
0 commit comments