You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
Repository navigation
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
于是渲染的是MultiSelectField,但决定 label 怎么关联的声明是按 select 这个键查的(resolveFieldLabelling → getMeta('select')),而 select必须保持未声明 —— 单选的 trigger 是可 label 的,给它剥掉 for 是把一个能用的字段弄坏(form-group-label-association.test.ts 里已有一条钉专门守这个方向:「a BUILTIN type ignores a registry declaration under the same name」)。
On the A/B/C fork: this is an implementation-layer choice inside objectui, not a product-semantics or public-contract call, so it does not go to the maintainer decision box. The filer's lean (A — mapFieldTypeToFormType emits field:multiselect for select+multiple, so one place decides the widget and declaration/render can no longer diverge) is the structurally sound direction under [fields] 复合/分组 field widget 丢弃或错投 host 下发的控件 id:address / geolocation 的表单 label for 悬空,checkboxes / radio / rating / file 的 for 落在不可 label 的 div 上 #3961's declaration-not-guessing design. First implementation step is the blast-radius measurement the body names: CASCADE_OPTION_FIELD_TYPES / DATA_SOURCE_FIELD_TYPES matching, every field:select branch point, and confirming all mapper call sites can see multiple. If that measurement contradicts A, the lane escalates back rather than switching to B unilaterally.
Activity
os-zhuang commentedon Aug 9, 2026
Triage:
pm:queue(objectui-local card — sibling repos carry pm-state only, nodomain:*).origin/main@18c42c6:packages/fields/src/field-type-alias.ts:45mapsselecttofield:selectwith nomultiplecheck;packages/plugin-form/src/sectionFields.ts:109copiesmultiple: field.multiple;SelectFielddelegates toMultiSelectFieldwhenconfig.multipleis set — so the type-keyed labelling declaration never sees the widget that actually renders. The a11y consequence (host label inert,HTMLLabelElement.controlnull) is the same fact class as [fields] multiselect 的 host label 也落在不可 label 的包裹 div 上 —— 与 #3961 同一失效类,但不在其审计的六个 widget 内 #3975/[fields] 复合/分组 field widget 丢弃或错投 host 下发的控件 id:address / geolocation 的表单 labelfor悬空,checkboxes / radio / rating / file 的for落在不可 label 的 div 上 #3961.mapFieldTypeToFormTypeemitsfield:multiselectfor select+multiple, so one place decides the widget and declaration/render can no longer diverge) is the structurally sound direction under [fields] 复合/分组 field widget 丢弃或错投 host 下发的控件 id:address / geolocation 的表单 labelfor悬空,checkboxes / radio / rating / file 的for落在不可 label 的 div 上 #3961's declaration-not-guessing design. First implementation step is the blast-radius measurement the body names:CASCADE_OPTION_FIELD_TYPES/DATA_SOURCE_FIELD_TYPESmatching, everyfield:selectbranch point, and confirming all mapper call sites can seemultiple. If that measurement contradicts A, the lane escalates back rather than switching to B unilaterally.select分支把 host id 展开到 Radix Select.Root —— 手写 form schema 里type: 'select'的 labelfor全部悬空(#3306 的内建侧同形) #3976 is the built-inSelectbranch — a different, non-overlapping path per its own cross-ref; [fields] multiselect 的 host label 也落在不可 label 的包裹 div 上 —— 与 #3961 同一失效类,但不在其审计的六个 widget 内 #3975 (PR fix(fields): name the multiselect chip group by IDREF instead of an inertfor(#3975) #3983, merged asd8a0be4) and [fields] 复合/分组 field widget 丢弃或错投 host 下发的控件 id:address / geolocation 的表单 labelfor悬空,checkboxes / radio / rating / file 的for落在不可 label 的 div 上 #3961 (PR fix(fields,components): 复合/分组 field widget 的组标签改用 IDREF 关联(#3961) #3978) are the fixed siblings. No twin.d8a0be4is onorigin/mainand the three anchor sites above are unchanged since filing.本评论来自分诊座位 Routine(#5474 试点),不构成认领。
Generated by Claude Code
yinlianghui commentedon Aug 9, 2026
PM 分诊轮(session_01GTRjn8xBqp75dk7kFupVRt):方向代裁 A 案 ——
mapFieldTypeToFormType对select+multiple: true发field:multiselect,生产端一处决定渲染哪个 widget,声明与渲染从此不可能错位。理由:与 #3961 把 labelling 做成「按类型的纯声明」的哲学一致;B 案把声明位变值相关是明确的倒退(正文自己论证了);C 案因可达性不成立。实施前置:先量波及面(正文点名的CASCADE_OPTION_FIELD_TYPES/DATA_SOURCE_FIELD_TYPES/ 一切按field:select判断的调用点是否拿得到multiple),测量表进 PR;若测量发现某调用点结构上拿不到值,停手报告而非硬改 —— 届时升级为契约面裁决。SelectField的委派分支在该路径成为死码后按 ADR-0049 语义处置(标注或收敛,量完定)。排程:与在飞 #3990 的 widgets 面相交(SelectField/MultiSelectField)—— #3990 收单后派,候选池就位。
Generated by Claude Code
yinlianghui commentedon Aug 9, 2026
【PM 认领】objectui 分片(session_01GTRjn8xBqp75dk7kFupVRt),批次 7 补位。派 os-dev 实施,分支
claude/issue-3986-select-multiple-widget-mapping(objectui 仓)。前置已满足:#3990/PR #4002 已落 main(c97a45e8c)。按已裁 A 案实施(测量前置,见分诊评论):
mapFieldTypeToFormType对select+multiple: true发field:multiselect;波及面测量表先行进 PR;某调用点拿不到multiple则停手报告。面切割注记:MultiSelectField/各 widget 的只读分支属 #4005,本单不碰只读面。Generated by Claude Code
fix(fields): resolve select + multiple to field:multiselect so its ho…
fix(plugin-form): a no-sections drawer form honours field-level condi…