The naive O(n²) neighbor pass died at 800 particles. A 64px-cell spatial hash got us to 2,500 at 3.1ms.
Three editor arcs moved polyline authoring onto the canvas: on-canvas drag, cross-layer ghosts and snap, and Catmull-Rom smoothing, at zero golden churn.
Splitting the MIT runtime out of a private monorepo to npm and a public mirror across four releases, including a 0.4.2 supply-chain fix.