Sprint 10 backlog refinement/planning: re-confirmed the epic-4 "rotated
wrap/indicator" story after Sprint 9 shipped rotation composition as a
byproduct; renamed and re-sized it down to the indicator alone (3 pts).
Committed it alongside epic 6's long-deferred multi-select/align pair.
Batch 1 shipped: a live wrap/clip indicator (dashed-orange outline) on the
canvas and preview panel, backed by a new framework-free WrapClipDetector.
Mid-batch, live-build feedback surfaced two real gaps, fixed together:
- No way to delete a placed element or Address Control - added
CanvasElementEditor.RemoveSelected()/TemplateCanvasControl.
RemoveSelectedElement(), wired to Delete/Backspace and a toolbar button.
- The resize handle should control only box width, with font size set
elsewhere - removed the Sprint 8 uniform-font-scale handle behavior
entirely. HasBox now means "Width is set" alone; Height is independent
and optional (new HasHeightClip flag). DebenuPdfRenderer gained a
"Width alone, auto-height, no clip" render path using Debenu's
DrawWrappedText/GetWrappedText+DrawRotatedMultiLineText.
Verified via a real licensed end-to-end CLI render (unrotated and rotated
auto-height wrap, no clipping) and a reflection-driven built-form harness
(real mouse-driven resize drag, real Delete key, real canvas screenshot).
Test suite grew from 476/476 to 488/488.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>