Commit Graph
5271 Commits
Author SHA1 Message Date
aiongg 6877d6535f Links: resolve stored paths with craft-docpath's resolve_absolute (#3267)
* Links: use resolve_absolute for stored paths

* CI: release only with git dependencies from storytold

* Release: check git sources from the parsed Cargo.lock and cargo config

The grep let any character stand for the dot in github.com, passed a missing or stale
Cargo.lock, and missed source replacement in .cargo/config.
2026-10-23 17:51:28 -04:00
BFlat f02eedd50d Merge pull request #3892 from mercuryVM/fix/3724-new-window-disabled
Fix #3724: Window › New Window is greyed out until it opens a window
2026-10-24 04:51:26 +07:00
BFlat ec2d43a4d5 Merge pull request #3894 from lehni/refactor/colour-key
Renderer: colour caches key colours with Color::key
2026-10-24 04:51:10 +07:00
BFlat 32d81bb04e Merge pull request #3884 from dylanmtaylor/fix/audit-pdf-limits
Security: PDF import, print and export bounds; PDF 1.3 encryption notes
2026-10-24 04:50:54 +07:00
BFlat 83ccffcc9e Merge pull request #3890 from dylanmtaylor/fix/audit-engine-mcp-limits
Security: export names, linked-file ids, MCP prompt arguments and image encoders
2026-10-24 04:50:38 +07:00
BFlat 2084f1a6f9 Merge pull request #3889 from dylanmtaylor/fix/audit-effects-color
Security: Scribble rows, Outer Glow dilation and CSS export names
2026-10-24 04:50:23 +07:00
BFlat 5abf14a1c3 Merge pull request #3886 from dylanmtaylor/fix/audit-cad-limits
Security: DXF export bounds (layer and style names, flattening, entity count, image size) and import dash patterns
2026-10-24 04:50:07 +07:00
BFlat cc44799d08 Merge pull request #3885 from mercuryVM/fix/3716-click-near-anchor-moves
Fix #3716: a click near an anchor selects without moving the object
2026-10-24 04:49:51 +07:00
BFlat c6acc2511d Merge pull request #3879 from lehni/feature/art-owns-pixels
Type: emoji go with type that effects reshape and Expand Appearance
2026-10-24 04:49:33 +07:00
Gabriel Luís da Silva 60764fb65b Fix #3724: Window > New Window is greyed out until it opens a window
New Window was enabled in the menus and in the control channel's menu
listing, but choosing it opened nothing and answered with the internal
note "multiple windows land with M11.5". It is now disabled, as Window >
Arrange's unimplemented items already are, and a direct call fails with
a message meant for the user, translated in every catalog.
2026-10-24 04:49:07 +07:00
Jürg Lehni 181aeef44c Renderer: colour caches key colours with Color::key
The freeform and dithered gradient grids and the separated inks each built the same exact colour key by hand; they now take the one Color::key gives.
2026-10-24 04:49:07 +07:00
Dylan M. Taylor 5020dc0585 PDF export: past the retry cap, one last run leaves out every image instead of failing 2026-10-24 04:49:07 +07:00
bflatastic 9c8afb09ba Image encoders: rustfmt 2026-10-24 04:49:07 +07:00
bflatastic 028cafa52e Scribble: the row loop's stop compares with partial_cmp (also stops on NaN; clippy) 2026-10-24 04:49:07 +07:00
bflatastic a82bcfe7a5 DXF export: format the far-coordinate check 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 2e71ab5476 PDF import and export: rustfmt 2026-10-24 04:49:07 +07:00
Dylan M. Taylor 52ceefe906 Audit: Targa and palette encoders check pixel buffer sizes 2026-10-24 04:49:07 +07:00
Dylan M. Taylor b59235e762 Test: sliding-window maximum 2026-10-24 04:49:07 +07:00
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