Skip to content

docs(guide): quick-start teaches the events bag as THE way to declare actions — zero SDUI read points, and #6182 re-priced it to an ADR-0049 retirement #7936

Description

@claude

content/docs/guide/quick-start.mdNext Steps → Add Actions 一节,用一句斩钉截铁的散文把 events bag 教成声明 action 的规范方式:

Actions are data, not inline functions. Define them in schema events:

后面是那个 bag(:141-158):

{
  "type": "button",
  "label": "Open details",
  "events": { "onClick": [ { "action": "navigate", "params": { "url": "/users/ada" } } ] }
}

events 在运行时无人读取 —— 四项证据,逐条在 origin/main 上跑过

A. git grep -nE '\??\.events\b' -- 'packages/*/src' 'apps/*/src'  (排除测试)
   ⇒ 0 处。SDUI 节点读取点:零。
B. git grep -n 'EventableSchema' -- packages apps
   ⇒ 恰好三处:api-types.ts:278 自身声明 · :470 一个联合成员 · index.ts:718 索引再导出。
      无 extender、无 mirror、无 reader。
C. packages/core/src/utils/dom-props.ts:24
   ⇒ DOM 直通白名单的注释里,正把 events="[object Object]" 当作它要关掉的泄漏来举例。
D. ButtonSchema.onClick 的 handlerKeyRefusal 信息指向的是一个**节点类型**
   (`action:button` + `actionType`),从来不是 events bag。

⚠️ 措辞精确性:EventableSchemaapi-types.ts 里的 TypeScript interface,不是 zod schema。作者写的 events 能过 parse 是因为 ButtonSchema / BaseSchema.passthrough()。准确说法是**「TS 面上有声明、索引有导出、运行时无人读」**。

背景:objectui#6497 已记录这套声明无人读取;objectui#6182 在 2026-08-25 的 Option A 裁定把它重定价为 ADR-0049 退役,明确写着它不会成为任何 wiring 的座位。所以这不是「等 events 长出读取端」,是文档在教一个正在退役且从未接线的通道

面:恰好一处,这是量出来的

content/docs 里作者写 "events" 的只有两个文件:

文件 内容 判定
guide/quick-start.md:148 "events": { "onClick": [...] } on a button 缺陷,本卡
api/schema-reference.md:669,1092 { "type": "timeline", "events": [] } 不是缺陷 —— timeline 自己的 events,有真实读取端

⛔ 不要把第二个也改了。

修复方向

用 objectui#7898 / PR objectui#7931 已经量过并落地的方言:action:button 节点携带 actionType。那条 navigate 的意图对应内置词汇里的 url(objectui 另有 navigation 别名)—— ⚠️ 具体 spelling 要按 ActionSchema 自己的声明重新量一遍,不要从 ButtonSchema 那次结论直接搬(见下)。散文那句「Define them in schema events」必须同时改掉,否则改了 fence 而留着散文只是把矛盾换个位置。

⚠️ 一条未测量的相邻观察,⛔ 不要当成本卡的一部分

本页把读者指向 /docs/core/enhanced-actionscontent/docs/core/enhanced-actions.mdx),而那一页教的是 ActionSchema 对象模型{ type:'action', label, actionType:'ajax', api:'/api/orders/process', method:'POST' }),不是 events bag —— 也就是说 quick-start 目前与它自己的链接目标互相矛盾,这是本卡该修的一半理由。

⚠️ 那一页里的 actionType: 'ajax'api: 两个 spelling,看起来像 objectui#7898 在 ButtonSchema 语境下量到的两个缺陷(内置词汇是 script/url/modal/flow/api/form,端点键是 endpoint 而非 api)。⛔ 不要据此认定它是缺陷:那是 ActionSchema,不是 ButtonSchema,两者的词汇表必须各自测量 —— 从上游卡的结论推断适用层级,正是本仓今晚已经踩过的错误。而且那是一个 ts fencecheck:doc-snippets 会判它,它今天是绿的,这本身就是它对 ActionSchema 合法的强信号。要立卡,先量。

相关:objectui#6497(声明无读取端的本体卡,退役链)· objectui#6182(2026-08-25 Option A 裁定)· objectui#7898 / PR objectui#7931(同一族的九处按钮键修复,本卡由它的席位报出)· objectui#7872(其记录里那条「已测量、不是缺陷」的注记已被更正)。


Generated by Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

documentationImprovements or additions to documentationdomain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatfindingpriority:p2

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions