Replaces tick marks with a solid stripe line following the wire path
at strokeWidth=1 (main wire is 3px), centered on the wire body.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replaces the helix-based stripe (which looked like a squiggling twisted
pair) with short perpendicular tick marks centered on the wire body,
spaced every 8px. This gives the characteristic slash/stripe appearance
of real striped wire, contained within the wire width.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Stripe color is now drawn as a single spiral wrapping around the solid
wire body (using the same quadratic-bezier helix as twisted pair) rather
than a dashed overlay. Pitch is fixed at 20px for stripes. Updated all
three rendering paths: _renderWire, _recomputeJumps, _redrawWiresFor.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Wire options (twisted pair, shielded, stripe, bundle) were not
persisting because the backend server had stale Python modules loaded
from before the WireUpdate schema was updated with these fields.
Pydantic silently ignored unrecognized fields, so only pre-existing
fields like color_stripe were saved.
Frontend fixes applied alongside the schema work:
- _patchWire now shows visible error on save failure instead of
swallowing errors and falsely flashing Saved
- Bundle dropdown rebuild is guarded with _updatingBundleDropdown flag
to prevent spurious change events from triggering unwanted PATCHes
- Enable uvicorn reload=True so server auto-restarts on code changes,
preventing stale module issues in the future
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>