Skip to content

Conversation

@milanofthe
Copy link
Member

Features

  • A pathfinding* with turn penalties for clean orthogonal paths
  • Sparse grid - O(obstacles) memory, unbounded canvas
  • User waypoints - press \ on selected edge or drag segment midpoints
  • Hybrid routing - A* between waypoints for user control
  • Path overlap avoidance - parallel wires offset automatically
  • Rounded corners - 4px radius at turns
  • Incremental updates - only affected routes recalculate during drag

Performance

  • Spatial hash indexing - O(bucket) obstacle lookups vs O(n)
  • Port info memoization during batch operations
  • Route input hashing - skip unchanged routes
  • Incremental grid updates - O(1) per node move

Bug Fixes

  • Routes recalculate on node rotation and port changes
  • Paste now snaps to grid
  • Waypoint drag works in subsystems
  • Edge selection preserved on connection updates
  • Routing context rebuilds on subsystem navigation

UI Polish

  • Run button expands to show initialization status
  • Node width calculation uses larger character estimates
  • Waypoint markers visible only when edge selected

…ing, fix memory leaks, extract getUserWaypoints helper
@milanofthe milanofthe merged commit 58d3713 into main Jan 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants