Skip to content

refactor(editor): separate graph presentation mechanics from shader semantics #32

Closed

Description

@FLwolfy

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.

Dependencies: #28, #30.

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions