Editor's Path Properties has 'Path length' but no 'path direction' visualization — user with a closed circular path can't tell which way the path goes (clockwise vs counter-clockwise) without zooming in #380
Labels
No labels
blocked:commit-ready-failed
blocked:gate-fetch
blocked:gate-lint
blocked:gate-plan
blocked:gate-research
blocked:needs-attention
blocked:needs-decision
blocked:needs-human
blocked:no-changes
blocked:verify-failed
bug
deferred
feature-request
in-progress
needs-decompose
needs-triage
quickfix
security/medium
triage-approved
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Mark/Kimi_Agent_Brother_10_Digitizing_App#380
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Finding
grep -rn 'pathDirection\|directionVisual' src/components/editor/returns 0. The editor has no direction visualization.This is similar to #329 but the implementation might differ.
A user with a closed path:
The fix is a small arrow on the path's first segment.
Where
src/components/editor/canvasRenderer.ts(where the path is drawn)grep -rn 'pathDirection' src/components/editor/returns 0Suggested fix shape
Settings: a "Show path direction" toggle (per #329).
Use cases:
Severity**
Low. The user can infer visually. Power users notice.
Discovered by
Gap analysis (2026-10-02) of editor path visualization.
Related**
Closing as duplicate of #329 — both filed as 'path direction visualization.' Same fix (a small arrow on the first segment of closed paths). Keeping #329 as the umbrella.
Closed by feat(#380) — commit
33d3d14on origin/main. AddsdrawClosedPathDirectionArrow(canvasRenderer.ts) and wires it unconditionally into EditorCanvas.tsx, sitting on top of #329's per-segment overlay.Visible behavior: every closed path now shows a single amber arrow on its first segment (
nodes[0]→nodes[1]), pointing along the direction of travel — so a user can read CW vs CCW at a glance with no toggle to discover. Open paths are unaffected.Visual stack (top → bottom of foreground): centerline → node handles → snap indicator → #380 amber arrow → #329 slate arrows → satin band. The amber
rgba(180,83,9,0.95)and the larger 10×4px arrowhead read as a directional cue distinct from #329's slate text-pill arrows so a power user with both overlays on can tell them apart.Tests: 8 new unit cases in
canvasRenderer.test.tspin the per-element contract (one arrow per closed path, zero on open, visible+node-count guards, empty-list + no-closed-path early-outs, rotate count, fillStyle); 3 new wiring cases inEditorCanvas.test.tsxpin the always-on contract (fires with showDirection on, off, and omitted). Total: 11 new cases.Back-compat:
path.closedalready exists on StitchPath (since #209) — no new persisted fields. The marker is rendered on every visible closed path regardless ofsnapSettings.showDirection, so designs persisted before #329 (which omitshowDirection) get the marker too.