Commit Graph
5249 Commits
Author SHA1 Message Date
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
Gabriel Luís da Silva f0ec1c8506 Fix #3716: a click near an anchor selects without moving the object
A Selection tool press within reach of an anchor or the centre grabs the
object by that point, but the drag threshold was measured from that point
instead of from the press. A press 3-6 px from it was already past the
threshold, so the first pointer wobble started a move and jumped the
object by the offset. The threshold now counts from where the pointer
went down; a real drag still moves the object by the grabbed point.
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
BFlat 791aaccbb9 Merge pull request #2847 from haranishi/review/statusbar-ruler-origin-20261018
Fix status-bar coordinates after changing the ruler origin
2026-10-24 03:10:09 +07:00
BFlat c1ef2ce61c Merge pull request #3775 from lewandowskit/pl-terminologia-2
i18n(pl): "Wtyczki i dyski robocze", "Geometryczne linie pomocnicze"
2026-10-24 03:09:57 +07:00
BFlat 221002194e Merge pull request #3842 from Janiz-zzz/fi-fixes-20261023
i18n(fi): fix package-note spacing and a few Finnish labels
2026-10-24 03:09:40 +07:00