Links.AvoidNodes Inconsistent behavior


GoJS Version: 2.1.36 (Also noticed on 2.1.35)

This is my link config.

      relinkableFrom: true,
      relinkableTo: true,
      reshapable: true,
      resegmentable: true,
      routing: go.Link.AvoidsNodes,
      adjusting: go.Link.End,
      curve: go.Link.JumpOver,
      corner: 5,
      toShortLength: 4,
    // link segments
    new go.Binding('points').makeTwoWay(),
    // link path shape
    goMake(go.Shape, linkPathStyle()),
    // link arrowhead
    goMake(go.Shape, linkArrowheadStyle())

const linkPathStyle = () => {
  return { isPanelMain: true, strokeWidth: 1, stroke: sassVariables['sandmanColors-gray'] };
const linkArrowheadStyle = () => {
  return { toArrow: 'Standard', strokeWidth: 0, fill: sassVariables['sandmanColors-gray'] };

With this configuration of routing to avoid node overlap for links, this is the situation:

When I create a new link point that is overlapping a node, it allows me to do that. So I can have a state where link points can overlap another node. However, when I reload the diagram, the link will adjust itself to avoid the node and disregard the point that was causing a node overlap conflict.

The behavior we want is if one creates a new link point that was to cause this state, auto-adjusting should happen instantaneously so that the link actually never overlaps a node.

I have attached the before state where the link actually overlaps with the node. And the after state(after browser reload or diagram reinitialization) where the link auto-adjusts to avoid the node.
Desired behavior is “after” screenshot immediately as I create the conflicting link point.

If you remove the setting of Link.adjusting, does it work better for you?

Still the same after removing adjusting option. It adjusts after only after reload or moving any involved nodes.

So the link route crossing over a node is caused by the user’s manual reshaping or resegmenting the link route? And you want to have the LinkReshapingTool prevent that from happening?

That can be accomplished by using the SnapLinkReshapingTool extension,

You probably want to turn off SnapLinkReshapingTool.isGridSnapEnabled.