Tighten XCUI schema metadata validation

This commit is contained in:
2026-04-05 06:03:00 +08:00
parent 7b49a621cc
commit 6f591e6ce3

View File

@@ -11,6 +11,7 @@ Old `editor` replacement is explicitly out of scope for this phase.
- Phase 2 common/runtime batch committed and pushed as `ade5be3` (`Add XCUI runtime screen layer and demo textarea`).
- Phase 3 has now produced a stable mixed batch across common/runtime/editor:
- schema document definition data is now retained on `UIDocumentModel` and round-trips through the UI artifact path
- schema self-definition validation is now stricter around enum/document-only metadata combinations
- engine runtime coverage was tightened again around `UISystem` and concrete document-host rendering
- `LayoutLab` continues as the editor widget proving ground for tree/list/property-section style controls
- the demo sandbox and editor bridge APIs were tightened again without touching the old editor replacement scope
@@ -31,7 +32,7 @@ Old `editor` replacement is explicitly out of scope for this phase.
Current gap:
- Minimal schema self-definition support is landed, but schema-driven validation for `.xcui` / `.xctheme` instances is still not implemented.
- Minimal schema self-definition support is landed, including consistency checks for enum/document-only schema metadata, but schema-driven validation for `.xcui` / `.xctheme` instances is still not implemented.
- Shared widget/runtime instantiation is still thin and mostly editor-side.
- Common widget primitives are still incomplete: multiline text editing, tree/list virtualization, property-grid composition, and native image/source-rect level APIs.
@@ -128,11 +129,8 @@ Current gap:
## Next Phase
1. Expand schema rules just one level further inside `UIDocumentCompiler.cpp`:
- `allowedValues` only for `Enum`
- `documentKind` / `restrictDocumentKind` only for `Document`
- `restrictDocumentKind=true` requires explicit `documentKind`
2. Expand runtime/game-layer ownership from the current document host + layered `UISystem` into reusable menu/HUD stack patterns and engine runtime integration.
3. Promote the current editor-facing widget prototypes out of authored `LayoutLab` content and into reusable XCUI widget/runtime modules, then continue with toolbar/menu and more native shell-owned chrome.
4. Start the window-level compositor split in `new_editor` so the editor shell can run through `ImGuiHostCompositor` first and then grow a native XCUI compositor path on the same seam.
1. Expand runtime/game-layer ownership from the current document host + layered `UISystem` into reusable menu/HUD stack patterns and engine runtime integration.
2. Promote the current editor-facing widget prototypes out of authored `LayoutLab` content and into reusable XCUI widget/runtime modules, then continue with toolbar/menu and more native shell-owned chrome.
3. Start the window-level compositor split in `new_editor` so the editor shell can run through `ImGuiHostCompositor` first and then grow a native XCUI compositor path on the same seam.
4. Reduce remaining ImGui leakage in hosted preview surfaces and panel contracts after the compositor seam is in place.
5. Continue phased validation, commit, push, and plan refresh after each stable batch.