Commit Graph
10785 Commits
Author SHA1 Message Date
BFlat 9499281b49 Merge pull request #5029 from dotCooCoo/fix/batch-override-export-for-screens-folder-r
Actions: Batch's Override Export sends Export for Screens files to the destination folder
2026-11-09 07:47:42 +08:00
BFlat 7adc2f66a3 Merge pull request #6109 from dotCooCoo/feat/ai-symbol-libraries
.ai import: symbol libraries open with their symbols
2026-11-09 07:47:36 +08:00
BFlat 165810aa6c Merge pull request #6104 from dotCooCoo/fix/graph-series-object-opacity
Graphs: a series keeps the object opacity and blend modes set on one of its marks
2026-11-09 07:47:29 +08:00
BFlat 1961b2468d Merge pull request #5024 from dotCooCoo/fix/outline-stroke-keeps-effects-on-outline-r
Outline Stroke: geometry effects reshape the path that is outlined, as on the canvas
2026-11-09 07:47:22 +08:00
BFlat 1bacc7f1f0 Merge pull request #6061 from dotCooCoo/fix/export-unknown-options
Export: the export commands refuse an unknown option key
2026-11-09 07:47:15 +08:00
BFlat 8fc4464542 Merge pull request #6236 from dotCooCoo/fix/placed-gradient-follows-warp
Effects: placed gradients move and scale with the Warp effects
2026-11-09 07:47:08 +08:00
BFlat c82bd36f07 Merge pull request #6052 from dotCooCoo/fix/edit-copy-artboard-route
Artboards: a Cut or Copy with the Artboard tool replays on its artboards
2026-11-09 07:47:00 +08:00
BFlat 0cb2d5dbd8 Merge pull request #5030 from dotCooCoo/fix/issue-3748-r
Fix #3748: in isolation mode, art outside a clip group's mask can be selected and dragged
2026-11-09 07:46:54 +08:00
BFlat 0b0f8d71eb Merge pull request #5475 from dotCooCoo/fix/spiral-decay-per-wind
Spiral: Decay applies once per full wind
2026-11-09 07:46:47 +08:00
BFlat ecdd36483d Merge pull request #6259 from dotCooCoo/fix/ai-pattern-mask-ids
.ai import: opacity mask art in pattern and brush art takes document ids
2026-11-09 07:46:40 +08:00
BFlat c0887164cc Merge pull request #6258 from dotCooCoo/fix/plugin-clear-cache-test
Plug-ins: clearing every plug-in's cache is tested in a binary of its own
2026-11-09 07:46:33 +08:00
BFlat c8d67344a9 Merge pull request #3968 from dotCooCoo/feat/trace-keep-colors
Image Trace: keepColors traces only the listed palette colors
2026-11-09 07:46:01 +08:00
BFlat 500cda491c Merge pull request #6257 from dotCooCoo/fix/escape-return-tool-docs
Type: docs say Escape returns to the tool whose double-click chose the Type tool
2026-11-09 07:45:45 +08:00
dotCooCoo 3a56f51cf3 Docs: painted live effects state what hit tests and Pathfinder use 2026-11-08 15:43:58 -08:00
dotCooCoo 4afee338cf JavaScript: toLocaleString writes the primitive value of Number, String and Boolean objects
`[1, 'x', true].toLocaleString()` gave `[object Number],[object String],[object Boolean]`
because the wrappers' prototypes have no `toString` on this branch and the lookup reached
Object.prototype.toString. Object.prototype.toLocaleString now returns the string form of
the object's primitive value when `toString` is not found on the object or on its chain up
to its standard prototype. A `toString` on the object or that prototype is still called.
2026-11-08 15:43:09 -08:00
dotCooCoo 83f1333d1c Effects: a Transform effect that flattens the object leaves a fitted gradient fitted with its options on
With Scale Strokes & Effects or Transform Patterns on, the path and each copy are moved by Node::transform, which fixed a fitted gradient to its fit before a scale of 0 flattened it to one color. Scaling::keep_fit_when_flat keeps the gradient fitted under a map that flattens the object (node::flattens, the gate fixes_fit already used), and the Transform effect's path transforms set it.

docs/target-app-parity.md also says that the Gradient tool still shows a fitted gradient's vector at its unturned fit.
2026-11-08 15:38:07 -08:00
dotCooCoo ab029e1b53 Plug-ins: an image too large to count its pixels comes without them
An image object whose width times height overflows is given with pixelsOmitted instead of
overflowing the size check.
2026-11-08 15:37:36 -08:00
dotCooCoo 606077386c Plug-ins: a filter reads a CMYK image's pixels through the working CMYK profile
A CMYK image's pixels are now its inks shown through the working CMYK profile, by a table built
the way the canvas builds its own, instead of the image decoder's own conversion to RGB.
2026-11-08 15:37:36 -08:00
dotCooCoo 027dc8894d Plug-ins: a filter run given more read-only objects than an output lists fails up front
An output lists at most 100,000 objects and must return every read-only object, so an input with
more than that many is now an object-budget limit before the plug-in starts.
2026-11-08 15:37:36 -08:00
dotCooCoo 5540a5e797 Plug-ins: an oversized path fails a filter run, and objects that clip stay out of its input
A path or compound path that doesn't fit what is left of the input now fails the run with the
runtime's own "selection is too large to hand over" limit before the rest of the selection is
written, instead of later read-only objects reporting a size error. Objects that clip a clip
group are left out for every filter: compound paths and paths inside a group that clips one
reached filters before, as type, images and symbol instances did.
2026-11-08 15:37:36 -08:00
dotCooCoo 61cc29ad72 Merge main into fix/undo-history-follows-memory-r 2026-11-08 15:35:56 -08:00
dotCooCoo 438f1cd8f2 Plug-ins: importer tests use American spelling 2026-11-08 15:35:45 -08:00
dotCooCoo a7fc513a0c Merge main into feat/3d-classic-extrude-bevel 2026-11-08 15:34:06 -08:00
dotCooCoo f17ee6e702 Shape Builder: a Cmd-drag held during a merge can carry art to another tab
A Cmd-press held while a merge is computed reached the lent Selection
tool after the merge, but the drag had no document-drag origin, because
the press was handed over while Shape Builder was still the active
tool. The frontend now records the origin when the held press is made.
2026-11-08 15:34:02 -08:00
dotCooCoo 4fadb44566 Type: a refused composite font edit leaves no new font in the font database
The session now lists the new fonts' names before the edit, so sync removes
a name the document does not define when the edit is refused.
2026-11-08 15:33:33 -08:00
dotCooCoo 4c3f0b4c33 Merge main into fix/save-screens-unknown-options 2026-11-08 15:32:45 -08:00
dotCooCoo ff409bcb90 Tests: the filter plug-in shortcut test accepts the macOS chord text
each_filter_plugin_takes_a_shortcut_of_its_own required the exported row
to end in "+Alt+Shift+F7". Export Text writes each shortcut as the dialog
shows it, which is "⌥⇧⌘F7" on macOS, so the test failed there. The test
now compares the row with menus::pretty_shortcut, as
export_text_lists_the_dialogs_rows_with_their_shortcuts does.
2026-11-08 15:25:31 -08:00
dotCooCoo 3a7667a476 Merge main into feat/plugin-importers 2026-11-08 15:19:59 -08:00
dotCooCoo 421189893f Plug-ins: composite fonts stay out of importer filters; base64 size is checked first
File › Open imports .vccomposite files as composite fonts, so an importer
listing that extension no longer shows it under its own filter or in
document.formats. File › Open gets a Composite fonts filter.

document.open refuses dataBase64 that decodes past the importer input
limit before decoding it. A file whose start shows a built-in format
still opens as that format, as it does by path.
2026-11-08 15:18:31 -08:00
Don Omondi abeb7e3167 Merge remote-tracking branch 'upstream/main' into fix/ai-import-brushes
# Conflicts:
#	docs/file-format-parity.md
#	docs/target-app-parity.md
2026-11-08 18:18:16 -05:00
dotCooCoo 870f633e62 Plug-ins: bounds measure a painted piece with its own strokes
A path whose live effect paints its pieces was measured with the
flattened output and the source appearance's strokes, so a piece with a
wider stroke of its own could be culled while the stroke was on screen,
and Rasterize and raster effects worked over bounds that were too small.
visual_bounds and shape_bounds now measure the art reshape returns, each
piece with its own appearance, and a raster effect on a fill or stroke
spreads that art.
2026-11-08 15:10:31 -08:00
ruchirguitar bcde7594fb M2.1: integrate current main and Pen Cut regression (#3380) 2026-11-09 04:40:11 +05:30
dotCooCoo ba5c57790f Docs: array methods skip holes only in long sparse ranges
A range of 4,096 indices or fewer is visited index by index, and so is a
longer one that is at most 8 times the properties on the object and its
prototypes. Each index visited takes fuel.
2026-11-08 15:08:45 -08:00
dotCooCoo 05924c9e4c Merge main into fix/plugin-grant-module-hash 2026-11-08 15:07:23 -08:00
dotCooCoo 6326d1c4ff Plug-ins: the install comment states what a failed module restore leaves 2026-11-08 15:07:20 -08:00
dotCooCoo 48fe46be1f Tests: .ai object limit tests check the symbol's limit and derive the mask's
The symbol test now requires a warning and at most the given number of
objects at every limit below what the reader reads. The mask test takes
its limits from the objects the reader reads and finds where the mask
first fits.
2026-11-08 15:04:51 -08:00
dotCooCoo da7194030f Merge main into feat/plugin-effect-paint 2026-11-08 15:01:41 -08:00
dotCooCoo 0945eaf2b3 Merge main into perf/contours-cover-lists 2026-11-08 15:00:56 -08:00
dotCooCoo 230fbb96a3 Merge main into feat/ai-editing-data-s6b2 2026-11-08 15:00:10 -08:00
dotCooCoo 342cab2f99 Shape Builder: a plane key held with a dropped press is still made
When a press held during a merge is dropped, the held pointer events
and tool keys after it are removed, as before, but a perspective plane
key (1 to 4 with the grid shown) stays held and is made after the
merge, as it is when no merge is running. Pointer events held after the
last held release, which follow a press the tool already has, are
removed with that press.
2026-11-08 14:57:46 -08:00
dotCooCoo b8ab981058 Merge main into feat/ai-symbol-libraries 2026-11-08 14:56:51 -08:00
dotCooCoo e2beb714b0 Merge main into feat/help-bar-visibility 2026-11-08 14:56:29 -08:00
dotCooCoo e32212326a Merge main into fix/ai-writer-object-limit-2 2026-11-08 14:52:07 -08:00
dotCooCoo 64c7c2703e Merge main into feat/plugin-menu-commands 2026-11-08 14:41:13 -08:00
Don Omondi 8383b2af6d Merge remote-tracking branch 'upstream/main' into fix/eps01-editing-overlay
# Conflicts:
#	docs/file-format-parity.md
#	docs/gaps.md
2026-11-08 17:39:34 -05:00
ruchirguitarandCursor 46cc28b299 M2.1: merge current main and keep path-deletion evidence (#3380)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-11-09 04:09:05 +05:30
dotCooCoo f064d78678 Merge main into fix/spiral-decay-per-wind 2026-11-08 14:31:04 -08:00
BFlat 205f54a7cb Merge pull request #6254 from adambelis/fix/blend-curved-spine-orientation
M2.1: blend Align-to-Path smooth on curved spines
2026-11-09 06:27:53 +08:00
dotCooCoo 4fff063dcc Merge main into fix/export-unknown-options 2026-11-08 14:25:57 -08:00
dotCooCoo 9a312e8ada Type: type in a composite font is measured in its own document's definition
- A file read for opening is laid out in the composite fonts registered
  then. Opening a document and reverting the front one now measure again
  the type set in a font named like a composite font that an open document
  defines, the font database holds or the session registered earlier. Type
  in other fonts, missing ones included, keeps the bounds it was read with.
- Switching to a document or closing the front one measures again the type
  set in a composite font whose definition changed, and any type without
  bounds.
- A document reverted while in the back measures its type in composite
  fonts when it comes to the front, not in the front document's.
- Text holding an inline graphic whose symbol's type was measured again
  takes the graphic's new size.
- A failed or panicked command puts the font database's composite fonts
  back with the documents.
- Setting a composite font to the definition an export lends keeps it after
  the export ends.
2026-11-08 14:23:43 -08:00