Users can rotate any symbol manually — the pre-rotated _v variants
were redundant. Removed from SYMBOLS array, PRIORITY_TYPES,
SPACING_EXEMPT, RECT_CONVEYANCE, OVERLAY_IDS, OUTDATED_SIZES,
and all type-check functions.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Also add previous 30x14 default to migration table so existing
PEs at either old size get updated on load.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
When loading saved state, symbols with known outdated default sizes
(e.g., photoeye 56x20) are migrated to current defaults (30x14).
Only exact matches of old defaults are migrated — user-resized
symbols keep their custom dimensions.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Split collision.ts (707→549): extract distance.ts (pure math) and grid-snap.ts
- Fix curved conveyor/chute outline to match SVG viewBox geometry
- Draw curves programmatically with fixed 30px band width (no SVG stretching)
- Single resize handle for curves (was 2)
- Add .gitattributes for consistent line endings
- Make Vec2 type module-private
- Add mirror transform support in renderer
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>