# NewEditor Tree Residual Duplication Closure Plan Date: `2026-04-22` Status: `In Progress` ## Goal - Close the true remaining duplication between `HierarchyPanel` and the project left tree after the `TreePanelHost` / `UIEditorTreePanelBehavior` cleanup. - Keep the solution rooted in existing modules instead of creating new `Behavior` / `Host` / `Support` files. - Reduce code only where the duplication is structurally real, not where product semantics differ. ## Why A New Plan Is Needed - The previous plan completed the removal of the tree glue layer. - That did not automatically mean the hierarchy tree and project tree were free of all true duplication. - The remaining work is smaller in scope, but it is real and should be tracked separately instead of being hidden under the completed root plan. ## Confirmed Residual Duplication ### 1. Hosted panel command focus claiming is still duplicated Current duplicated shape: - `HierarchyPanel::ClaimCommandFocus(...)` - `ProjectPanel::ClaimCommandFocus(...)` - `InspectorPanel::ClaimCommandFocus(...)` This is app-layer hosted panel behavior, not tree-business behavior. ### 2. Tree rename host skeleton is still partially duplicated Current duplicated shape: - `ClearRenameState(...)` - `QueueRenameSession(...)` - `TryStartQueuedRenameSession(...)` - `UpdateRenameSession(...)` Notes: - `HierarchyPanel` has a single tree surface. - `ProjectPanel` has both tree and grid rename surfaces. - The commit side-effects must stay local, but the session host skeleton still contains real duplication. ### 3. Tree append/update skeleton must be re-audited carefully - Some call order is shared: tree background, tree foreground, inline rename overlay, drop preview. - But `ProjectPanel` also owns splitter, breadcrumb, grid, context menu, asset drag/drop, and dual-surface rename. - This area must not be “abstracted for symmetry” unless the extracted part is truly stable and reduces code clearly. ## Explicit Non-Goals - Do not merge panel refresh loops. - Do not merge project tree and asset grid logic. - Do not move project or scene runtime semantics into `XCEditor`. - Do not create any new `Behavior`, `Host`, `Helper`, `Support`, or similar glue files. - Do not refactor for visual symmetry when code ownership would become less clear. ## Execution Plan ### Phase A. Hosted Panel Command Focus Dedup Status: `Completed` Target: - Consolidate hosted-panel command focus claiming into an existing app-level module. Rules: - No new file. - Prefer extending an existing app-level focus module. - Update `HierarchyPanel`, `ProjectPanel`, and `InspectorPanel` together if they share the same pattern. Validation: - Build `XCUIEditorApp` - Smoke test `XCUIEditor.exe` Completed result: - Consolidated hosted panel command focus claiming into `EditorCommandFocusService.h` - Removed duplicated `ClaimCommandFocus(...)` implementations from `HierarchyPanel`, `ProjectPanel`, and `InspectorPanel` - Verified by build and smoke test ### Phase B. Tree Rename Host Skeleton Dedup Status: `Pending` Target: - Reduce duplicated tree rename session host code while preserving local business commit behavior. Rules: - No new glue layer. - Keep tree-generic session mechanics in existing tree/editor modules. - Keep `ProjectPanel` grid rename semantics local. - Keep `HierarchyPanel` scene rename commit local. Validation: - Build `XCUIEditorApp` - Smoke test `XCUIEditor.exe` - Confirm hierarchy rename and project tree/grid rename still start and shut down correctly ### Phase C. Final Re-Audit Of Tree Skeleton Duplication Status: `Pending` Target: - Re-check whether any remaining shared tree call sequence should still be extracted. Rules: - Only extract if it removes clear structural duplication. - If the remaining overlap is just normal orchestration around different business surfaces, record it as intentional and stop. Validation: - `rg` verification of targeted duplicate blocks - Build `XCUIEditorApp` - Smoke test `XCUIEditor.exe` ## Acceptance - Previous root plan is archived. - Remaining true duplication is tracked separately. - Hosted panel command focus duplicate is removed from the duplicated panels. - Tree rename host skeleton duplication is reduced without breaking project grid/tree split semantics. - No new glue-layer file is introduced. - `XCUIEditorApp` builds and smoke tests pass after each completed phase.