Brandon Thomas and Claude Opus 5.5
6995e0c423
Never crash: interactive tools (tools)
...
Removes every production unwrap/expect/unreachable from the tools crate
and denies the panic lints there: ARAP mesh band/seed selection, liquify
dabs, the anchor-point tool's drag preview (an idle drag now does
nothing) and the type tool's typing session.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-04 14:51:53 -04:00
bflatastic and Claude Opus 5.5
ed308d61f7
M3.82: freeform point and line commands, Gradient tool and Gradient panel freeform section
...
paint.freeform.addPoint/setPoint/deletePoint/addLine/splitLine/selectPoint
and the paint.freeform.get query edit the freeform gradient behind the active
proxy (one undo step each; errors on other paints). The session keeps the
selected point. The Gradient tool on a freeform gradient selects and drags
points, adds points on the art (joined in Lines mode) and on lines, and
deletes the selected point. The Gradient panel shows the Draw toggle and the
selected point's colour, opacity, spread and Delete Point; the Color panel
recolours the selected point.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-05 01:21:39 +07:00
bflatastic and Claude Opus 5.5
0358c4df95
M3.35: gradient handles snap and honour Constrain Angle; double-clicking a tool button opens its options
...
Gradient tool handles (a drawn vector's start and end, the end handle and the moved start) snap to anchors, edges
and smart guides, with the guide overlays; Shift constrains to 45° steps from the Constrain Angle preference
(`ToolContext::constrain_angle`, `constrain_angle_from` in geom). Double-clicking a toolbar button runs the new UI
command `tool.options {tool}`: the Gradient tool opens the Gradient panel, the Eyedropper opens Eyedropper Options
(`eyedropper.setOptions {appearance?, transparency?}`, which `appearance.copyFrom` honours and its params override).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-04 23:18:34 +07:00
bflatastic
721bb483c3
Merge wp/D1
...
# Conflicts:
# crates/engine/src/cmd/appearance.rs
# crates/engine/src/cmd/gradient.rs
# crates/engine/src/cmd/paint.rs
# crates/engine/src/cmd/stroke.rs
# crates/engine/src/lib.rs
# crates/engine/src/tooling.rs
# crates/render/src/lib.rs
# crates/tools/src/lib.rs
# crates/tools/src/xform/gradient.rs
# crates/ui-egui/src/panels/stroke.rs
2026-10-04 22:01:05 +07:00
bflatastic and Claude Opus 5.5
3786cfaf36
M3.17: interactive gradient annotator — drag the start handle or the bar to move the gradient, the end handle to change length and angle, just past the end to rotate (Shift snaps to 45°); a bar click adds a stop, stops drag along the bar, off it to delete (never below two), Alt-drag copies, diamonds move midpoints; a click inside selected art applies the gradient from that point; double-clicking a stop opens a popover (Color/Swatches, Opacity, Location); the selected stop lives in the session (gradient.selectStop), shared by the tool, the Gradient and Color panels and agents, and takes Delete/Backspace and ←/→ ahead of their shortcuts (Tool::claims_key, also headless); stop chips draw as Overlay::Swatch with generated add/remove-stop cursors; the stop math moves into the color crate
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-04 17:39:36 +07:00
bflatastic and Claude Opus 5.5
aa1b592935
M3.16: the Gradient tool follows the active proxy and type objects — the tool and annotator edit the fill or the stroke by the focused proxy (ToolContext.fill_active); paint.setGradientGeom takes stroke? (default: the active proxy) and index? (one appearance item), sets type objects' vectors on their runs in text space and keeps the aspect the document shows; paint.setFill/setStroke vectors on type move into text space; aspect edits place run gradients on the layout bounds; run strokes (and type appearance strokes) fit the stroke-inflated box on screen and in PDF
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-04 17:16:12 +07:00
bflatastic and Claude Opus 5.5
018bed29db
M3.21: the Appearance panel's active item drives paint, stroke, gradient and transparency edits
...
Clicking a fill or stroke row runs appearance.setActiveItem; the toolbar,
Control bar and Properties proxies and the Color, Swatches, Gradient,
Stroke and Transparency panels show and edit that item, and the gradient
tool's annotator follows it. paint.setFill/setStroke, stroke.set/
setAdvanced, paint.editGradient/setGradientGeom and transparency.set take
item (omitted: the active item, null: the top one). Item edits and the
appearance.* commands address the selected objects' own stacks, so a
group's own fills no longer leak into its contents. Any selection change
clears the active item.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-04 12:28:05 +07:00
bflatastic and Claude Opus 5.5
61ddc1ce34
M3.14: lossless, validated gradient params — paint.setFill/setStroke, swatch.new and appearance.setItem keep kind (freeform too), midpoints, stop opacity, aspect, vector and swatch link; a shared parse_stops rejects fewer than two or malformed stops, clamps offsets and normalises 0..100 opacity; an aspect without a vector places the gradient on each object's (stroke-inflated) bounds; panels write gradients through one params writer
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-04 12:22:49 +07:00
bflatastic
cf775072be
M1.10: Rotate/Reflect/Scale/Shear reference point snaps — a click or Alt-click within 5 px of an anchor or object centre (of the selection or the object under the pointer) pivots exactly there, so Alt-clicking a corner flips/rotates from that corner; hovering shows the anchor/center label first; follows View → Snap to Point or Smart Guides (snap_to_point now reaches the tools)
2026-10-02 22:42:50 +07:00
bflatastic
8276d0a303
M2.10: Live Corners — drag a live rectangle's corner widget (Selection or Direct Selection) to round or sharpen all four corners as one undo step (object.setLiveShape preview, radius readout, follows rotated/scaled shapes, square to fully round); widgets drawn from the same geometry the tools hit-test, hidden on tiny shapes and with View → Hide Corner Widget; corner-radius cursor
2026-10-02 22:42:49 +07:00
Brandon Thomas and Claude Opus 5.5
8e735f1de9
M11.3: View → Snap to Pixel (drawing points and moved selections land on whole pixels)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-02 08:16:36 -04:00
Brandon Thomas and Claude Opus 5.5
71d43421f5
M2.6: Flare tool (centre drag, then click for the rings; click → Flare Tool Options; shape.flare builds centre/halo/rays/rings from radial gradients in Screen mode) and Reshape tool (path.reshape: grab a point of a selected path, neighbourhood follows with a smooth falloff)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-01 20:57:02 -04:00
Brandon Thomas and Claude Opus 5.5
4878f1c5dd
Rename DrawCraft → VectorCraft: crates (vectorcraft-*), apps, binaries, types, env vars, docs, examples (.vectorcraft); old .drawcraft files and preferences still load. Fix: text bounds exact after opening a file; selection no longer marks a document modified (dirty = content differs from the saved document). Screenshots and renders regenerated.
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-01 14:30:09 -04:00
Brandon Thomas
6dd0d2dcff
continued work; wip
2026-09-30 11:24:38 -04:00
Brandon Thomas and Claude Opus 5.5
f8136f1e35
Live Blends/Envelopes/Gradient Mesh, Shape Builder, Live Paint, Image Trace (drawcraft-trace), Recolor Artwork, Export for Screens, Actions panel, prefs persistence, real layer thumbnails; menus bound
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-09-30 11:02:16 -04:00
Brandon Thomas and Claude Opus 5.5
6d21d36d16
M2/M8/M9/M4.4: drawing + transform tools, live effects, PDF export/import, file/batch commands; UI restyled to measured Illustrator metrics (Medium Dark, categorized toolbar, hint bar, task bar, Layers)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-09-30 06:55:49 -04:00
Brandon Thomas and Claude Opus 5.5
db38f51046
Prepare module hooks for parallel tool/effect work
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-09-30 06:29:52 -04:00
Brandon Thomas and Claude Opus 5.5
874c0e6ca2
M2.8/M6.2/M7.2: smart guides + snapping, Type tool, Pathfinder/path/type commands, web build
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-09-30 06:28:59 -04:00
Brandon Thomas and Claude Opus 5.5
bfee80a22c
M0: workspace skeleton — geom, color, doc, render, text, pathops, svg, tools, engine
...
Engine-first Cargo workspace for DrawCraft (clean-room Illustrator):
- geom: anchor-based path model, shapes, hit testing, snapping
- color: colours, paints, gradients, swatches, blend modes, harmonies
- doc: persistent Arc document tree, appearance stacks, text model, selection
- render: vello_cpu renderer (appearance, gradients, clip groups, blend modes)
- text: font DB, harfrust shaping, point/area/path layout
- pathops: curve booleans (linesweeper), Pathfinder, offset, simplify
- svg: import (usvg) and export
- tools: selection/direct/pen/shape tools emitting commands
- engine: Session, history with interactions, ~110 commands
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-09-30 05:53:29 -04:00