docs: log the Illustrator parity arc + follow-ups

PEN_TOOL_FEATURE.md gets a 2026-06-02 status block documenting
everything that landed on top of Phase D — Direct Selection split,
auto-add/auto-delete, click-vs-drag convert, Alt-click curved ↔
pointed, multi-anchor select / marquee / arrow nudge, drag-segment
bow, continue-endpoint, spacebar reposition, Alt mid-draw, handle
break, Cmd+J / Cmd+Alt+J, Path Actions side panel — plus the
adjacent design-tool features that shipped in the same arc
(Eyedropper, Align & distribute, Free Transform rotation,
Pathfinder, marquee box-select, dive-into-edit on dbl-click).

TODO.md gets a "Design-tool follow-ups" section listing the gaps:
Smart Guides, Gradients + shadows, Scissors / Outline text /
Command palette, Flip H / V (needs renderer scaleX/scaleY),
Pathfinder rotation support, pixel-art frame timeline.
This commit is contained in:
thePR0M3TH3AN committed 2026-06-02 09:53:06 -04:00
1 parent 404a6964a1
commit 5b0eec1a1a
2 files changed
+100 -1

No files matched your search

+23
View File
@@ -8,6 +8,29 @@ Running list of deferred work. Detailed specs for the larger items live in
_(Empty — see "Shipped (recent)" below for the items that just
landed. Drop new items in here as they come up.)_
## Design-tool follow-ups (Illustrator parity arc)
The pen / select / pathfinder bundle (`docs/PEN_TOOL_FEATURE.md`)
landed with these intentional gaps:
- **Smart Guides.** Snap-to-anchor and snap-to-edge alignment with
on-canvas distance hints while dragging. Biggest "feels professional"
upgrade still on the table; deserves its own arc.
- **Gradients + drop shadows.** Linear / radial gradient fills and a
basic drop-shadow / glow effect on the appearance panel. Mostly an
SVG `<defs>` + `filter` addition.
- **Scissors (C) + Outline text + Command palette (Cmd+K).** Three
small wins: split a path at a click, convert text to editable pen
paths (font-independent for Nostr export), searchable action list.
- **Flip H / V.** Prototyped during the Align panel arc but pulled
out — needs the renderer to honor per-layer scaleX / scaleY.
- **Pathfinder limitations to lift.** Today: refuses rotated shapes,
flattens curves, only the first polygon's outer ring stays
pen-editable post-op. Rotation support is the most user-facing of
these; curve fidelity would need a Bézier-aware clipper.
- **Pixel-art frame timeline.** Onion skin + frame list + FPS control.
Largest open arc; transformative if pixel art is a focus.
## QR code layer — remaining phases
Phases A and B shipped (the `qr` layer type: data, error-correction level,
+77 -1
View File
@@ -48,16 +48,92 @@ tool-mode system with flanking toolbars to host it.
arcs, abs & rel). *Not convertible:* multi-element SVGs and compound
(multi-subpath) paths — the panel shows a hint instead.
### Implementation status — 2026-06-02 (Illustrator parity arc)
A subsequent arc brought the pen / select tools much closer to
Adobe Illustrator's feel. The tool-mode system from Phases A–E is
unchanged; the new work plugs into it:
- **Direct Selection (A)** as a separate tool from Select (V),
matching Illustrator's V/A split. Cmd / Ctrl held from any
non-pen tool temporarily flips the effective tool to Direct
Selection so a quick anchor tweak doesn't require dropping the
current tool.
- **Hover cursor cues**: − over an anchor in Pen mode (auto-delete),
+ over a segment (auto-add), the "continue" pointer over an
endpoint of an open path, grab over a segment in Direct Select
(bow the curve).
- **Pen auto-add / auto-delete**: clicking a segment with no
modifier inserts an anchor at the click point; clicking an
existing anchor deletes it. Drag (instead of click) on an anchor
converts it on the fly — pulls symmetric handles out. Alt-drag
pulls an asymmetric corner.
- **Convert anchor** (Alt-click in Pen or Direct Select): flips
curved ↔ pointed completely. Curved → pointed drops both handles
for a real sharp corner; pointed → curved grows symmetric handles
along the chord through the anchor (1/3 of chord length).
- **Shift constrains** pen segments to 0 / 45 / 90° while drawing
and previewing the next click.
- **Multi-anchor selection**: Shift-click anchors to add / remove
them from a selection Set. Drag a marquee inside the editable
path to box-select anchors. Arrow keys nudge every selected
anchor (1 px, 10 px with Shift) instead of the whole layer.
Backspace deletes the whole anchor selection at once.
- **Drag a segment** to bow the curve (Direct Select). Equal-split
delta across the two inner control points so the cursor tracks
the grabbed point; smooth anchors on either end keep their
handles mirrored.
- **Continue an open path**: with the Pen tool, click the start /
end anchor of an open path to resume drawing from there. The
source layer is hidden during the draft; on commit (Enter / close
/ Escape) the new path takes its place, preserving z-order,
target, fill and stroke.
- **Spacebar reposition** during pen create-drag: slides the anchor
itself instead of growing handles; release Space to resume
handle-pulling from the new position.
- **Alt mid-draw** during pen create-drag: only the outgoing handle
is pulled, incoming side stays at the anchor — asymmetric corner
for tangent-then-corner transitions without lifting the pen.
- **Alt-drag handle** in Direct Selection: breaks symmetry, the
opposite handle stays put.
- **Path keyboard ops**: Cmd+J closes an open path when both
endpoints are selected; Cmd+Alt+J averages selected anchors to
their centroid.
- **Path Actions side panel**: when Pen or Direct Selection is
active and a pen path is selected, a sidebar block surfaces the
same ops as buttons — Pointed corner, Curved smooth, Delete
anchor, Average, Join endpoints, Close / Open path, Reverse
direction. Buttons auto-disable when the action would be a no-op.
### Non-goals (v1)
- A raster paint layer (true pixel buffers). Explicitly out of scope — the
app's design-as-JSON model and Nostr-friendliness depend on storing
instructions, not bitmaps. A `paint` layer type could be a separate future
feature; this doc does not pursue it.
- Pressure / tilt / velocity-sensitive brushes.
- Boolean path operations (union / subtract / intersect).
- Moving the existing shape-primitive menu into the left toolbar. The
sidebar "+ Shape" menu stays; pen/pencil are additive.
### Adjacent design-tool features (shipped in the same arc)
- **Eyedropper (I)** — native EyeDropper picker, samples any pixel
on screen to the selected layer's fill (or stroke with Shift).
- **Align & distribute panel** — six align ops + horizontal /
vertical distribute on the layer selection (uses the selection
bbox for 2+, target bounds for a single layer).
- **Free Transform rotation handle** above both the single-layer
selection bbox and the multi-layer selection box; Shift snaps to
15°. Multi-layer rotates each layer's centre around the bbox
centre AND advances each layer's own rotation.
- **Pathfinder** — Unite / Subtract / Intersect / Exclude on 2+
selected shape layers, backed by `vendor/polygon-clipping.min.js`.
Curves are flattened to polygon approximations. Rotated layers
are not supported yet.
- **Marquee box-select** on empty canvas with the Select (V) tool —
marching-ants rectangle, Shift adds to the existing selection.
- **Double-click dive-into-edit**: a vector shape under the Select
tool flips to Direct Selection on dbl-click and auto-converts
primitives to editable pen paths so anchors show immediately.
---
## Why this fits the repo