Rotation affordance for the active selection. Replaces the legacy
"small dot above the AABB" handle with an invisible elliptical ring
that wraps the selection: the smallest ellipse containing the AABB,
minus the AABB itself. Hovering the ring sets the cursor (default
'grab') and drag-from-ring triggers rotateAction via the same
binding path the old point-handle used (id stays
'selection.rotation-handle').
The ring is target-local — under target rotation the ellipse rotates
with the AABB so the hoverable band always wraps the rendered shape.
Visibility: gated by chrome-caps' 'selection.rotation-handle' rule.
The paint option drives optional dev-time ring stroke; production
defaults to invisible (the cursor change is the only on-hover cue).
Rotation affordance for the active selection. Replaces the legacy "small dot above the AABB" handle with an invisible elliptical ring that wraps the selection: the smallest ellipse containing the AABB, minus the AABB itself. Hovering the ring sets the cursor (default
'grab') and drag-from-ring triggersrotateActionvia the same binding path the old point-handle used (id stays'selection.rotation-handle').The ring is target-local — under target rotation the ellipse rotates with the AABB so the hoverable band always wraps the rendered shape.
Visibility: gated by chrome-caps'
'selection.rotation-handle'rule. Thepaintoption drives optional dev-time ring stroke; production defaults to invisible (the cursor change is the only on-hover cue).