This is still the draw path on main at 9c9ae43d80.
- Each pointer move copies all previous points, recomputes the bounds and rebuilds the SVG path.
- Building the path loops over every point.
- The bounds spread every coordinate into
Math.min/Math.max.
Together that makes a stroke quadratic and lets a very long stroke hit the engine's argument limit. That's from reading the code; I haven't measured it in Electron yet.
Would you want a PR limited to these changes, with the current smoothing, stored points, bounds and drawing flow unchanged?
- Append points in place.
- Keep the bounds incrementally.
- Append finished curve segments, so each update touches only the provisional tail instead of resubmitting the whole path.
Evidence for it would be:
- a Linux desktop Electron recording of the same long stroke before and after, with point count and frame gaps;
- a focused geometry test showing the curve and bounds match the current output;
- a test of a long stroke with no unbounded argument spreads.
#8270 was closed for missing Electron evidence, and its author later posted macOS captures. If you'd rather reconsider that PR, I can add Linux verification there instead of opening a competing one.
Drafted with Claude Code and Codex (GPT-6.1 Sol).