Library (src/tacticalgraphics/) — this is why the bump is minor, not patch.
renderTacticalGraphic's handle MultiPoint moved or shrank for eight
graphics. No API change, but a consumer drawing the handle set gets
different points.
- MobileDefense emits only p1; the "MD" amplifier stays at the p0 tail
- AirCorridor emits rail/circle tangent points so width can be dragged
- Breach, Penetration, Bypass, Canalize, Clear and Exploitation emitted
[offset, offsetRailEnd, p0] rather than the block family's
[offset, p0, p1], so their handle sat a half-width off the segment —
30.1% of the segment length off p1 for most, 5.4% for two of them
- Disrupt deliberately keeps its two extra arrow handles
Demo (src/components/) — not published.
- One-segment LineString graphics (maxPoints 2, 37 registry entries)
no longer draw a handle on p0. Matched on position, not index:
generators disagree on order, so dropping index 0 would have kept p0
for Breach and Penetration and eaten an arrow handle on Disrupt.
- Corridor width is draggable at any tangent point and round-trips
through the WIDTH amplifier; ACP labels grow with their circle.
- Screen, guard and cover: resize lengthens the arrows only, pinning
the line starts and labels; a zoom recomputes every size instead of
the padding alone; labels hold a constant on-screen size.
- Finishing a draw no longer zooms the map. The cause was Point draws
ending on click 1, not the 0 ms restore timer — dblclick is
delivered before a timer queued at mouseup. DoubleClickZoom now
returns on the next fresh press outside the drawend guard.
- MobileDefense drops Modify mode; its base line no longer shows.
README's description of handles as "a MultiPoint of vertices" is
corrected — some are shape/width points and some vertices are omitted.
Graphics table checked current at 171; sample gallery not recaptured
(the label-scale change is a no-op at the gallery's drawing zoom).