## 背景 ADR-0092 D4 的框架侧(#2817 / PR #2832)已给 `sys_user` 加 `userActions: { edit: true }` 并对非档案字段做逐字段 `readonly` 治理。server 元数据正确(`/api/v1/meta/object/sys_user` 返回 `userActions.edit=true`、仅 `name`/`image` 的 `readonly=false`)。 ## 问题(浏览器验证发现) 当前 vendored console(objectui `@object-ui/console` 14.3.0,framework 里 pin SHA `6fa8e6a`)的**记录表单渲染器**把 `protection.lock:'full'` / `managedBy:'better-auth'` 对象的**所有**表单字段渲染为 `readonly disabled` —— 包括本应可编辑的 `name`/`image`。 现象(Setup → Users → 行菜单 Edit): - ✅ 行菜单出现 "Edit"(`resolveCrudAffordances` 正确解析了 `userActions.edit`) - ✅ Edit 表单只暴露 Name + Profile Image 两个字段(只读字段正确排除) - ❌ 但这两个字段的 `<input>` 带 `readonly disabled` 属性,无法输入 → affordance "可见但不可用" DOM 证据:`<input readonly disabled name="name" group="Identity" value="Dev Admin" schema="[object Object]">`。字段 widget 的只读判定为 `field.readonly || <form-level lock>`;`name` 的 `field.readonly=false`,故是**表单级/对象级**的一刀切锁定(`RecordFormPage` 仅用 `managedBy` 渲染 badge,禁用逻辑在共享 widget 层)。 ## 需求 记录表单渲染器应:**当对象 `userActions.edit === true` 时,按逐字段 `readonly` 渲染,而非按 `protection.lock` / `managedBy` 对整个表单一刀切禁用。** `protection.lock` 是元数据保护(能否改 schema,ADR-0010),不应等同于记录数据只读。 ## 联动 - objectui 改动合并后,在 framework 跑 `pnpm objectui:refresh` 更新 pin SHA + vendored bundle。 - 在此之前,#2832 的 affordance 在 Console 里"可见但不可用"(服务端守卫 #2828 已兜底安全,仅 UX 不完整)。 ## 相关 - ADR-0092 D4 · framework #2817 / PR #2832 · 依赖已合并的守卫 #2828 - 注:本 issue 描述 objectui 仓库的改动;开在 framework 仅为跟踪跨仓库依赖(AGENTS.md Prime Directive #10)。
Activity
os-zhuang commentedon Jul 11, 2026
已修复并合并:objectui #2395(
ObjectForm按userActions.edit逐字段 readonly 渲染,不再对 managed 对象一刀切禁用)已合并,并经 framework #2832 的objectui:refresh(pin → 5da9905)vendored 进来。端到端验证:平台管理员在 Console 中可编辑 sys_user 的 name/image,email/role 只读。closes via #2832 / #2817。Generated by Claude Code
chore: refresh the vendored console to 2cb8d78e24ad + fix the refresh…