Commit Graph
2511 Commits
Author SHA1 Message Date
NetterSilverandClaude Haiku 5.5 05017111ba Filter control characters in SVG export title and description
Found while testing crates/svg/src/export.rs:138 and :143

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-20 03:15:47 +07:00
bflatastic a5ec99d515 Effects: Graphic Pen's params doc names no vendor, as cargo xtask brands asks (#2967) 2026-10-20 03:14:27 +07:00
bflatastic 92c1657334 i18n: Chalk & Charcoal, Graphic Pen, Reticulation and Plastic Wrap in every catalog that has the Sketch filters (#2972, #2967, #2976, #3034)
Also cargo fmt over the four filters.
2026-10-20 03:14:27 +07:00
nrq6993-a11y a2c764d312 G2: Effect › Artistic › Plastic Wrap raster filter
Squashed from #3034 onto the Sketch filters; the Artistic label test lists it.
2026-10-20 02:55:29 +07:00
nrq6993-a11y 917aa29dd5 G2: Effect › Sketch › Reticulation raster filter
Squashed from #2976 onto Chalk & Charcoal and Graphic Pen.
2026-10-20 02:54:06 +07:00
nrq6993-a11y 11adb72d44 G2: Effect › Sketch › Graphic Pen raster filter
Squashed from #2967 onto #2972 (Chalk & Charcoal): both filters in the effect catalog, PIXEL_EFFECTS and the Sketch label and filter tests.
2026-10-20 02:52:33 +07:00
nrq6993-a11yandCursor 52380d683d G2: Chalk & Charcoal: fix clippy on luma type
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-20 02:50:13 +07:00
nrq6993-a11yandCursor 1f2007eb46 G2: Effect › Sketch › Chalk & Charcoal raster filter
Adds sketch.chalkCharcoal to the pixel-effect pipeline so Effect › Sketch exposes chalk highlights and charcoal strokes with public-doc-style parameters and tests.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-20 02:50:13 +07:00
nrq6993-a11yandCursor cfea906681 G1: Mesh point drags show dX/dY in measurement labels
Honor Measurement Labels while moving gradient-mesh and mesh-envelope
points with the Mesh tool or Direct Selection.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-20 02:48:08 +07:00
texjer 30646c83bd Home: Recent Files rows light up and click as one; Home scrolls
Each Recent Files row (history icon, name, folder) is now a single
button that paints the hover token behind it, shows a pointing hand and
keeps the full path as its tooltip; a click anywhere on it opens the
file. Before, only the frameless file name reacted, with no hover
feedback.

The Home screen's column now sits in a vertical scroll area, so a small
window or a long Recent Files list no longer hides the presets and
Community links below the fold. Widgets scrolled out of view are
clipped and take no pointer.
2026-10-20 02:37:04 +07:00
nrq6993-a11yandCursor 361ebd29bf G1: Free Distort corner drags show dX/dY measurement labels
Honor Measurement Labels during envelope-style corner drags on the Free Transform tool, matching the Move handle readout.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-20 02:37:03 +07:00
NetterSilverandClaude Haiku 5.5 39daf465f5 Keep an island inside a hole a separate Shape Builder region
Fixes #3132

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 02:37:03 +07:00
nrq6993-a11yandCursor 223bfd29c2 ui-egui: satisfy clippy on warp id checks in effect dialog
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-20 02:23:34 +07:00
nrq6993-a11yandCursor 1c1fd57b33 G1: Warp Options remembers last confirmed slider values
New warp effect dialogs seed bend, distortion and orientation from the
previous OK instead of catalog defaults; editing an applied warp is unchanged.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-20 02:23:34 +07:00
nrq6993-a11yandCursor 12f7d41c38 G4: Properties panel shows Variable Font axes for selected type
Reuse the Character panel's Variable Font popover in Properties so axis
sliders are available without opening Character.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-20 02:23:34 +07:00
bflatastic 85163a7c82 Tests: the Snap to Glyph test says what it checks (#3124) 2026-10-20 02:23:34 +07:00
bflatastic 88a444ef7b fmt (#3124) 2026-10-20 02:23:34 +07:00
nrq6993-a11yandCursor 0c62d9c02c G4: View › Snap to Glyph snaps new type to live-text guides
Wire the View menu toggle and add glyph baselines and bounds to drawing snap targets so point type placement lines up with existing text when Smart Guides are on.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-20 02:23:34 +07:00
bflatastic cb229ac08c fmt (#3121) 2026-10-20 02:23:33 +07:00
nrq6993-a11yandCursor 88bd9bcd9e G4: Touch Type drag test treats omitted zero dx as no kerning
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-20 02:23:33 +07:00
nrq6993-a11yandCursor 222ec72e28 G4: Touch Type arrow keys nudge the selected character
Keyboard increment (Shift ×10) moves the active glyph through text.touchType, with vertical type remapping like the Type tool.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-20 02:23:33 +07:00
bflatastic b8f9c403a7 Measure: with Measurement Labels off the measured line still draws, only its readout goes (#3128) 2026-10-20 02:23:33 +07:00
nrq6993-a11yandCursor 6ef9f2dd93 G1: Measure tool honors Measurement Labels preference
Hide the preview line and readout when Smart Guides › Measurement Labels is off; options still report the last drag.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-20 02:23:33 +07:00
nrq6993-a11yandCursor fd53416de3 G1: honor Show Measurement Labels on pie, corners, width, and tiling readouts
Tools that showed distance or angle overlays during drags now respect the
Units preference, consistent with shape and selection tools.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-20 02:23:33 +07:00
bflatastic d507a73d09 fmt (#3114) 2026-10-20 02:23:33 +07:00
nrq6993-a11yandCursor 6d713de980 G1: Crop Image honors Smart Guides measurement labels.
Gate the crop size readout on the preference and show it at the pointer while dragging the box.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-20 02:23:33 +07:00
bflatastic 9435c5079d fmt (#3099) 2026-10-20 02:23:33 +07:00
nrq6993-a11yandCursor 1eac4f5b79 G1: Graph tools show W/H measurement labels while dragging plot area
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-20 02:23:33 +07:00
nrq6993-a11yandCursor 99aa4e6a7c G1: hide bounding box while dragging type-on-path brackets.
Match corner-radius and pie-widget drags: the Selection tool reports a transforming drag so the canvas drops the sharp selection box during bracket moves.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-20 02:23:33 +07:00
bflatastic 0ee6b1ac68 fmt (#3065) 2026-10-20 02:23:33 +07:00
nrq6993-a11yandCursor a2aac6bead G11: live Pen bezier preview while dragging on Wayland (#834)
Tool canvas drags no longer require a non-zero pointer delta, so smooth-point previews update as the pointer moves when the compositor coalesces motion events.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-20 02:23:33 +07:00
bflatastic b21b3edb6c fmt (#3064) 2026-10-20 02:23:33 +07:00
nrq6993-a11yandCursor 8f7486b90f G9: .ai art styles read Adobe Feather as live effects
Plain art-style import maps Adobe Feather dictionaries to stylize.feather so styled objects stay editable on open.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-20 02:21:41 +07:00
bflatastic a52198cefa Appearance: image fills and strokes draw the shape Convert to Shape or Outline Object gives them
Squashed from #2500 (its merges of main dropped).
2026-10-20 02:06:54 +07:00
dotCooCoo 926ca62952 Simplify: Object › Path › Simplify opens a slider with Auto-Simplify and More Options
Squashed from #2555 (its merges of main dropped).
2026-10-20 02:06:54 +07:00
bflatastic d3ee9646de i18n: the SVG one-artboard warning in every complete catalog and Bulgarian (#2994) 2026-10-20 02:06:54 +07:00
Higgs32584 a446d76637 fix changes 2026-10-20 02:05:02 +07:00
Michael Higgins 81cf399bfa Refactor SVG options and error handling 2026-10-20 02:05:02 +07:00
Michael Higgins d8c20c8eb4 Update error message for artboard preservation 2026-10-20 02:05:02 +07:00
Michael Higginsandcoderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> acd8ca097d Update crates/engine/src/cmd/fileio/svg.rs
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2026-10-20 02:05:01 +07:00
Higgs32584andClaude Opus 5.5 f9e559156f Save: decide the lost-artboards warning in the SVG handler
Move the Preserve Editing check out of save.rs into svg.rs, where it
reads the options through `plan` as the encoder does; SaveJob::encode
still puts the warning first. Review follow-up on #2994.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 02:05:01 +07:00
Higgs32584andClaude Opus 5.5 c2a605ce8e Save: warn when SVG keeps only one of several artboards
A document with more than one artboard saved as SVG/SVGZ without
Preserve Editing Capabilities is written as one artboard and reopens
with one, so the others were lost without a word. The save now says so
(first, since the status bar shows only the first warning) and names the
two ways to keep them all.

Refs storytold/vectorcraft#2091

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 02:05:01 +07:00
Hamza f106f32af4 A CMYK JPEG is not labelled JFIF
A CMYK JPEG came out with JFIF's APP0 segment at its head and four components
in the frame:

  APP0/JFIF  APP14/Adobe  APP2[ICC_PROFILE 1/4 … 4/4]  SOF0: 4 components

JFIF describes one- and three-component images, greyscale and YCbCr, so an APP0
segment in front of a four-component frame says two different things about the
file's colours: a reader that trusts JFIF decodes nonsense, and one that checks
refuses the file. Adobe's own CMYK JPEGs carry the APP14 marker the encoder
already writes, and no JFIF. `jpeg-encoder` writes JFIF unconditionally, so the
segment is replaced here.

The resolution JFIF carried moves to an EXIF APP1 segment -- `XResolution`,
`YResolution` and `ResolutionUnit` -- which is where `cmd::fileio::ppi` already
looks when a file has no JFIF, so nothing is lost; with no resolution asked for
the segment is simply dropped. RGB and greyscale files keep JFIF, which is what
it is for.

Found while looking at #3084, whose default RGB exports are valid here; this is
the file that is not.
2026-10-20 02:05:01 +07:00
NetterSilverandClaude Haiku 5.5 ec4975f237 Fix intersects_rect ignoring paths crossing zero-width/height rects
Found while testing crates/geom/src/hit.rs:116

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-20 02:05:00 +07:00
dotCooCoo cb631ae635 Tests: Graph Data's full-size sheet test counts the cells it draws instead of timing them
a_full_size_sheet_draws_only_what_is_in_view timed three frames of a
10,001 × 257 sheet and failed when they took 20 s or more, as they did
on a FreeBSD CI runner. The test now counts the buttons in the
screen-reader tree of the window. A graph of 40 categories and 40
series, whose 42 × 42 sheet is larger than the view both ways, draws
fewer buttons than its 41 × 41 filled cells, and a full-size sheet
draws the same number.
2026-10-20 02:04:59 +07:00
bflatastic db92c91678 fmt (#3015) 2026-10-20 01:48:35 +07:00
bflatastic 6d7a062227 .ai import: only ruler-units code 6 is pixels (#3015) 2026-10-20 01:48:35 +07:00
nrq6993-a11yandCursor a48e65ba68 G9: map AI5_RulerUnits value 6 to pixels on .ai import
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-20 01:48:35 +07:00
nrq6993-a11yandCursor f557a1b6f3 G9: restore document ruler units from .ai editing data
Illustrator stores General ruler units in %AI5_RulerUnits; apply them on EPS/.ai import so rulers and length fields match the saved file.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-20 01:48:35 +07:00
bflatastic ddc5fda173 path.join: a single path closed at coinciding ends is closed before its merged anchor is smoothed (#2982) 2026-10-20 01:48:35 +07:00