diff --git a/docs/plan/XCUI_Phase_Status_2026-04-05.md b/docs/plan/XCUI_Phase_Status_2026-04-05.md index 44eddd61..f414ec70 100644 --- a/docs/plan/XCUI_Phase_Status_2026-04-05.md +++ b/docs/plan/XCUI_Phase_Status_2026-04-05.md @@ -13,9 +13,7 @@ Old `editor` replacement is explicitly out of scope for this phase. - schema document definition data is now retained on `UIDocumentModel` and round-trips through the UI artifact path - 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 current editor-host checkpoint additionally hardens the XCUI demo text-editing path and the temporary ImGui host bridge: - - multiline demo text areas now support pointer caret placement, line-number gutters, and tab indent/unindent behavior - - the ImGui bridge now accepts existing shader-resource views and the window renderer exposes an after-UI callback seam + - the demo sandbox and editor bridge APIs were tightened again without touching the old editor replacement scope - Old `editor` replacement remains deferred; all active execution still stays inside XCUI shared code and `new_editor`. ## Three-Layer Status @@ -29,7 +27,6 @@ Old `editor` replacement is explicitly out of scope for this phase. - 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`. - Shared engine-side `UIDocumentScreenHost` now compiles `.xcui` / `.xctheme` screen documents into a runtime-facing document host path instead of leaving all document ownership in `new_editor`. -- The temporary ImGui bridge can now register an existing shader-resource view directly instead of forcing the caller to recreate a texture SRV from scratch. - Core regression coverage now includes `UIContext`, layout, style, runtime screen player/system, and real document-host tests through `core_ui_tests`. Current gap: @@ -56,12 +53,12 @@ Current gap: - `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. -- `XCUI Demo` now covers both single-line and multiline text authoring behavior, including pointer caret placement, line-number gutters, delete/backspace symmetry, and tab indent/unindent in text areas. +- `XCUI Demo` now covers both single-line and multiline text authoring behavior, including click caret placement, delete/backspace, tab indentation, and optional text-area line numbers. - `LayoutLab` now includes a `ScrollView` prototype and a more editor-like three-column authored layout. - `LayoutLab` now also covers editor-facing widget prototypes: `TreeView`, `TreeItem`, `ListView`, `ListItem`, `PropertySection`, and `FieldRow`. - Panel diagnostics were expanded to clearly separate preview/runtime/input state and native vs legacy paths. +- The editor bridge layer now has smoke coverage for swapchain after-UI rendering hooks and SRV-backed ImGui texture descriptor registration. - `XCNewEditor` builds successfully to `build/new_editor/bin/Debug/XCNewEditor.exe`. -- `new_editor` host plumbing now has a narrower swapchain seam via a window-renderer post-ImGui callback, which is the first practical hook for a future window-level compositor split. Current gap: @@ -78,17 +75,17 @@ Current gap: - `core_ui_tests`: `14/14` - `core_ui_style_tests`: `5/5` - `ui_resource_tests`: `7/7` -- `editor_tests` targeted XCUI/editor host API smoke cases: `3/3` +- `editor_tests` targeted bridge smoke: `3/3` ## Landed This Phase - Demo runtime `TextField` with UTF-8 text insertion, caret state, and backspace. - Demo runtime multiline `TextArea` path in the sandbox and test coverage for caret movement / multiline input. -- Demo runtime text editing extended with: - - pointer-based caret placement for text inputs - - multiline text-area line-number gutters - - tab indent / shift-tab unindent - - delete handling symmetry with backspace +- Demo runtime text editing was extended with: + - click-to-place caret + - `Delete` support + - `Tab` / `Shift+Tab` indentation for text areas + - optional text-area line-number gutter rendering - Demo authored resources updated to exercise the input field. - LayoutLab `ScrollView` prototype with clipping and hover rejection outside clipped content. - LayoutLab editor-widget prototypes for tree/list/property-style sections with dedicated runtime coverage. @@ -108,11 +105,11 @@ Current gap: - mirrored image UV preservation - external texture binding reuse - per-batch scissor application +- Editor bridge helpers now expose: + - an `afterUiRender` swapchain callback hook in `D3D12WindowRenderer` + - SRV-view based texture descriptor registration in `ImGuiBackendBridge` + - smoke tests for window renderer, ImGui backend bridge, and console sink registration - `new_editor` panel/shell diagnostics improvements for hosted preview state. -- ImGui host bridge improvements: - - existing shader-resource view registration overload - - swapchain render callback seam after ImGui submission - - editor-side API smoke coverage for bridge and window renderer accessors - XCUI asset document loading changed to prefer direct source compilation before `ResourceManager` fallback for the sandbox path, fixing the LayoutLab crash. - `UIDocumentCompiler.cpp` repaired enough to restore full local builds after the duplicated schema-helper regression. - MSVC debug build hardening was tightened again so large parallel `engine` rebuilds stop tripping over compile-PDB contention.