Files
XCEngine/docs/plan/XCUI_Phase_Status_2026-04-05.md

4.7 KiB

XCUI Phase Status 2026-04-05

Scope

Current execution stays inside the XCUI module and new_editor. Old editor replacement is explicitly out of scope for this phase.

Latest Checkpoint

  • Phase 1 sandbox batch committed and pushed as 67a28bd (Add XCUI new editor sandbox phase 1).
  • Current work has moved into Phase 2: filling the three-layer XCUI structure instead of replacing the old editor.

Three-Layer Status

1. Common Core

  • UI::DrawData, input event types, focus routing, style/theme resolution are in active use.
  • UIDocumentCompiler was restored to a stable buildable baseline after a broken parallel schema attempt corrupted the file.
  • Build-system hardening for MSVC/PDB output paths has started in root CMake, engine/CMakeLists.txt, new_editor/CMakeLists.txt, and tests/NewEditor/CMakeLists.txt.
  • Shared engine-side XCUI runtime scaffolding is now present under engine/include/XCEngine/UI/Runtime and engine/src/UI/Runtime.
  • Core regression coverage now includes UIContext, layout, style, and runtime screen-player tests through core_ui_tests.

Current gap:

  • Schema/validation is not yet landed in a stable form.
  • 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.

2. Runtime/Game Layer

  • Runtime-side XCUI is still shallow.
  • The main concrete progress here is that the retained-mode demo runtime now supports a real TextField input path with UTF-8 text entry and backspace handling.
  • This proves that the runtime-facing layer is no longer limited to static cards/buttons.
  • Engine-side runtime ownership is no longer zero: UIScreenPlayer and UISystem now define a minimal shared runtime contract for loading a screen document, ticking it with input, and collecting UI::UIDrawData.

Current gap:

  • No real game-facing screen host, menu stack, HUD stack, or shared runtime widget library yet.
  • The new runtime layer still needs a real XCUI document host implementation instead of the current host-facing contract only.

3. Editor Layer

  • new_editor remains the isolated XCUI sandbox.
  • Native hosted preview is working as RHI offscreen surface -> ImGui shell texture embed.
  • XCUI Demo remains the long-lived effect and behavior testbed.
  • LayoutLab now includes a ScrollView prototype and a more editor-like three-column authored layout.
  • Panel diagnostics were expanded to clearly separate preview/runtime/input state and native vs legacy paths.
  • XCNewEditor builds successfully to build/new_editor/bin/Debug/XCNewEditor.exe.

Current gap:

  • The shell is still ImGui-hosted.
  • Editor-specialized widgets are still incomplete: tree, list virtualization, property grid, toolbar/menu, text area, icon atlas widgets.

Validated This Phase

  • new_editor_xcui_demo_runtime_tests: 6/6
  • new_editor_xcui_layout_lab_runtime_tests: 5/5
  • new_editor_xcui_rhi_command_compiler_tests: 6/6
  • new_editor_xcui_rhi_render_backend_tests: 5/5
  • XCNewEditor Debug target builds successfully
  • core_ui_tests: 20/20

Landed This Phase

  • Demo runtime TextField with UTF-8 text insertion, caret state, and backspace.
  • Demo authored resources updated to exercise the input field.
  • LayoutLab ScrollView prototype with clipping and hover rejection outside clipped content.
  • RHI image path improvements:
    • clipped image UV adjustment
    • mirrored image UV preservation
    • external texture binding reuse
    • per-batch scissor application
  • new_editor panel/shell diagnostics improvements for hosted preview state.
  • XCUI asset document loading changed to prefer direct source compilation before ResourceManager fallback for the sandbox path, fixing the LayoutLab crash.

Phase Risks Still Open

  • Schema/validation work must be restarted cleanly after the corrupted parallel attempt.
  • ScrollView is still authored/static; no wheel-driven scrolling or virtualization yet.
  • Image widgets still do not have source-rect/atlas-subregion level API in the high-level draw command model.
  • Editor shell still depends on ImGui as host chrome.

Next Phase

  1. Re-open common-layer schema/validation on a clean baseline and land the smallest stable version.
  2. Expand runtime/game-layer ownership from UIScreenPlayer/UISystem into a real XCUI document host plus menu/HUD stack patterns.
  3. Add next editor-facing widgets: TextArea, list/tree, property-style sections.
  4. Move more diagnostics and shell affordances into XCUI-owned editor-layer surfaces instead of only ImGui HUDs.
  5. Continue phased validation, commit, push, and plan refresh after each stable batch.