Editor's Path Properties has 'Stitch type' but the 'zigzag' type has no zigzag-amplitude input — user wanting to control how pronounced the zigzag is has no UI #391

Closed
opened 2026-10-04 04:02:19 +00:00 by Mark · 1 comment
Owner

Finding"

grep -rn 'zigzagAmplitude\|zigzagParams' src/components/editor/ returns 0. The editor has no zigzag parameters.

Zigzag has:

  • Amplitude (how pronounced the zigzag is, e.g., 2mm peak-to-peak)
  • Spacing (the distance between zigzag points)
  • Direction (vertical or horizontal)

A user with a zigzag path:

  • Wants the zigzag to be more or less pronounced
  • No UI to set this

The fix is zigzag parameters.

Where

  • Path Properties: src/components/editor/EditorRightPanel.tsx
  • No zigzag params: grep -rn 'zigzagAmplitude' src/components/editor/ returns 0

Suggested fix shape

  1. Type: add zigzagAmplitude: number and zigzagSpacing: number to the StitchPath type (when stitchType is 'zigzag').

  2. UI: when stitch type is 'zigzag', show:

{p.stitchType === 'zigzag' && (
  <>
    <NumberField
      label="Zigzag amplitude"
      value={p.zigzagAmplitude ?? 2.0}
      onChange={(v) => onUpdateZigzagAmplitude(p.id, v)}
      min={0.5}
      max={10}
      step={0.1}
      unit="mm"
    />
    <NumberField
      label="Zigzag spacing"
      value={p.zigzagSpacing ?? 1.0}
      onChange={(v) => onUpdateZigzagSpacing(p.id, v)}
      min={0.5}
      max={5}
      step={0.1}
      unit="mm"
    />
  </>
)}
  1. Visual: the canvas shows the zigzag pattern at the specified amplitude.

  2. Use cases:

  • Decorative edges
  • Applique tack-down
  • Quilt patterns
  1. History: single undoable action per parameter.

Severity**

Low. The user can use the default. Power users notice.

Discovered by

Gap analysis (2026-10-02) of editor path properties.

  • #314 (open) — Satin width. Same per-stitch-type parameters.
  • #373 (open) — Fill angle/spacing. Same family.
  • #390 (open) — Cross-stitch size. Same family.
  • Wilcom/Hatch have zigzag parameters. The editor's gap is the parallel.
## Finding" `grep -rn 'zigzagAmplitude\|zigzagParams' src/components/editor/` returns 0. The editor has no zigzag parameters. Zigzag has: - Amplitude (how pronounced the zigzag is, e.g., 2mm peak-to-peak) - Spacing (the distance between zigzag points) - Direction (vertical or horizontal) A user with a zigzag path: - Wants the zigzag to be more or less pronounced - No UI to set this The fix is zigzag parameters. ## Where - Path Properties: `src/components/editor/EditorRightPanel.tsx` - No zigzag params: `grep -rn 'zigzagAmplitude' src/components/editor/` returns 0 ## Suggested fix shape 1. **Type**: add `zigzagAmplitude: number` and `zigzagSpacing: number` to the StitchPath type (when stitchType is 'zigzag'). 2. **UI**: when stitch type is 'zigzag', show: ```tsx {p.stitchType === 'zigzag' && ( <> <NumberField label="Zigzag amplitude" value={p.zigzagAmplitude ?? 2.0} onChange={(v) => onUpdateZigzagAmplitude(p.id, v)} min={0.5} max={10} step={0.1} unit="mm" /> <NumberField label="Zigzag spacing" value={p.zigzagSpacing ?? 1.0} onChange={(v) => onUpdateZigzagSpacing(p.id, v)} min={0.5} max={5} step={0.1} unit="mm" /> </> )} ``` 3. **Visual**: the canvas shows the zigzag pattern at the specified amplitude. 4. **Use cases**: - Decorative edges - Applique tack-down - Quilt patterns 5. **History**: single undoable action per parameter. ## Severity** Low. The user can use the default. Power users notice. ## Discovered by Gap analysis (2026-10-02) of editor path properties. ## Related** - #314 (open) — Satin width. Same per-stitch-type parameters. - #373 (open) — Fill angle/spacing. Same family. - #390 (open) — Cross-stitch size. Same family. - Wilcom/Hatch have zigzag parameters. The editor's gap is the parallel.
Author
Owner

Closing as part of the per-stitch-type parameter family. See #314 (satin width) and the comment on #390 for the umbrella.

Closing as part of the per-stitch-type parameter family. See #314 (satin width) and the comment on #390 for the umbrella.
Mark closed this issue 2026-10-04 04:13:14 +00:00
Sign in to join this conversation.
No description provided.