Skip to main content

Roadmap

UltimateUI prioritizes a verifiable GUI framework loop: stabilize mount, update, events, and wire protocol behavior on WebKitGTK first, then expand into declarative UI, styling, controls, and cross-platform render hosts.

Current Status

Completed alpha foundation:

  • WebKitGTK 6.0 + JavaScriptCoreGTK 6.0 render host.
  • App.Create(...), Mount, MountAsync, Update, and UpdateAsync.
  • Typed element catalog, style catalog, event catalog, and source generators.
  • Binary opcode frames, schema version handshake, and TypeScript shim decoder.
  • DOM mount/update path and window.webkit.messageHandlers.uui event back-channel.
  • NullRenderHost for offline tests and opcode golden frames.
  • Bilingual Docusaurus documentation and static /spec/*.schema.json files.

Alpha: Runtime Hardening

Goal: turn the current WebKitGTK loop into a durable minimum runtime.

  • Extend DOM update transactions: child insert/move/remove, attribute diff, and style diff.
  • Complete listener lifecycle: repeated registration, removal, disposal, and renderer-side listener table cleanup.
  • Add unified diagnostics for shim decode errors, schema mismatches, and JS evaluation failures.
  • Harden WebKitGTK lifecycle: window close, main loop, cancellation, exceptions, and resource release.
  • Expand integration tests for text, attributes, styles, children, event payloads, and window close.
  • Add wire compatibility checks for schema hash, opcodes, shim bundle, and native constant drift.

Alpha: Declarative UI Layer

Goal: provide a more natural C# UI model on top of imperative updates.

  • Define the component/render contract.
  • Wire keyed reconciliation into NodeArena.
  • Use the LIS reconciler to emit minimal child reorder opcodes.
  • Support state invalidation and batched updates.
  • Lock down the UI mutation threading model and back analyzer rules with executable tests.

Beta: Styling And Controls

Goal: make real applications possible without hand-writing low-level style opcodes.

  • Expand CSS property coverage in spec/styles.json.
  • Add typed style values: keyword, color, length, string, and array.
  • Support class/style composition and reusable style fragments.
  • Expand the element catalog: form, list, table, media, dialog, and semantic layout.
  • Expand the event catalog: focus, blur, change, submit, pointer, and keyboard composition.
  • Add basic control samples: button, input, form, list, table, and modal.

Beta: Tooling And Documentation

Goal: reduce contribution and application onboarding cost.

  • Complete API reference and cookbook.
  • Document wire protocol versioning and migration policy.
  • Add architecture diagrams, frame examples, and renderer event examples to the docs.
  • Add a dotnet new template or sample scaffolding.
  • Establish CI for build, test, format, shim drift, docs build, and schema validation.
  • Publish NuGet package metadata and README badges.

Release Candidate

Goal: lock the v1 public API.

  • Freeze core namespaces, public API, and wire schema policy.
  • Add performance benchmarks: mount throughput, update latency, and event dispatch overhead.
  • Audit memory and resources: handle lifetime, listener tables, and WebKit native handles.
  • Stabilize error messages and diagnostics.
  • Finish Linux x64 release notes and dependency probing guidance.
  • Complete upgrade guidance and breaking-change policy.

v1

Goal: a stable Linux WebKitGTK release.

  • Stable WebKitGTK render host.
  • Stable typed DOM + update + event model.
  • Stable source-generator driven spec pipeline.
  • NuGet release and public documentation site.
  • Explicit non-goals: macOS, Windows, and the native WebProcessExtension fast path do not block v1.

Future Seats

To evaluate after v1:

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

Prioritization Rules

  • Stabilize runtime contracts before expanding API surface.
  • Require WebKitGTK integration coverage before cross-platform abstraction work.
  • Every spec change must update schema, generators, shim, and tests.
  • Every new control must cover mount, update, and event paths.
  • Docs are maintained with code; public behavior is not complete until documented.