fix(graph): merge edge starts at child lane, polish node + curve styling#5
Merged
poolcamacho merged 1 commit intomasterfrom Apr 15, 2026
Merged
Conversation
…d curve styling Closes #3. The merge-parent edges were recorded with fromLane = parentLane (the lane we had just chosen for the parent), which meant the start-of-edge curve was drawn at the parent's future column instead of rising from the merge commit. Side branches looked disconnected from their origin, and merge-back lines appeared to start mid-air on the wrong side. fromLane now tracks the child commit's lane for every parent edge, so the curve visibly leaves the merge node and sweeps into the side lane. While in the file, split the Canvas body into edgePath() and drawNode() helpers, bump edge stroke to 2pt, bump regular node diameter to 9px, and change merge node styling to a hollow ring plus a small inner dot so joins stay readable over crossing lane lines.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #3.
Bug
CommitGraphBuilderwas recording each merge-parent edge withfromLane = parentLane, i.e. the lane the parent had just been pushed onto. Because the renderer draws the start half of an edge at the child's row, the curve was originating from the parent's future column instead of rising out of the merge commit. Visually, side branches looked disconnected from their origin and merge-back lines appeared to start in empty space.Fix
fromLanenow uses the child commit's lane for every parent edge (first parent and merges alike). The start curve sweeps from the merge node into whatever lane the side branch ends up on.Drive-by polish
While in the canvas:
edgePath(...)anddrawNode(...)helpers (was a single 60-line block).Verification
xcodebuild buildcleanswiftlint --strictclean