Editor has no 'randomize node positions slightly' / 'organic feel' tool — user wanting a hand-drawn look has to manually nudge each node, no automated jitter operation #287
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#287
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 'jitter\|organic\|wobble' src/components/editor/returns 0. The editor has no randomize/jitter operation.A user with a perfectly smooth circle:
The fix is a "Jitter" / "Organic" button that adds a small random offset to each node.
Where
src/components/editor/EditorRightPanel.tsx(per-row actions)grep -rn 'jitter' src/components/editor/returns 0src/components/editor/geometry.ts(where the algorithm would live)Suggested fix shape
geometry.ts:Modal: a small modal asking for the magnitude (0.1-3.0 mm) and a seed (for reproducibility).
History: single undoable action. The user can preview the jitter before applying.
Use cases: hand-drawn aesthetics, "sketch" styles, hand-embroidered looks.
Severity
Low. The user can manually nudge. Power users with custom aesthetics notice.
Discovered by
Gap analysis (2026-10-02) of editor path operations.
Related
Shipped fix(#287) at
e68da5con origin/main.What landed:
geometry.jitterNodes(nodes, magnitude, seed?) — pure function with a private Mulberry32 PRNG so the optional seed makes the operation reproducible. Preserves ids, types, and bezier handles. Clamps negative magnitudes to 0.
EditorRightPanel Path Jitter subsection (sibling to Simplify / Offset / Boolean). Magnitude input (0-5mm, default 0.5mm) + optional seed input. Live sample-offset preview peeks at the first nodes offset under the users current (magnitude, seed) for visual feedback. Apply button fires onJitterSelectedPath(magnitude, seed?).
Editor.handleJitterSelectedPath — multi-select fan-out matching the simplify / offset pattern. Single pushHistory covers the batch. Selection kept (not cleared) since node ids survive the jitter. Defensive gates: no-op when no selection, magnitude <= 0, magnitude NaN, or path has <2 nodes.
Tests: 10 new geometry.test.ts cases, 16 new panel cases, 7 new Editor-integration cases — 33 new tests total, all passing. pnpm tsc -b and pnpm lint clean.
Commit:
e68da5cfix(#287): jitter/organic-feel path operation in editor