Commit Graph
5313 Commits
Author SHA1 Message Date
BFlat 5037a1ac4b Merge pull request #3923 from storytold/land/3922
G11: Shape Builder pieces: contract the sweep's stubs between two cuts of one path
2026-10-24 08:18:12 +07:00
Angelo BernardiniandClaude Opus 5.5 e11ff0352b G11: Shape Builder pieces: contract the sweep's stubs between two cuts of one path
Where two passes of a path (an open line's way there and back) cross another
path, the sweep can cut them a rounding error apart and join the two cuts
with a stub a little over its tolerance. Upstream's twin-piece joining
already merges the ends of the two passes, but not such stubs, so dense
hatches at exact binary steps (lines every 0.5 pt across a 45° line) still
came back with a speck of a piece per crossing. The planar map now contracts
such stubs into one vertex before the edges are built (within 4x eps up and
down the sweep's frame and 1/16 of the 0.01 pt precision along it), bounded
by each cluster's extent so a run of tiny, nearly level segments (a finely
flattened or traced path) is not collapsed transitively.

Ported from the fork's d5985b14 and 616a5c4a with their tests:
a_dense_hatch_at_exact_binary_steps_cuts_each_line_once_per_crossing (fails
without the fix), a_run_of_tiny_level_segments_is_not_contracted_as_stubs
(fails without the extent bound) and
a_line_crossed_where_its_two_passes_part_is_cut_once (already passing on
upstream, kept as a regression test).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014gCpjL3yUhaH3jRp7ksufh
2026-10-24 08:05:47 +07:00
aiongg c204d8959e CI: run the gate through craft-common-actions' shared gate.yml; FreeBSD nightly and on release (#3772)
ci.yml is new: it calls the shared workflow (cached apt packages, nextest, main-only cache saves, Cargo.lock check). FreeBSD and Windows ARM64 run nightly and on pushes to release instead of on pull requests. Depends on storytold/craft-common-actions#69.
2026-10-23 20:59:43 -04:00
BFlat f2d793f746 Merge pull request #3921 from Taha-Mahmoodi/fix/font-family-load-race
Fix #3920: a family another thread is loading is found whole, so fallback text never takes the style of its first file
2026-10-24 07:56:41 +07:00
Taha-Mahmoodi 6b52e54a1b Fix #3920: a family another thread is loading is found whole, so fallback text never takes the style of its first file
An installed family was added to the font database one file at a time, so a
lookup on another thread could find it with only some of its styles: text
falling back to Arial took Arial Bold Italic or Bold (its files sort first)
for upright Regular text, and the same text laid out a moment later took
Arial Regular. One Arabic word could even mix the two. Two threads loading
the same family could also add a face twice.

A family's files are now read and parsed first and their faces added under
one lock, skipping faces another thread added meanwhile. Loading a family
reports it loaded when another thread loaded it meanwhile, so the fallback
search doesn't go on to other families.

This made tests_bidi::a_change_of_paint_in_a_mixed_direction_line_moves_no_glyph
fail intermittently when another test loaded Arial at the same time.
2026-10-24 07:44:14 +07:00
BFlat 533cbc6b94 Merge pull request #3919 from Taha-Mahmoodi/fix/3586-pdf-stream-scan-linear
Fix #3586: the PDF pre-open scan reads a file dense with stream keywords in linear time
2026-10-24 07:35:21 +07:00
Taha-Mahmoodi ea55f89c24 Fix #3586: the PDF pre-open scan reads a file dense with stream keywords in linear time
Each `stream` keyword walked back up to 64 KiB through every dictionary before it, so 1 MiB of `<</A <</B 1>> >>stream` took minutes. A walk back now stops where the previous keyword's walk began, and a stream without a Length shares the search for the next `endstream`.
2026-10-24 07:35:07 +07:00
BFlat cdd3b949ba Merge pull request #3918 from lehni/fix/svg-glyph-image-href
Type: an SVG glyph's image is an SVG image by its plain href first
2026-10-24 07:23:53 +07:00
BFlat 180e6dc08c Merge pull request #3917 from Taha-Mahmoodi/fix/3828-japanese-business-card
Fix #3828: New Document › Branding offers Business Card 91 × 55 mm
2026-10-24 07:23:37 +07:00
Jürg Lehni deb517fbbe Type: an SVG glyph's image is an SVG image by its plain href first
The check for images of SVG documents looked at href and xlink:href alike, so an image whose href is a PNG was cut for an SVG xlink:href; it now reads href, else xlink:href, as the importer does (SVG 2).
2026-10-24 07:12:16 +07:00
Taha-Mahmoodi 767f06b20e Fix #3828: New Document › Branding offers Business Card 91 × 55 mm 2026-10-24 07:12:16 +07:00
BFlat 768f6ba523 Merge pull request #3916 from lehni/fix/svg-glyph-svg-images
Type: SVG glyphs leave out images of SVG documents
2026-10-24 07:02:17 +07:00
Jürg Lehni 4d1b4a3392 Type: SVG glyphs leave out images of SVG documents
The importer expanded an image whose data is an SVG document into art; the SVG table asks for it to be ignored, and a glyph draws no documents inside it.
2026-10-24 06:51:20 +07:00
BFlat 3aa9855010 Merge pull request #3914 from storytold/fix/flaky-nativemenu-test
Tests: native-menu tests count menu reads only in runs no other test disturbed
2026-10-24 06:39:52 +07:00
bflatastic 3fd190f747 Tests: native-menu tests count menu reads only in runs no other test disturbed 2026-10-24 06:26:02 +07:00
BFlat 0df73f7c36 Merge pull request #3907 from el-j/fix/direct-selection-fill-occlusion
M2.1: prevent click-through on open path fills and support segment toggle (#3405)
2026-10-24 06:23:32 +07:00
BFlat 09ad7e4e59 Merge pull request #3908 from lehni/fix/svg-glyph-images
Type: images in SVG glyph documents draw with the glyph
2026-10-24 06:23:18 +07:00
BFlat 07eb827be9 Merge pull request #3904 from Silvertree2010/fix/h1831-page-range-parser-accepts-a-lead
Reject a leading plus sign in page range numbers
2026-10-24 06:23:02 +07:00
BFlat 1e26801e4e Merge pull request #3905 from storytold/feat/3849-pdf-tiling-patterns
PDF export: pattern fills are written as tiling patterns (#3849)
2026-10-24 06:22:45 +07:00
BFlat d21e734d88 Merge pull request #3906 from storytold/fix/flaky-font-tests
Tests: engine tests that add fonts to the shared font database take one lock
2026-10-24 06:22:29 +07:00
BFlat 5fc9550e96 Merge pull request #3902 from storytold/fix/3850-emf-warnings
EMF and WMF export: say when type is written as outlines and pattern fills as their tiles (#3850)
2026-10-24 06:22:15 +07:00
el-j 71a669635c M2.1: prevent click-through on open path fills and support segment toggle (#3405) 2026-10-24 06:00:23 +07:00
Jürg Lehni caaccaf5be Type: images in SVG glyph documents draw with the glyph
They were left out because glyph art had no document to keep them in; since #3879 they hold their own pixels until a document takes them in.
2026-10-24 06:00:22 +07:00
NetterSilverandClaude Haiku 5.5 156fe87fdd Reject a leading plus sign in page range numbers
Found while testing crates/doc/src/range.rs:12

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-24 06:00:21 +07:00
bflatastic 3225315ce1 PDF export: warn about tiles only for a pattern swatch that exists 2026-10-24 05:59:04 +07:00
bflatastic a564fe5d8e PDF export: pattern fills are written as tiling patterns (#3849) 2026-10-24 05:59:04 +07:00
bflatastic b2835c4f2b Tests: engine tests that add fonts to the shared font database take one lock 2026-10-24 05:52:15 +07:00
bflatastic 23d8820898 EMF and WMF export: say when type is written as outlines and pattern fills as their tiles (#3850) 2026-10-24 05:35:12 +07:00
BFlat ece7f6b938 Merge pull request #3899 from storytold/fix/3870-outline-sliver
Pathfinder Outline: junctions a hair apart are one cut, so no sliver path is left (#3870)
2026-10-24 05:30:53 +07:00
bflatastic 5b1528c9b6 Pathfinder Outline: junctions a hair apart are one cut, so no sliver path is left (#3870) 2026-10-24 05:17:06 +07:00
BFlat af6b0b8691 Merge pull request #3897 from storytold/fix/audit-automation-roots
Fix clipboard read-policy bypass and FULL lock held during checks (audit automation roots)
2026-10-24 05:16:36 +07:00
bflatastic 4eec70e5cd Automation roots: rustfmt and clippy (redundant closure) 2026-10-24 05:16:21 +07:00
Dylan M. Taylor 42f8b513a2 Fix clipboard read-policy bypass and lock-held file checks
- copied_file: check the read policy on the real path when it is
  valid UTF-8; skip non-UTF-8 paths while automation roots are
  active instead of checking a lossy name (path traversal via
  symlink, CodeRabbit #3872 thread 1).
- full_bytes_cached: collect matching cache candidates under the
  FULL lock, then run the read checks after releasing it, so
  filesystem walks no longer stall other FULL users (thread 2).
2026-10-24 05:16:20 +07:00
Dylan M. Taylor cd043f650b Tests: the recovery folder needs read access too; the Place queue check runs for any active tool 2026-10-24 05:16:20 +07:00
Dylan M. Taylor c99b77060d Test: the Place queue is checked against the read roots 2026-10-24 05:16:20 +07:00
Dylan M. Taylor e95e8418ed Audit: automation roots follow file.showPackage, the Place queue, headless file methods, clipboard files, placed-document workers and caches, folder searches and the recovery folder 2026-10-24 05:16:20 +07:00
BFlat 8743f63f50 Merge pull request #3898 from storytold/land/3895
G12: ruler guides nudged with art keep to the page's axes at a turned Constrain Angle
2026-10-24 05:01:07 +07:00
Angelo BernardiniandClaude Opus 5.5 52a43eefdb G12: ruler guides nudged with art keep to the page's axes at a turned Constrain Angle
With objects and ruler guides selected together, object.nudge moved the
guides by the art's delta turned through General > Constrain Angle, so at
90 degrees a Right nudge moved a horizontal guide vertically. The guides
in that edit now move by the page-axis delta, as guides selected alone
already did (CodeRabbit finding on #3745).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014gCpjL3yUhaH3jRp7ksufh
2026-10-24 04:59:57 +07:00
BFlat e0c1548049 Merge pull request #3896 from storytold/fix/3869-svg-type-features
SVG export: type with small capitals, superscript, subscript or tab leaders is written as outlines (#3869)
2026-10-24 04:51:54 +07:00
BFlat 8d87932f48 Merge pull request #3891 from aiongg/eps-read-soon-headroom
EPS tests: budget tests wait 120 s for the program to stop
2026-10-24 04:51:38 +07:00
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
bflatastic 166afce360 SVG export: type with small capitals, superscript, subscript or tab leaders is written as outlines (#3869) 2026-10-24 04:49:08 +07:00