- Click-and-drag on the empty stage starts a layer marquee with
touch (not enclose) semantics — every unlocked layer whose bbox
overlaps the drag rect joins the selection. Tiny clicks still
deselect; shift adds to the existing selection on both clicks
and marquees. Polygon-vertex lasso stays available when a single
polygon is the active selection.
- Konva transformer now wraps every selected layer in one shared
bounding box (polygons fold in for mixed selections; vertex
handles + the vertex lasso suppress to avoid fighting the box).
rotateEnabled flips off on multi to skip the ambiguous shared-
pivot rotation. Drag of any selected node mirrors the delta onto
every sibling Konva node so the whole group travels together;
transformend persists each layer's final pose, not just the
anchor's.
- liveLayerPose became a per-id map (liveLayerPoses) so the
reactive shape configs don't snap non-focused siblings back to
their sampled pre-transform pose mid-gesture.
- Plain click on a member of an existing multi-selection no longer
collapses to single-select before the drag begins.
- Arrow-key nudge + Timeline + keyframe button + Properties panel
all fan out across the multi-selection: every editable layer
gets the value, kind-specific panel sections (text, polygon,
fill, stroke, blur, shadow, mask, button) collapse to leave just
Transform + Opacity, and the trash button labels with the
selection count.
- Click on empty stage with a polygon selected now deselects the
layer too instead of leaving the polygon stuck in the panel.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>