GSOC 2026: System for Nodes Displaying Gizmos to Update Their Parameters #4178
Ayush2k02
started this conversation in
Student Project Reports
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
About
My name is Ayush Amawate (@Ayush2k02) and I worked on the "System for Nodes Displaying Gizmos to Update Their Parameters" project as a Graphite GSoC '26 contributor.
Synopsis
Gizmos are the draggable handles you see on a selected shape the dial that sets a polygon's side count, the points that stretch a star, the edges that add rows to a grid.
Only six shapes had them, and each one needed its own hand-written file of 200–400 lines. That made handles expensive, so anything that wasn't one of those six shapes simply went without.
This project replaced that with a table any node can add itself to. A node now says "this value of mine should have a handle, and it's a length" in about eight lines, and shared code builds the handle from that.
Final Report
What shipped
Against the original deliverables
Being straight about two things. The total line count went up by roughly 800, not down — the shape-specific part shrank by about a third, but the branch also adds a new shape, a third type of handle, and documentation. And the Blur and Transform handles are written and unit-tested but I haven't sat down and used them yet, which is why that PR is still a draft. Nearly every bug I found in this project was found by using the editor, not by the tests passing.
What I'd do next
A bug worth mentioning, because it isn't fixable by tuning. A circle's radius can be grabbed anywhere on its edge, and there is no rotational rule that behaves well everywhere: follow the direction you grabbed from and the handle goes dead at the top and bottom; use the raw distance instead and it lurches, because near the tangent a pixel of jitter flips the direction. The two things you'd want dragging up and down at the side doing nothing, dragging sideways at the top doing something — are the same motion at different angles. It now just reads left-right: right grows, left shrinks, wherever you grabbed it.
Demos
Screen.Recording.2026-08-27.at.3.05.54.AM.mov
Heart dragging the notch, then the size
1-polygon-sides-dial.mp4
Polygon the dial, 5 → 8 → 4 sides
2-star-radius-snapping-and-points-dial.mp4
Star dragging a point, with the snap marks where the points line up
3-circle-radius.mp4
Circle grabbing the edge from the top and from the bottom
6-spiral-turns.mp4
Spiral winding it from 6.72 to 10.37 turns
5-arc-sweep-endpoints.mp4
Arc sweeping an end round toward a full circle
7-grid-rows.mp4
Grid dragging the top edge to add rows
Thank you to my mentors and the entire Graphite team for their guidance, thorough code reviews, and support throughout this Google Summer of Code!
All reactions