Repository navigation
refactor(editor): separate graph presentation mechanics from shader semantics #32
Description
Verified on branch / awaiting merge
Production implementation: dd5979c613b0fe8ebd9f7026f25001ceee9f8cee. Delivered head: dbae93e8f211d45a69cdffdb6afa3a33a0af0fa5; the subsequent diff contains documentation/acceptance evidence only. Exact-head CI: Engine CI and NuGet dependency graph passed; all six checks on this exact head are successful. All applicable acceptance conditions for this issue are verified; unavailable physical/manual device checks are explicitly scoped, not reported passed.
Owner: Neutral Graph document/controller and Graph.ImGui geometry/intents. Implementation commits: 63d4f7dc.
Evidence: complete report, exact-head delivery attachment, portable test-case/raw-measurement/requirement indexes linked by the report. Specific proof: Contracts: graph layout/pointer/controller; Visual: independent non-Shader native consumer/failure; Workflows: Shader document/History/Missing; Quantitative: deterministic 2k graph.
Commands: official tests/Invoke-EditorUiAcceptance.ps1 Contracts/Workflows/Visual/Lifecycle/Products with SDK-selected independent outputs; complete source/entry preparation; formal InnoEngine.Build scripts --ide for the three companions; tests/Invoke-WikiChecks.ps1; controlled public performance fixtures where applicable. The report records original command owners, TRX/binlogs, negative tests, failures, skips, input hashes and device limits.
Profiles overlap; do not sum their pass counts into a distinct-test claim. Windows-only sharing fixtures and Unix-only filesystem fixtures are scoped to the executing host. Real native contexts/simulated display metrics and hidden product feature journeys are not a claim of physical display, OS IME or manual Mac testing. No BGCS/vendor/package/generated-binding modification, parallel Core system, test hook, IVT or private reflection was used.
Keep this issue Open. PR #26 includes an individual Fixes #32 and will close it only when the user merges to master. No automatic merge or premature master-resolution claim.
Original defect, ownership and accepted work
The following baseline observations describe the issue as opened. The verification above supersedes intermediate pending checkpoints; original failed/negative logs remain preserved. Acceptance checkboxes are checked only after the exact delivery-head verification completes.
Parent and original requirement
Parent: #27. Work item E05 from the approved Editor UI closure plan and its original implementation/acceptance requirements.
Baseline facts and risks at issue creation
GraphCanvasView shares coordinates/grid/curves/edge hit tests, while generic node rendering/hits/box selection and dragging remain mixed into Shader Canvas. Off-screen node rejection already exists.
Owner and dependency boundary
Inno.Editor.Graph neutral document/state; Inno.Editor.Graph.ImGui geometry/input; Shader owners retain semantic ports/parameters/compiler state.
Implementation
- Extend the existing presenter with immutable neutral node/port presentation and stable graph IDs.
- Return neutral selection/move/connect/delete/menu intents; domain controller performs mutations/history.
- Keep frame-only custom drawing callbacks out of long-lived caches.
- Extract generic node/box/drag mechanisms without adding a parallel graph framework.
- Cache only neutral geometry/IDs with document/generation/revision/scale validity.
Acceptance
- An independent non-Shader test graph uses the same node and interaction APIs without central switches.
- Verify pan/zoom/overlap hit/box/connection/disconnection/delete/clipboard/history.
- One gesture produces one Undo; cancel restores start.
- Missing nodes preserve structure/property bytes; close/reload releases plugin callbacks.
- Shader appearance and compiler diagnostics remain correct.
Failure and lifecycle constraints
Preserve diagnostics, cancellation, atomic rollback/publication, Missing recovery and generation retirement. Reuse Core Events, Identity, IO, Serialization and History. Do not modify BGCS/vendor/generated code or add global/implicit imports, compatibility paths, IVT or private reflection.
Evidence and closure
Commits, exact commands, logs/TRX/data and remaining limits will be added during implementation. Until all acceptance passes this issue remains open. After verification mark Verified on branch / awaiting merge; add Fixes #32 with this issue's actual number to PR #26 only when complete. Close on merge to master, not on branch implementation.
Activity