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>
Sprint 8: completed product-owner review and scrum-master retrospective for
whole-Address-Control rotation (13/13 points, sprint goal met in full).
Same-day, outside-ceremony fixes/features:
- Fixed a canvas drag/rotate smoothness bug for dynamic/mixed elements (an
expensive properties-panel refresh was running on every mouse-move tick).
- Added a font-size resize handle for standalone text elements.
- Gathered requirements for adjustable element width/height, resolving the
long-open "Warn on text overflow before render" product question.
Sprint 9: shipped "Add an adjustable width and height with text wrapping to
static and dynamic text elements" (13/13 points). Static/dynamic text elements
can now wrap within a set width and clip content exceeding a set height, using
Debenu's native DrawTextBox/DrawRotatedTextBox (confirmed via a real licensed
vendor-DLL probe) for the CLI render, and GDI+'s native rectangle-bounded
drawing for a design-time canvas/preview approximation. The existing font-size
resize handle became context-sensitive (box mode vs. font-scale mode) rather
than needing a second handle. Completed sprint review and retrospective.
Test suite grew from 433/433 to 476/476 across both sessions of work.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Adds multi-line address control rendering (CLI + designer), CSV record
navigation, live template preview, grid snapping, and rotation handles,
with corresponding sprint artifacts and backlog updates.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Completes the CSV Integration and Field Mapping epic by collapsing blank
optional address lines (with a visual distinction between blank data and a
mapping error), and delivers text/field rotation end-to-end: a free-form
angle property that rotates about the element's bounding-box center
(verified against the real Debenu DLL with a pixel-centroid regression
test), plus an interactive drag-to-rotate canvas handle. Closes out Sprint 4
with review and retrospective notes, including resolving the prior
retrospective's product-owner review-independence watch item. Also captures
requirements (not yet sized) for a new composite Address Control epic.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Mitigates the high-volume render throughput regression via Debenu document
batching + merge (100k-record benchmark: 315s, ~47.5% under the 10-minute
target), delivers the first CSV field-mapping slice (load headers, bind and
rebind dynamic fields), and closes out Sprint 3 with review and retrospective
notes. Also refines and sizes two new backlog stories for text/field element
rotation, requested mid-sprint.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Delivers the full Template Designer GUI Foundation epic (canvas dimensions,
text placement, properties panel, save/reopen XML templates) plus the
overdue high-volume render benchmark spike, all verified against the actual
built .exe per Sprint 1's DoD edit. The benchmark found the render path
misses the 100k-record/10-minute target by 5x-10x+ (code/BENCHMARK.md),
logged as a new high-priority backlog story and technical debt entry for
Sprint 3. Sprint Review confirmed all 5 stories against acceptance criteria;
Retrospective confirmed full follow-through on all four Sprint 1 actions
with no new kit-level changes needed.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Sprint Review (product-owner): verified all 5 committed stories against
acceptance criteria (goal met, two tracked caveats), updated the backlog
with verification notes and two new follow-up stories, and flagged a
process-improvement item.
Sprint Retrospective (scrum-master): named team-level strengths to keep
(dependency-ordered batch swarming; leave-it-better-than-you-found-it
and honest gap reporting), checked for anti-patterns (none found beyond
one named near-miss), and proposed a Definition of Done edit requiring
verification against the actual built artifact for any story that
changes launch/packaging/config-resolution behavior — directly
addressing how the license-key bug reached "Done" undetected.
User approved the proposed edit; applied to
templates/definition_of_done.md and marked Applied in
logs/process_improvement_log.md.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Implements the remaining committed Sprint 1 stories (Batches 3-5):
- CLI emits line-oriented PROGRESS events (startup/render/complete/failure)
on stdout, throttled to >=1/sec, alongside the existing stderr/exit-code
contract.
- New EnvelopeRenderer.Desktop WinForms app lets an operator pick template/
CSV/output paths and launch a render without blocking the UI.
- Desktop app streams and parses the CLI's progress events live, shows
active status, and displays a completion summary with elapsed time and
totals.
Verified end-to-end against the real 392-row sample CSV (real success and
real forced-failure runs); 106/106 tests passing. Sprint 1's goal is met
and its backlog is fully Done; state.md and backlog/sprints/sprint-1.md
are updated to hand off to Sprint Review.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>