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, andUpdateAsync.- 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.uuievent back-channel. NullRenderHostfor offline tests and opcode golden frames.- Bilingual Docusaurus documentation and static
/spec/*.schema.jsonfiles.
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 newtemplate 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
WKWebViewrender host. - Windows
WebView2render 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.