Commit Graph
3540 Commits
Author SHA1 Message Date
dotCooCoo fa0a0753bb Merge main into feat/weed-box-and-lines 2026-11-12 07:20:06 -08:00
BFlat f5c5d9a702 Merge pull request #6829 from dotCooCoo/feat/dynamic-text-point-type
Type: Dynamic Text turns point type into area type with Block on
2026-11-12 22:02:05 +07:00
BFlat ddafb28aeb Merge pull request #6888 from dotCooCoo/fix/read-roots-scripts-recovery
MCP: plug-in, recovery and script report replies leave out paths outside the read roots
2026-11-12 22:01:56 +07:00
BFlat c1f3ebbdb3 Merge pull request #6869 from dotCooCoo/fix/exif-quarter-turn-resolution
Images: an image its orientation turns is stored as shown, at its own size and with its inks
2026-11-12 22:01:46 +07:00
BFlat a1abf13a8a Merge pull request #6852 from dotCooCoo/feat/objects-on-path-select-move-detach
Objects on Path: the Select/Move widget chooses an object and drags it to another place along the path
2026-11-12 22:01:35 +07:00
BFlat c607814697 Merge pull request #6798 from dotCooCoo/feat/brushes-dry-media-library
Brushes: a built-in Dry Media library of grainy chalk, pencil, crayon and charcoal art brushes
2026-11-12 22:01:26 +07:00
BFlat 8b6ed41ef0 Merge pull request #6846 from dotCooCoo/test/not-aligned-pixel-grid-kinds
Select: test Not Aligned to Pixel Grid with images, symbols, type and live objects
2026-11-12 22:01:15 +07:00
BFlat c44103f8c3 Merge pull request #6853 from dotCooCoo/feat/patterns-optical-effects
Swatch libraries: Patterns › Optical Effects adds wave, moiré and op-art patterns
2026-11-12 22:00:23 +07:00
BFlat 7cf4275fce Merge pull request #6866 from Taha-Mahmoodi/fix/macos-tmp-symlink-tests
tests: canonicalize macOS temp paths in two engine tests
2026-11-12 22:00:10 +07:00
BFlat 5c5bb69c37 Merge pull request #6671 from thisisgomaa/file/save-read-only-offers-save-as
Save on a read-only location offers Save As
2026-11-12 22:00:00 +07:00
dotCooCoo f1f9ecfc0f Cutting Tools: Weed Box and Lines leaves art in a hidden group unmeasured
Selected art inside a hidden group or layer is skipped before its outlines are read, so it no longer counts toward the outline point limit.
2026-11-12 06:29:39 -08:00
dotCooCoo 634cfd053d Cutting Tools: Weed Box and Lines refuses a path past the point limit before copying it
A path or compound path with more anchors than the outline points left to measure is refused before its outlines are copied and followed.
2026-11-12 06:13:46 -08:00
BFlat 71b889605d Merge pull request #6717 from dotCooCoo/feat/type-path-center-on-top
Type: Center on Top and Center on Bottom for type on a closed path
2026-11-12 21:04:31 +07:00
BFlat 9fcddf68d1 Merge pull request #6849 from dotCooCoo/feat/warp-images
Warp: the Warp effects bend an image's pixels with its frame
2026-11-12 21:04:22 +07:00
BFlat e280b28393 Merge pull request #6871 from dotCooCoo/fix/eps-predefined-cmap-type
EPS import: CIDFonts only named, over a predefined CJK CMap, set their characters as live type
2026-11-12 21:04:13 +07:00
BFlat 16bb8c37dc Merge pull request #6843 from dotCooCoo/fix/read-roots-findfiles
Read roots: links.findFiles and image.info follow the configured read roots
2026-11-12 21:04:04 +07:00
BFlat 032770e046 Merge pull request #6848 from dotCooCoo/test/direct-group-selection
Tests: Direct Selection marquee and hover and Group Selection pass through raster effects
2026-11-12 21:03:35 +07:00
dotCooCoo 2212739c54 MCP: plug-in, recovery and script report replies leave out paths outside the read roots
A client confined by --automation-read-root saw paths outside its read
roots that the person or an earlier request had put in the session:

- plugin.list: the plug-in folder last loaded and its failed files;
  plugin.list and plugin.info: a plug-in's source file; plugin.list,
  plugin.safeMode and plugin.setEnabled: the file of a plug-in turned
  off for the next launch.
- file.recovery.list and file.recovery.restore: a document's original
  file; file.recovery.list and file.recovery.save: the recovery folder.
- ui.inspect's scriptReport: the files a run wrote and the included
  file a failed run stopped in.

A folder outside the read roots is now null, and a file outside them is
named by its file name. plugin.setEnabled {file} takes that name. The
restored documents keep their files, and unconfined clients and the
app's own UI see the same replies as before.
2026-11-12 06:03:01 -08:00
dotCooCoo 705503da6d Objects on Path: plug-ins may call Select and Move Object on Path
object.objectsOnPath.selectMember and object.objectsOnPath.moveMember
change only the document and its selection, as the other Objects on
Path commands do, so both join the commands a plug-in may call when its
manifest lists them.
2026-11-12 06:02:04 -08:00
dotCooCoo dc86048bb6 Merge main into feat/weed-box-and-lines 2026-11-12 05:59:30 -08:00
dotCooCoo 0576806e1a Merge main into feat/patterns-optical-effects 2026-11-12 05:55:42 -08:00
dotCooCoo 8187f7ae00 Images: a CMYK JPEG turned by its EXIF orientation keeps its inks
A four-component JPEG whose EXIF orientation turns or flips it went
through the image decoder, which reads CMYK JPEGs as RGB, and was
stored as an RGB PNG without its inks. It is now stored the way a
turned CMYK TIFF is: its inks, 8 bits each, turned and written as a
CMYK TIFF with the turned resolution.

- vectorcraft_doc::cmyk::turned_cmyk turns the inks of a CMYK JPEG or
  TIFF, next to stored_cmyk_tiff; tiff_inks is private again.
- raster_image swaps the resolution axes inline, as its HEIF branch
  does.
- The links comment and the docs/target-app-parity.md line on EXIF
  orientation now describe the turned CMYK TIFF.
2026-11-12 05:45:26 -08:00
dotCooCoo 6e9ffa92cc Merge main into feat/brushes-dry-media-library 2026-11-12 05:31:21 -08:00
Ahmed Gomaa 421fead32b Merge upstream main into file/save-read-only-offers-save-as 2026-11-12 15:24:23 +02:00
Taha-Mahmoodi 0014d19257 Merge remote-tracking branch 'origin/main' into fix/macos-tmp-symlink-tests
# Conflicts:
#	docs/development.md
2026-11-12 17:45:37 +04:30
BFlat 89fba4ebfd Merge pull request #5446 from Taha-Mahmoodi/fix/import-document-title
Fix #3626: an imported document takes the title the file carries
2026-11-12 20:09:15 +07:00
dotCooCoo 1996a6df52 Merge main into feat/objects-on-path-select-move-detach 2026-11-12 05:07:11 -08:00
dotCooCoo 842f1f1b68 EPS import: CIDFonts only named, over a predefined CJK CMap, set their characters as live type
Type in a font found by name with a predefined non-Unicode CMap, such as
`/Ryumin-Light-83pv-RKSJ-H findfont` or a `composefont` with `GBK-EUC-H`,
opened as Latin-1 letters (`ú{A` for 日本A) in a font whose style carried
the CMap name (`Light-83pv-RKSJ-H`). Only Unicode CMaps were split off the
font name, and `composefont` failed with `undefinedresource` for the others.

- The predefined CMap decoder used by legacy `.ai` type moves to
  `import/predefined_cmap.rs`, and EPS import decodes these CMaps' codes
  with it (Shift-JIS, EUC, GBK, Big Five, UHC and the other public CMaps).
- A font name splits at a predefined CMap unless an installed face has
  the whole name. A CMap that can't be read gives a warning.
- Type over a vertical CMap (`-V`) is set as vertical type, and each code
  moves the point one em down the column, the default `DW2`
  displacement.
- Every show operator sets decoded type with the same spacing and shaping
  as other fonts found by name.
- Decoding a string counts against the import's memory budget.
2026-11-12 05:01:14 -08:00
Taha-Mahmoodi 5a88399677 Normalize Windows verbatim prefix in script path regression 2026-11-12 17:30:51 +04:30
dotCooCoo 480cd96035 Merge main into feat/dynamic-text-point-type 2026-11-12 05:00:38 -08:00
dotCooCoo 61c37f0b2e Merge main into feat/type-path-center-on-top 2026-11-12 04:59:45 -08:00
dotCooCoo 67ebbf0b53 Merge main into feat/warp-images 2026-11-12 04:59:37 -08:00
dotCooCoo 337bc90d25 Merge main into test/direct-group-selection 2026-11-12 04:59:36 -08:00
dotCooCoo 28dfd66b65 Images: a quarter turn by the orientation swaps the resolution, and every TIFF follows the tag
Opening or placing an image whose orientation turns it a quarter
(EXIF or TIFF Orientation 5 to 8) stored the pixels turned but kept
the resolution as stored, so a photo at 300 x 150 ppi came in at the
wrong width and height. XResolution counts pixels in the ImageWidth
direction of the stored image (TIFF 6.0,
https://www.itu.int/itudoc/itu-t/com16/tiff-fx/docs/tiff6.pdf; EXIF
uses the same tag, CIPA DC-008-2012,
https://www.cipa.jp/std/documents/e/DC-008-2012_E.pdf), so a quarter
turn now swaps the axes, in the size Open and Place use and in the
stored image, with jxlread::oriented_resolution as JPEG XL does.

Three kinds of TIFF did not follow their Orientation tag:
- grayscale TIFFs with extra samples and 1-bit CCITT Group 3 TIFFs
  were not turned;
- a CMYK TIFF with its inks together was turned but stored as RGB,
  losing its inks, and one with a plane per ink did not open
  ("Planar TIFF with CMYK color type is not supported").
They now turn as the other images do, and a CMYK TIFF keeps its inks,
8 bits each, written again with the turned resolution.
2026-11-12 04:57:39 -08:00
Taha-Mahmoodi eebf296eb5 Merge remote-tracking branch 'origin/main' into fix/macos-tmp-symlink-tests 2026-11-12 16:45:21 +04:30
BFlat 81247fdae9 Merge pull request #6666 from dotCooCoo/fix/malformed-id-not-missing
MCP: a malformed object id is refused as such, not reported as missing
2026-11-12 19:14:06 +07:00
BFlat 7f9866f42a Merge pull request #6818 from dotCooCoo/feat/korean-line-break-anywhere
Type: Korean words break at spaces unless Korean Line Break Anywhere is on
2026-11-12 19:13:57 +07:00
BFlat 0b4ccdfb5d Merge pull request #6830 from dotCooCoo/fix/artboard-files-ask-before-replacing
Save and Export: files written beside the picked one ask before replacing a file there
2026-11-12 19:13:47 +07:00
BFlat 36e51c2be5 Merge pull request #6812 from dotCooCoo/feat/cut-order
HP-GL export: insideFirst cuts the paths inside a shape before the shape
2026-11-12 19:13:37 +07:00
BFlat 2d1575914a Merge pull request #6832 from Hassan1305/fix-6809-replace-spine-source-move
Blend: moving a key of a blend with a replaced spine moves it (#6809)
2026-11-12 19:13:27 +07:00
Taha-Mahmoodi 59bc3677fe Fix macOS temporary-path expectations in engine tests
Canonicalize test roots before path comparisons and case-variant script probes. Production access checks are unchanged.\n\nFixes #6860
2026-11-12 16:26:48 +04:30
Ahmed Gomaa c66335eaa7 Merge upstream main into file/save-read-only-offers-save-as 2026-11-12 13:40:13 +02:00
Taha-Mahmoodi 93e40537bc Merge remote-tracking branch 'origin/main' into fix/import-document-title 2026-11-12 15:54:47 +04:30
Taha-Mahmoodi ae2800f159 Merge remote-tracking branch 'origin/main' into fix/import-document-title
# Conflicts:
#	docs/target-app-parity.md
2026-11-12 15:52:02 +04:30
BFlat 4306a1d1fb Merge pull request #6808 from dotCooCoo/feat/stencil-bridges
Cutting Tools: Stencil Bridges keeps the islands of a stencil attached
2026-11-12 18:19:57 +07:00
BFlat 557093ebcd Merge pull request #6837 from dotCooCoo/fix/vertical-point-to-area-keeps-place
Type: Convert To Area Type and Convert To Point Type keep vertical type in place
2026-11-12 18:19:41 +07:00
BFlat a8879b9fb8 Merge pull request #6760 from dotCooCoo/feat/brushes-bristle-library
Brushes: built-in Bristle Brushes library with one bristle brush for each tip shape
2026-11-12 18:19:32 +07:00
BFlat f4df78ef4a Merge pull request #6790 from dotCooCoo/feat/hpgl-export
File formats: HP-GL (.plt) plots export for pen plotters and cutters
2026-11-12 18:19:22 +07:00
BFlat 65fb71fff5 Merge pull request #6836 from dotCooCoo/fix/symbol-redefine-drops-undrawn-paints
Symbols: redefining a dynamic symbol drops paints its new objects do not draw
2026-11-12 18:19:10 +07:00
BFlat bdea9ac39a Merge pull request #6822 from dotCooCoo/feat/gradients-holographic
Swatch libraries: Gradients › Holographic adds iridescent foil and glow gradients
2026-11-12 18:18:50 +07:00