5508 Commits
Author SHA1 Message Date
bflatastic 62333a2128 DXF export: the far-coordinate check compares with partial_cmp (also refuses NaN; clippy) 2026-10-24 04:49:07 +07:00
Dylan M. Taylor 4b8e69981e Audit: PDF import and export bounds 2026-10-24 04:49:07 +07:00
Dylan M. Taylor 9843d5f1ab Audit: export names, linked-file ids and MCP prompt arguments in one pass 2026-10-24 04:49:07 +07:00
Dylan M. Taylor e3223a419d Audit: Scribble rows counted, Outer Glow dilation in linear time, CSS export names in a set 2026-10-24 04:49:07 +07:00
bflatastic 711b10ca59 Security: DXF export bounds (layer and style names, flattening, entity count, image size) and import dash patterns
Squashed from #3886 onto main.
2026-10-24 04:49:07 +07:00
bflatastic c2ad9f8bbb Type: emoji go with type that effects reshape and Expand Appearance
Squashed from #3879 onto main.
2026-10-24 04:49:06 +07:00
BFlat 94e1fa3ecc Merge pull request #3882 from dylanmtaylor/fix/audit-geom-pathops
Security: geometry, path edit and tool work bounds
2026-10-24 04:48:28 +07:00
bflatastic 0ecef703ef Security: cap the perspective grid's line-loop bounds at 121 a way 2026-10-24 04:34:18 +07:00
Dylan M. Taylor 1bb904c147 Audit: Perspective Grid lines counted not summed; Liquify subdivision stays under its anchor ceiling 2026-10-24 04:13:37 +07:00
Dylan M. Taylor aa160b969b Audit: path edit work bounds (redundant points in one pass, simplify and join budgets) 2026-10-24 04:13:36 +07:00
Dylan M. Taylor f4a30c1a94 Audit: geometry length measurement refuses coordinates the integrator cannot handle 2026-10-24 04:13:36 +07:00
BFlat b0f7c5a65a Merge pull request #3877 from dylanmtaylor/fix/audit-svg-limits
Security: SVG import and export bounds (entity expansion, filter stacks, id probing, font feature tags)
2026-10-24 04:12:17 +07:00
BFlat e749cde3f5 Merge pull request #3876 from storytold/fix/3867-preserve-editing-svg
SVG: a Preserve Editing SVG reopened from disk saves as the full document again (#3867)
2026-10-24 04:12:02 +07:00
BFlat 6acc5ffb28 Merge pull request #3873 from lehni/chore/colour-glyph-tests
Type: tests pin colour glyphs in variable fonts, on paths and on the canvas
2026-10-24 04:11:47 +07:00
BFlat 993a277563 Merge pull request #3875 from storytold/fix/3868-screens-one-artboard
Export for Screens: a document row for an artboard keeps only that artboard's art (#3868)
2026-10-24 04:11:32 +07:00
BFlat 2ddf692805 Merge pull request #3513 from Zaxaerith/fix/3497-dash-pattern-preservation
fix(stroke): preserve extended dash patterns when editing (#3497)
2026-10-24 04:11:17 +07:00
BFlat a18a4c94a3 Merge pull request #3811 from ham9zah/fix/ai-gradient-mesh-one-grid
Import: an Illustrator gradient mesh comes in as one connected mesh
2026-10-24 04:11:02 +07:00
BFlat 6abe5ab8cd Merge pull request #3863 from marcoarnulfo/feat/action-sets
Actions: Create New Set and Set Options… name action sets, and a recording goes into the current set (#3712)
2026-10-24 04:10:45 +07:00
BFlat 586d6b4e87 Merge pull request #3866 from lehni/fix/colour-glyph-cache-key
Type: colour glyphs keep each fill's own colour, also between colours that look alike
2026-10-24 04:10:30 +07:00
BFlat c6a7962388 Merge pull request #3861 from FractalEncrypt/fix/ruby-font-fallback-stability
Fix false font fallback misses during concurrent loading
2026-10-24 04:10:14 +07:00
BFlat 583117a408 Merge pull request #3860 from Silvertree2010/fix/h1829-xml-id-unescape-accepts-a-sign-i
Reject signed hex digits in XML-ID _xHH_ escapes
2026-10-24 04:10:00 +07:00
bflatastic 9827bfbcbb SVG import: the shared appearance needs no conversion (clippy) 2026-10-24 03:52:24 +07:00
bflatastic 8e8aaa8683 SVG: a Preserve Editing SVG reopened from disk saves as the full document again (#3867) 2026-10-24 03:52:24 +07:00
bflatastic d9e524df30 SVG entity scan: look for a reference's ';' no further than the longest name 2026-10-24 03:52:24 +07:00
Dylan M. Taylor 98d11ad66b Audit: cap SVG entity expansion, filter layer stacks and export id/companion probing; share compound-path appearances; escape-proof font feature tags 2026-10-24 03:52:24 +07:00
Jürg Lehni e372d00cb7 Type: tests pin colour glyphs in variable fonts, on paths and on the canvas
A variable font's COLR layers follow its instance, a colour glyph turns with type on a path, and the canvas draws an SVG glyph's art in its own colours and the type's fill.
2026-10-24 03:52:23 +07:00
bflatastic 9f1a001a2b Export for Screens: a per-artboard EPS takes the artboard as its page, so an empty artboard still writes 2026-10-24 03:52:22 +07:00
Zaxaerith 9985d587f7 fix(stroke): preserve extended dash patterns (#3497) 2026-10-24 03:52:22 +07:00
bflatastic d81145aee3 Artboard documents keep objects without measurable bounds (type in a missing font) 2026-10-24 03:52:22 +07:00
bflatastic 60107cd33a Export for Screens: a document row for an artboard keeps only that artboard's art (#3868) 2026-10-24 03:52:22 +07:00
ham9zah 1653790965 Import: an Illustrator gradient mesh comes in as one connected mesh
The editing data writes a gradient mesh as its patches, each with its
place in the grid (`/P`) and the grid's size (`/Size`); the importer
read each patch as a mesh of its own, in a group, so moving a mesh
point tore a patch away and left a hole, and a patch with anchors on
its edges was cut into cells on its own.

The patches are now placed by `/P` in the `/Size` grid and joined at
the corners they share into one GradientMesh. Which index of `/P` runs
along the columns is taken from the one under which the shared corners
meet. Where an edge bends through anchors, a mesh line runs through the
whole row or column of patches there, each patch cut at the same place,
so every cell keeps single-cubic edges. A mesh whose patches don't say
where they are reads as before; one whose patches fill the grid but
don't join up reads as before with a warning. Sizes and lines are
capped; non-finite values fall back.

Hand-written tests: a 2 x 2 grid as one mesh with the old patches'
colours, a moved inner point shared by its four cells, an anchor on a
shared edge adding a line through the mesh, a collapsed patch with
finite values, and unplaced or unjoined patches staying separate.
2026-10-24 03:52:21 +07:00
Marco Arnulfo d0919ad0df Actions: Create New Set and Set Options… name action sets, and a recording goes into the current set (#3712) 2026-10-24 03:52:20 +07:00
Jürg Lehni 7efd8f941a Type: colour glyphs keep each fill's own colour, also between colours that look alike
The colour glyph cache keyed the text's colours by their 8-bit RGB look, so a fill that only looked like an earlier one (a grey and the same RGB grey, a spot colour and its process match) took that one's colour, and its separations. It now keys them exactly.
2026-10-24 03:52:15 +07:00
FractalEncrypt 25abd1f472 text: recheck concurrently loaded fallback faces
A system fallback search can add no new face because another lookup loaded it
first. Re-read the loaded faces regardless of the search's return value, so
concurrent first use does not produce a missing glyph and different advances.

Add an isolated generated-font regression with simultaneous cold lookups.
The original code missed 14 of 16 lookups; the fixed regression passed twenty
runs. Both previously failing Ruby tests pass unchanged.

Validation: Rust 1.98.1 cargo xtask ci, all 10 gates passed; workspace tests
9,635 passed, 0 failed, 14 ignored. Default Rust toolchain unchanged.
2026-10-24 03:52:15 +07:00
NetterSilverandClaude Haiku 5.5 add5e1e7dd Reject signed hex digits in XML-ID _xHH_ escapes
Found while testing crates/doc/src/xml_id.rs:80 (escaped)

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-24 03:52:14 +07:00
Dylan M. Taylor c4fba30b9c ci(sonar): don't cancel superseded runs on main, so coverage is published (#3881) 2026-10-23 16:51:11 -04:00
BFlat 902abf0242 Merge pull request #3874 from storytold/docs/gaps-dedupe
Docs: one ranked-table row each for G2 and G13 in gaps.md
2026-10-24 03:32:28 +07:00
bflatastic 255ce30103 Docs: one ranked-table row each for G2 and G13 in gaps.md 2026-10-24 03:31:54 +07:00
BFlat f6c716839e Merge pull request #3781 from Taha-Mahmoodi/feat/start-global-edit
Select: Start Global Edit edits the objects of the same shape together, each in proportion
2026-10-24 03:13:36 +07:00
BFlat a16489256b Merge pull request #3780 from dotCooCoo/feat/paragraph-bullets
Type: the Paragraph panel's Bullets button turns paragraphs into a bulleted list
2026-10-24 03:13:19 +07:00
BFlat 7f57a3a3f5 Merge pull request #3833 from Taha-Mahmoodi/feat/symbol-libraries
Symbols: Window › Symbol Libraries opens symbol libraries whose symbols click into the document's Symbols
2026-10-24 03:13:01 +07:00
BFlat 7d7af6b952 Merge pull request #3817 from Taha-Mahmoodi/feat/2572-thread-ports
Type: selected type shows its in and out ports, and the in port threads backwards
2026-10-24 03:12:44 +07:00
BFlat 629a4c528e Merge pull request #3832 from Taha-Mahmoodi/feat/distance-guides
Smart Guides: Alt over another object or the artboard shows the selection's distances to it
2026-10-24 03:12:28 +07:00
BFlat b5df562df7 Merge pull request #3785 from Taha-Mahmoodi/feat/pathfinder-trap
Pathfinder: Trap spreads the lighter colour into the darker as an overprinting strip where solid colours meet
2026-10-24 03:12:10 +07:00
BFlat b3f5b6c7a4 Merge pull request #3831 from Taha-Mahmoodi/feat/artboard-video-display
Artboards: Artboard Options shows video safe areas and sets the pixel aspect ratio that View › Rulers › Show Video Rulers counts the artboard in
2026-10-24 03:11:53 +07:00
BFlat 0f493464c0 Merge pull request #3815 from Taha-Mahmoodi/feat/2691-grid-arc-tool-options
Tools: double-clicking the Line Segment, Arc, Rectangular Grid and Polar Grid tools opens their Tool Options
2026-10-24 03:11:37 +07:00
BFlat 408ed5441c Merge pull request #3834 from MajedAlaejem/fix-select-text
feat: display point type baselines for node outlines and add hover test
2026-10-24 03:11:19 +07:00
BFlat 313ee822a5 Merge pull request #3778 from dotCooCoo/feat/pen-eraser-end-linux
Pen tablets: a pen's eraser end selects the Eraser on Linux under X11 and XWayland
2026-10-24 03:11:01 +07:00
BFlat 92898e5a73 Merge pull request #3854 from danngreen/feat/library-list-view
PR title: Libraries panel: show items as icons or in a list
2026-10-24 03:10:44 +07:00
BFlat 92d7937305 Merge pull request #3846 from marcoarnulfo/feat/pencil-shift-straight
Pencil: Shift held at the press draws a straight line at 45° steps
2026-10-24 03:10:26 +07:00