跳到主要内容

路线图

UltimateUI 的路线图以“可验证的 GUI 框架闭环”为优先级:先保证 WebKitGTK 上的 mount、update、event 和 wire 协议稳定,再扩展声明式 UI、样式系统和跨平台宿主。

当前状态

已完成的 alpha 基础:

  • WebKitGTK 6.0 + JavaScriptCoreGTK 6.0 render host。
  • App.Create(...)MountMountAsyncUpdateUpdateAsync
  • typed element catalog、style catalog、event catalog 和 source generators。
  • 二进制 opcode frame、schema version handshake 和 TypeScript shim decoder。
  • DOM mount/update 路径和 window.webkit.messageHandlers.uui 事件回传。
  • NullRenderHost 用于离线测试和 opcode golden frame。
  • Docusaurus 中英文文档站和 /spec/*.schema.json 静态 schema。

Alpha: Runtime Hardening

目标:把当前 WebKitGTK 闭环变成可持续迭代的最小运行时。

  • 扩展 DOM update transaction:child insert/move/remove、attribute diff、style diff。
  • 完成 listener lifecycle:重复注册、移除、dispose 和 renderer 侧 listener 表清理。
  • 增加错误传播:shim decode error、schema mismatch、JS evaluation failure 的统一诊断。
  • 加强 WebKitGTK 生命周期:窗口关闭、main loop、取消、异常和资源释放路径。
  • 补充 integration tests:文本、属性、样式、子节点、事件 payload、窗口关闭。
  • 建立 wire compatibility 测试:schema hash、opcodes、shim bundle 与 native constants drift 检查。

Alpha: Declarative UI Layer

目标:在 imperative update 之上提供更自然的 C# UI 编程模型。

  • 定义 component/render contract。
  • 接入 NodeArena 上的 keyed reconciliation。
  • 使用 LIS reconciler 完成 child reorder 的最小 opcode 输出。
  • 支持 state invalidation 和 batched updates。
  • 明确 UI mutation threading model,并把 analyzer 规则落到可执行测试。

Beta: Styling And Controls

目标:让实际应用可以不用手写底层 style opcode。

  • 扩展 spec/styles.json 的 CSS 属性覆盖面。
  • 增加 typed style value:keyword、color、length、string、array。
  • 支持 class/style 的组合策略和复用 style fragments。
  • 扩展元素目录:form、list、table、media、dialog、semantic layout。
  • 扩展事件目录:focus、blur、change、submit、pointer、keyboard composition。
  • 增加基础控件样例:button、input、form、list、table、modal。

Beta: Tooling And Documentation

目标:让贡献和应用接入成本降低。

  • 完整 API reference 和 cookbook。
  • Wire protocol 版本策略和迁移说明。
  • 文档站加入架构图、frame 示例和 renderer event 示例。
  • 增加 dotnet new 模板或 sample scaffolding。
  • 建立 CI:build、test、format、shim drift、docs build、schema validation。
  • 发布 NuGet package metadata 和 README badges。

Release Candidate

目标:锁定 v1 公开 API。

  • 冻结核心 namespace、public API 和 wire schema policy。
  • 性能基准:mount throughput、update latency、event dispatch overhead。
  • 内存与资源审计:handle lifetime、listener table、WebKit native handles。
  • 错误消息和 diagnostics 稳定化。
  • 打包 Linux x64 发行说明和依赖探测说明。
  • 完成升级指南和 breaking-change policy。

v1

目标:Linux WebKitGTK 上的稳定可用版本。

  • 稳定 WebKitGTK render host。
  • 稳定 typed DOM + update + event 模型。
  • 稳定 source-generator driven spec pipeline。
  • NuGet 发布和文档站上线。
  • 明确非目标:macOS、Windows 和 native WebProcessExtension fast path 不阻塞 v1。

Future Seats

v1 后再评估:

  • macOS WKWebView render host。
  • Windows WebView2 render host。
  • Native WebProcessExtension fast path。
  • Accessibility tree helpers 和 focus management。
  • DevTools/inspector integration。
  • Hot reload 和 visual diagnostics。

Prioritization Rules

  • 先稳定 runtime contract,再扩展 API surface。
  • 先保证 WebKitGTK integration tests,再做跨平台抽象。
  • 每个 spec 变化必须带 schema、generator、shim 和测试更新。
  • 每个新控件必须有 mount、update 和 event 路径覆盖。
  • 文档与代码同级维护;公开行为没有文档就不视为完成。