Skip to content

Phase 555: whiteboard primitive eraser behavior route #229

@ExplodingUFO

Description

@ExplodingUFO

Context

Phase 538 deliberately kept selection.delete scoped to graph-selection deletion evidence and did not implement an eraser cursor, collision trail, or eraser-specific hit-testing. Once Phase 547-554 establish whiteboard primitive state, projection, activation, gesture capture, and Cookbook UX, eraser behavior can be considered as its own narrow behavior slice.

This phase owns eraser behavior for whiteboard primitives only, without broad graph deletion or full React Flow whiteboard parity claims.

Scope

Implement a bounded eraser-on-primitive behavior contract:

  • define how eraser activation is selected separately from graph-selection delete;
  • use primitive hit-testing evidence to remove or mark whiteboard primitives through a controlled edit lifecycle;
  • keep graph node/connection deletion behavior unchanged;
  • add focused tests proving eraser hit-testing, no accidental graph deletion, and cancel/finalize behavior;
  • update docs/Cookbook evidence only as needed for this behavior.

Out of scope

No broad eraser cursor visual redesign, no persisted whiteboard primitive state unless a prior persistence phase has landed, no GraphDocument schema changes, no renderer rewrite, no toolbar redesign beyond necessary activation projection, no retained API removal, and no full React Flow whiteboard parity claim.

Dependency / stacking

Depends on Phase 554 and must not merge before the authoring toolbar/Cookbook UX route lands.

Acceptance criteria

  • Eraser behavior targets whiteboard primitives through primitive hit-testing and does not use graph-selection deletion as a proxy.
  • Existing graph deletion commands remain unchanged and separately tested.
  • Focused tests prove eraser hit-testing, edit lifecycle, and no accidental graph node/connection deletion.
  • Verification includes focused eraser behavior tests, affected editor/Avalonia tests, relevant docs/Cookbook tests, and git diff --check.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions