Wire 协议
UltimateUI 的 wire protocol 由 spec/opcodes.json 驱动。生成器会根据这个 spec
产生 C# writer、TypeScript shim opcode 表,以及 native web extension 需要的
常量。
Schema 域名
所有 spec 文件都使用项目域名作为 JSON Schema 地址:
{
"$schema": "https://ultimate-ui.hcgstudio.com/spec/opcodes.schema.json"
}
这些 schema 文件由 Docusaurus 静态目录提供,源码位置是 docs/static/spec/。
部署到 ultimate-ui.hcgstudio.com 后,Docusaurus 会把它们暴露为:
https://ultimate-ui.hcgstudio.com/spec/opcodes.schema.jsonhttps://ultimate-ui.hcgstudio.com/spec/elements.schema.jsonhttps://ultimate-ui.hcgstudio.com/spec/events.schema.jsonhttps://ultimate-ui.hcgstudio.com/spec/styles.schema.json
当前 spec 文件:
spec/opcodes.jsonspec/elements.jsonspec/events.jsonspec/styles.json
Frame 生命周期
RingEncoder写入 frame header 和 opcode records。DomFrameValidator在提交前做本地检查。- WebKitGTK backend 把 frame 传给 shim。
- shim 检查 magic、schema version 和 payload,再执行 DOM 操作。
- shim 返回
JsBatchResult,包括opsApplied和versionMismatch。
Shim 生成
TypeScript shim 的生成入口:
make shim
这个命令会更新:
shim/src/opcodes.gen.tsshim/dist/uui-shim.js
如果 spec/opcodes.json 变化,schema version 会变化,旧 shim 会拒绝处理不匹配
的 frame。