问题描述
objectui 详情页 synth(@object-ui/plugin-detail 的 buildDefaultPageSchema / detectStatusField)在没有手写 record page 时会自动合成详情页,自动探测一个状态字段,在记录顶部渲染有序状态进度条(Lightning Path 风格的 record:path)。
很多对象的 status 是非线性 picklist(正常 / 暂停 / 作废),被强行画成有序进度条不合适。objectui PR objectstack-ai/objectui#2066 已支持用 detail: { stageField: false } 关闭(synth 读 def.detail?.stageField)。
痛点:发现性。 detail.stageField 目前只靠 spec object.zod.ts 那个 .passthrough() 的 detail 块放行——没有 typed 键,所以作者(及 AI)写 detail: { stageField: false } 时没有任何类型提示 / 自动补全,也无从知道这个开关存在。
方案描述
在 packages/spec/src/data/object.zod.ts 的 detail 块里,与 renderViaSchema / hideReferenceRail / hideRelatedTab 并列,补一个 typed stageField 键(带 .describe()),保留 .passthrough():
stageField: z.union([z.string(), z.literal(false), z.null()]).optional()
.describe('record:path 状态字段名;false / null 关闭自动状态进度条'),
类型与 synth 读取的 string | false | null 一致。作者写 ObjectSchema.create({ detail: { stageField: false } }) 即得类型 + 自动补全。不走 skill 文档(原方案一次加太多,已放弃)。仅 spec 一处改动 + changeset。
问题描述
objectui 详情页 synth(
@object-ui/plugin-detail的buildDefaultPageSchema/detectStatusField)在没有手写 record page 时会自动合成详情页,自动探测一个状态字段,在记录顶部渲染有序状态进度条(Lightning Path 风格的record:path)。很多对象的
status是非线性 picklist(正常 / 暂停 / 作废),被强行画成有序进度条不合适。objectui PR objectstack-ai/objectui#2066 已支持用detail: { stageField: false }关闭(synth 读def.detail?.stageField)。痛点:发现性。
detail.stageField目前只靠 specobject.zod.ts那个.passthrough()的detail块放行——没有 typed 键,所以作者(及 AI)写detail: { stageField: false }时没有任何类型提示 / 自动补全,也无从知道这个开关存在。方案描述
在
packages/spec/src/data/object.zod.ts的detail块里,与renderViaSchema/hideReferenceRail/hideRelatedTab并列,补一个 typedstageField键(带.describe()),保留.passthrough():类型与 synth 读取的
string | false | null一致。作者写ObjectSchema.create({ detail: { stageField: false } })即得类型 + 自动补全。不走 skill 文档(原方案一次加太多,已放弃)。仅 spec 一处改动 + changeset。