crop.drag gains an optional keepRatio param that constrains the drag to the frame's current aspect even when the lock is off. The crop panel sends it while Shift is held. Closes #614 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>