Editor has no Bezier handles on smooth/symmetric nodes — user can only drag the node itself, no way to adjust the curve's control handles (Illustrator-style handles are the standard for vector editing) #251
Labels
No labels
blocked:commit-ready-failed
blocked:gate-fetch
blocked:gate-lint
blocked:gate-plan
blocked:gate-research
blocked:needs-attention
blocked:needs-decision
blocked:needs-human
blocked:no-changes
blocked:verify-failed
bug
deferred
feature-request
in-progress
needs-decompose
needs-triage
quickfix
security/medium
triage-approved
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Mark/Kimi_Agent_Brother_10_Digitizing_App#251
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Finding
src/components/editor/canvasRenderer.tsdoesn't referencehandleInorhandleOut.grep -n 'handleIn\|handleOut' src/components/editor/canvasRenderer.tsreturns 0.A user draws a smooth path:
Vector editors (Illustrator, Figma, Inkscape) all show two short lines from a smooth node — the "handles" — that the user can drag to adjust the curve. The handles determine how the curve enters and exits the node.
A user trying to make an S-curve with a smooth node:
This is a fundamental limitation of the editor's curve model. Smooth nodes should have handles.
Where
src/components/editor/canvasRenderer.ts(no handles)src/components/editor/types.ts(need to check if handleIn/handleOut fields exist)grep -n 'handleIn' src/returns 0Suggested fix shape
handleIn: Point | nullandhandleOut: Point | nullto thePathNodetype:In canvasRenderer, for smooth/symmetric nodes, draw the two handle lines from the node to the handleIn/handleOut points, with small handle circles at the ends.
In the editor's pointer handler, allow dragging a handle to update its position. The handle's mirror: for symmetric nodes, dragging handleIn also moves handleOut (mirrored). For smooth nodes, the two handles can be moved independently.
Keyboard handling: when a handle is selected (e.g., via clicking on it), Delete/Backspace removes it (turns the node into a corner).
EditorContextMenu (per #191): add "Reset Handles" item to recenter handles at default positions.
The math: a cubic Bezier between two smooth nodes has handles at both ends. The "smooth" type means the two handles are collinear with the node. The "symmetric" type means they're equal length and opposite.
Severity
Medium. Smooth nodes are limited without handle control. Users who want precise curves can't get them.
Discovered by
Gap analysis (2026-10-02) of editor curve editing.
Related