From c2731044739348ff84084f0ecad0bcb2598f1be4 Mon Sep 17 00:00:00 2001 From: master <> Date: Thu, 2 Apr 2026 16:01:17 +0300 Subject: [PATCH] Tighter corner radius clamping (len/3 instead of len/2.5) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reduces S-curve artifacts on short intermediate segments. The previous 2.5 divisor allowed curves from adjacent bends to overlap on 24px segments. Divisor 3 gives cleaner curves on short segments. Remaining visible kink on edge/33 is from the routing's 19px+24px dogleg near End — needs routing-level fix, not rendering. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../WorkflowRenderSvgRenderer.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Workflow/__Libraries/StellaOps.Workflow.Renderer.Svg/WorkflowRenderSvgRenderer.cs b/src/Workflow/__Libraries/StellaOps.Workflow.Renderer.Svg/WorkflowRenderSvgRenderer.cs index 37b690960..812e3558e 100644 --- a/src/Workflow/__Libraries/StellaOps.Workflow.Renderer.Svg/WorkflowRenderSvgRenderer.cs +++ b/src/Workflow/__Libraries/StellaOps.Workflow.Renderer.Svg/WorkflowRenderSvgRenderer.cs @@ -2041,6 +2041,9 @@ public sealed class WorkflowRenderSvgRenderer // When removing a jog, snap the next point to the previous point's // axis so we get a clean L-shape instead of a diagonal. var mutablePoints = points.ToList(); + // No debug needed — the S-curve comes from the corner radius + // on short intermediate segments, not from tiny jog points. + var cleaned = new List { mutablePoints[0] }; for (var i = 1; i < mutablePoints.Count; i++) { @@ -2085,7 +2088,7 @@ public sealed class WorkflowRenderSvgRenderer var dyOut = next.Y - curr.Y; var lenOut = Math.Sqrt((dxOut * dxOut) + (dyOut * dyOut)); - var r = Math.Min(radius, Math.Min(lenIn / 2.5d, lenOut / 2.5d)); + var r = Math.Min(radius, Math.Min(lenIn / 3d, lenOut / 3d)); if (r < 0.5d || lenIn < 1d || lenOut < 1d) { builder.Append($" L {Format(curr.X + offsetX)},{Format(curr.Y + offsetY)}");