Skip to content

Bump the ktsu ImGui suite to 3.30.0 - #40

Merged
matt-edmondson merged 1 commit into
mainfrom
claude/practical-franklin-lt5o3e
Sep 9, 2026
Merged

Bump the ktsu ImGui suite to 3.30.0#40
matt-edmondson merged 1 commit into
mainfrom
claude/practical-franklin-lt5o3e

Conversation

@matt-edmondson

Copy link
Copy Markdown
Contributor

Picks up the tuned force-directed layout defaults from ktsu-dev/ImGuiApp#382, where six of the fifteen layout settings were measured against a benchmark corpus rather than inherited. Also carries a fix for a repulsion setting of zero producing NaN node positions rather than a merely crowded graph.

package 3.28.0 →
ktsu.ImGui.App 3.30.0
ktsu.ImGui.App.Testing 3.30.0
ktsu.ImGui.SyntaxHighlighting 3.30.0
ktsu.ImGui.Widgets 3.30.0
ktsu.ImGui.NodeEditor 3.30.0
ktsu.ForceDirectedLayout 3.30.0

What changes for the editor

The graph editor is the consumer that sees the difference. Measured on this repo's own sample function, settled for 300 frames:

3.28.0 3.30.0
bounding box 881 × 437 1148 × 219
centre (405, 271) (356, 287)

Half the height, and it reads left to right. That is the whole point of the upstream change — a chain used to fold into a coil under centre gravity, settling at about 53 degrees off horizontal with five starting arrangements in twelve reading left to right, and now settles at 0.1 degrees, twelve in twelve.

The one test that had to change

Editor_KeepsTheLayoutInsideTheView asserted per-node bounds of ±200 around a 1000 by 600 canvas. Trading height for width means the ends of a row now hang over the sides where before they did not, and node a lands at x −218 against a −200 bound.

That is the layout working, not drifting: the bounding box centre stays at (356, 287) against a canvas centre of (500, 300). Six nodes in a readable row simply do not fit 1000px, and the old bound was sized for the taller, narrower shape.

So the horizontal bound is widened, and the claim those bounds were only ever a proxy for is now asserted directly: the settled graph is still centred on the canvas. That is what the test exists to protect — a document dragged towards the origin takes its centre hundreds of units with it — and unlike a per-node bound it does not need revisiting every time the layout settles into a different shape.

Verified the new assertion fails when the expected centre is moved, rather than passing because everything passes.

Testing

dotnet restore, dotnet build -c Release (0 warnings, 0 errors), and the full suite: 373/373 passing. Confirmed the failure was caused by the bump and not pre-existing, by running the same test against 3.28.0 first.

🤖 Generated with Claude Code

https://claude.ai/code/session_018b2bn5CKSzpjRV4nxv3c3y


Generated by Claude Code

Picks up the tuned force-directed layout defaults, where six of the
fifteen layout settings were measured against a benchmark corpus rather
than inherited. Also carries a fix for a repulsion setting of zero
producing NaN node positions rather than a merely crowded graph.

The graph editor is the consumer that sees the difference, and it is
visible in the one test that had to change. The sample function used to
settle into a box 880 across and 440 tall; it now settles into one 1150
across and 220 tall. Trading that height for width is the whole point —
it is what makes a graph read left to right — but it means the ends of a
row now hang over the sides of a 1000 by 600 canvas where before they did
not, and Editor_KeepsTheLayoutInsideTheView was measuring per-node bounds
sized for the old shape.

Widened the horizontal bound, and added the claim those bounds were only
ever a proxy for: the settled graph is still centred on the canvas. That
is the thing the test exists to protect, since a document dragged towards
the origin takes its centre hundreds of units with it, and unlike a
per-node bound it does not need revisiting every time the layout settles
into a different shape. Verified it fails when the expected centre is
moved, rather than passing because everything passes.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018b2bn5CKSzpjRV4nxv3c3y
@sonarqubecloud

sonarqubecloud Bot commented Sep 9, 2026

Copy link
Copy Markdown

@matt-edmondson
matt-edmondson merged commit 5cb5518 into main Sep 9, 2026
12 checks passed
@matt-edmondson
matt-edmondson deleted the claude/practical-franklin-lt5o3e branch September 9, 2026 07:46
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