Refine editor host boundary

This commit is contained in:
2026-04-27 22:21:40 +08:00
parent 9428fec350
commit 520413fa0d
82 changed files with 119 additions and 106 deletions

View File

@@ -38,9 +38,10 @@ incomplete:
- `XCEditorCore` now limits its public app include surface to
`editor/app/Core`, `editor/app/Commands`, `editor/app/State`, and
`editor/app/Host`, and app/core sources now include through explicit module
roots instead of a private `editor/app` compatibility root. The app has not
yet converged on the final directory names.
`editor/app/Host/Interfaces`, and app/core sources now include through
explicit module roots instead of a private `editor/app` compatibility root.
Concrete host code has converged under `editor/app/Host/Win32` and
`editor/app/Host/D3D12`.
- Feature panels no longer use `Composition/EditorContext.h` directly, and
the first app-core test target now exercises `XCEditorCore` outside the
executable host.
@@ -72,6 +73,8 @@ Completed boundary cuts:
`editor/app/Host/Interfaces`, including editor window host interfaces,
render-runtime contracts, texture/viewport host contracts, pointer-capture
contracts, and system interaction service interfaces.
- Concrete Win32 and D3D12 host implementations now live under
`editor/app/Host/Win32` and `editor/app/Host/D3D12`.
- Shared window screen geometry, chrome metrics, and frame transfer requests
now live under `editor/app/Core/Windowing`, and
`XCEditorCore` no longer exports the whole `editor/app` root as a public
@@ -80,7 +83,8 @@ Completed boundary cuts:
`XCEditorCore` and `XCEditor`. App implementation files now include through
explicit module roots such as `app/Composition`, `app/Features`,
`app/Windowing`, `app/Rendering`, `app/Scene`, `app/Services`,
`app/Support`, `app/Bootstrap`, and `app/Platform/Win32`.
`app/Support`, `app/Bootstrap`, `app/Host/Interfaces`, `app/Host/Win32`,
and `app/Host/D3D12`.
- `editor_app_core_tests` now links `XCEditorCore` directly and uses explicit
app module include roots. Its initial suite covers host command routing,
project runtime, shell asset validation, project browser model, hierarchy
@@ -92,9 +96,8 @@ directories, and CMake exposed the whole `editor/app` include root through
`XCEditorCore` usage requirements. The public include surface has now been
narrowed, and internal source compatibility with the private app root has now
been removed. The first app-core test target now exercises the narrowed
surface. Remaining work is to continue converging host code on the target
directory shape and to restore additional stale app feature/viewport tests
without widening the include surface.
surface. Remaining work is to restore additional stale app feature/viewport
tests without widening the include surface.
## Target Directory Shape
@@ -276,8 +279,8 @@ Keep in `XCEditor` executable:
- `app/main.cpp`
- `app/Bootstrap/Application.*`
- `app/Bootstrap/EditorApp.rc`
- `app/Platform/Win32/**`
- `app/Rendering/D3D12/**`
- `app/Host/Win32/**`
- `app/Host/D3D12/**`
- any concrete host glue that includes `windows.h`
`XCEditor` links `XCEditorCore`, `XCUIEditor`, and concrete platform/rendering
@@ -317,6 +320,7 @@ Remaining stale test references to fix or remove in later cuts:
- `Ports/SystemInteractionPort.h`
- `Rendering/Viewport/ViewportRenderTargetInternal.h`
- `app/Platform/Win32/WindowManager/TabDragDropTarget.h`
The test target is part of the architecture. If app core cannot be tested
without starting the executable host, the boundary is not real.
@@ -418,11 +422,12 @@ Completed cuts:
- `EditorWindowTransferRequests`, window screen geometry, and title-bar chrome
metrics now live under `app/Core/Windowing/`.
- `XCEditorCore` now exposes only `app/Core`, `app/Commands`, `app/State`, and
`app/Host` through its public usage requirements, and both `XCEditorCore`
and `XCEditor` enumerate explicit private module roots instead of using
`editor/app` as a compatibility include directory.
- Remaining work in this phase is to continue converging concrete host code on
the `app/Host/Win32` and `app/Host/D3D12` directory shape.
`app/Host/Interfaces` through its public usage requirements, and both
`XCEditorCore` and `XCEditor` enumerate explicit module roots instead of
using `editor/app` as a compatibility include directory.
- Concrete Win32 and D3D12 host implementations now live under
`app/Host/Win32` and `app/Host/D3D12`; `XCEditor` consumes those roots
privately, while `XCEditorCore` only sees `app/Host/Interfaces`.
## Phase 6: Documentation Update