Merge remote-tracking branch 'upstream/main' into fix/library-panel-list-height-2992

# Conflicts:
#	docs/target-app-parity.md
This commit is contained in:
Don Omondi
2026-11-12 21:45:59 -05:00
66 changed files with 2266 additions and 117 deletions
+46 -11
View File
@@ -1795,6 +1795,11 @@ path to a value inside a list or an object, and the document and its undo histor
→ invalid parameters for `view.saved.edit`: `edits[0].delete` must be true or false, not 1
```
A schema nests at most 16 lists and objects. A value that would go past that depth is refused with the same kind of
parameter error, ``invalid parameters for `<id>`: `<path>` is nested too deeply``, where `<path>` is the path to the
value. A schema that is wrong in itself, such as one that nests past 16 levels or puts a list of ids or a point
inside 16 lists, is an internal error in the command, and the command does not run.
An omitted value with a `default` takes it (`rotation` 0 in `view.saved.new`); the journal keeps the params as they
were given. Saved steps played from a journal or an action keep a key the schema does not name, unless its value nests
more than 16 levels deep, and the values of the parameters it names are checked as in a new call. The schemas of built-in commands belong to API level 3
@@ -2982,13 +2987,14 @@ already walks Image Trace. Short agent entry points:
the file at `path`, else a picked one, or the file's text `data`, adds its set after the other sets and returns
`{set, name, actions}`. A set named like one already in the panel gets the next free number (`Print 2`), and the
other sets and the current set stay as they are. An action set file (`.vcactions`) is JSON:
`{"format": "vcactions", "version": 1, 2 or 3, "name", "actions": [{"name", "steps": [{"command", "params", "excluded"?}]}]}`, each step
`{"format": "vcactions", "version": 1 to 4, "name", "actions": [{"name", "steps": [{"command", "params", "excluded"?}]}]}`, each step
a command id and its params as `command.batch` takes them, or a stop: the command `action.stop` with
`{message, allowContinue}`. `excluded: true` preserves a step but omits it from playback;
an absent or false flag includes the step. Files with stops use version 3, and files with excluded steps and no stops
use version 2, so older builds refuse them
instead of playing the excluded steps or failing at a stop; other files use version 1. A file with another `format` or a `version` other than
1, 2 or 3, a stop whose message is not text or whose `allowContinue` is not true or false, a file larger than 8 MiB, one with more than 1,000 actions and one with an action of more than 10,000 steps are
`{message, allowContinue}`. A Select Object step is the command `select.byNote` with `{note, caseSensitive,
wholeWord}`. `excluded: true` preserves a step but omits it from playback;
an absent or false flag includes the step. Files with Select Object steps use version 4, files with stops and no
Select Object step use version 3, and files with excluded steps and neither use version 2, so older builds refuse them
instead of playing the excluded steps or failing at a stop or a Select Object step; other files use version 1. A file with another `format` or a `version` other than
1 to 4, a stop whose message is not text or whose `allowContinue` is not true or false, a Select Object step whose params `ui.action.insertSelectObject` would refuse, a file larger than 8 MiB, one with more than 1,000 actions and one with an action of more than 10,000 steps are
refused, and no set is added. So is a file whose set `ui.actionSet.save` would write larger than 8 MiB (a file with
less white space, a set name that gets a number, or an `.aia` set), with the error `the action set would be larger
than 8 MiB`. The Actions panel menu's Save Actions… and Load Actions… run these; Load Actions… is
@@ -3081,6 +3087,28 @@ already walks Image Trace. Short agent entry points:
`actionInsertMenuItem` dialog (`find`, `command`, `params`, `set`, `action`, `step`): typing in Find and pressing
Find picks the one item whose menu path, shown name or command id holds every word typed, or lists the matches, and
OK runs this.
- Actions: `ui.action.insertSelectObject {set?, action?, step?, note, caseSensitive?, wholeWord?}` inserts a Select
Object step without running it. The step is `select.byNote {note, caseSensitive, wholeWord}`: during playback it
selects the objects whose Attributes note matches `note`, and the steps after it act on them. `note` loses its
leading and trailing spaces and must then be 1 to 1,024 bytes; `caseSensitive` and `wholeWord` default to false. The
place, the selected step and the result are as `ui.action.insertStop` has them. A missing or empty note, a param of
another type, params that are not an object, an index past the last set, action or step, no action and no
recording, or a step that would give the action more than 10,000 steps or its set's file more than 8 MiB is an
error, and then nothing changes. When the step finds no object, the playback stops there with that error: at
Accelerated the whole batch is undone as for any failing step, and at Step by Step and Pause For the steps already
played stay. The panel's row for the step reads `Select Object: <note>`. The panel menu's Select Object… opens the
`actionSelectObject` dialog, Set Selection (`note`, `caseSensitive`, `wholeWord`, `set`, `action`, `step`), whose OK
runs this; OK is off while the note is empty. The two options, the 1,024-byte limit and stopping when nothing is
found are VectorCraft's own rules.
- Select: `select.byNote {note, caseSensitive?, wholeWord?}` selects the objects whose Attributes note
(`attributes.set {note}`) holds `note` without its leading and trailing spaces, and returns `{count, ids}`. By default
the text may be anywhere in the note and in any letter case. `caseSensitive: true` asks for the same letter case, and
`wholeWord: true` for no letter, digit or `_` right before or after the text. It looks at the objects Select All
takes and the objects inside them, and leaves out hidden and locked objects and art on a locked artboard; in
isolation mode it looks inside the isolated group only. An object whose note matches is selected without the objects
inside it, and a member whose note matches is selected on its own. The objects found replace the selection, in paint
order. The command makes no undo step, and Select › Reselect repeats it. An empty note, a note longer than 1,024
bytes, a param of another type, or no object found is an error, and then the selection stays as it was.
- Actions: `ui.action.continue {}` plays on from the stop the playing action waits at, on the document active now, and
closes the stop's message box (`actionStopMessage`). The next step runs at once, or at Accelerated the steps up to
the next stop as one undo step. It returns `{results, pending, atStop?}`. With no action waiting at a stop it is an
@@ -4293,7 +4321,10 @@ document's raster effects resolution (shadows and outer glows under the art; a b
the object with the image). Type with a geometry effect (Outline Object included) or with fills and strokes of its own
is outlined; type that has no fills or strokes of its own and whose only effects are shadows or outer glows stays
type, with the image under it. A group's or layer's own fills and strokes become objects among its members, and its
members are expanded too. The result is `{ids}`; when an image in the art can't be decoded, the images made from
members are expanded too. A symbol instance whose topmost fill or topmost stroke is visible, has an opacity above 0
and has a geometry effect becomes a group of its art: that fill's effects reshape the filled shapes of the art and that
stroke's effects reshape its stroked shapes, which keep their colors, as the canvas draws them (VectorCraft's own
rule); the instance's other fills and strokes are dropped. The result is `{ids}`; when an image in the art can't be decoded, the images made from
raster effects do not show it, and the result also carries the `warning` that Flatten Transparency gives.
A path's strokes stay strokes, as the
[Expand objects](https://helpx.adobe.com/illustrator/desktop/manage-objects/arrange-objects/expand-objects.html) help
@@ -4817,8 +4848,9 @@ the curve at an end), and the neighbours' handles keep their directions (their l
moved there: the tool's click-and-drag on a segment). `op: "extend"` with `x`, `y` goes on from the `end` (default)
or the `start` of an open subpath (the new end curves into the path unless `corner` is true), and `op: "close"` closes it from that end; `from` says how the old end bends into
the new segment: `"keep"` (default) keeps its curve, `"smooth"` curves it through its neighbours (a point the tool
placed), `"corner"` leaves it without handles. Alt-click or double-click toggles a point with `path.convertAnchor`, and
Backspace/Delete removes the current point with `path.removeAnchor`.
placed), `"corner"` leaves it without handles. Double-click, or Alt-click on any point but an end of an open subpath,
toggles a point with `path.convertAnchor`; an Alt-click on an end of an open subpath only makes it the current point
(`select.anchors`), so the next click extends from it. Backspace/Delete removes the current point with `path.removeAnchor`.
```json
{"name":"run_command","arguments":{"command":"path.curvatureEdit","params":{"id":12,"op":"move","anchor":2,"x":260,"y":140}}}
@@ -5883,8 +5915,11 @@ The profile is read on every `file.new`, so a replayed journal or a recorded act
runs, as `document.open` reads its file when it runs. A file larger than 64 MiB (VectorCraft's own limit) is not read.
When the file cannot be read, is too large or is not a native document, or the request's read roots leave out the
folder (whether or not the file exists), the document starts with the defaults and
`file.new`'s result carries `profileError: {profile, reason}`; the desktop app shows the reason in the status bar. In
the New Document dialog, Manage Profiles lists the profiles with Edit and Reset buttons. Edit is available only when
`file.new`'s result carries `profileError: {profile, reason}`; the desktop app shows the reason in the status bar. The
reason given when the read roots leave out the folder does not name the folder's path. Color profiles the profile's
file carries are installed when they are missing, as `document.open` installs them, and each one that can't be used
adds a line to `file.new`'s `warnings`. The new document's links find their files through relative paths from the
profile's file until the document is saved. In the New Document dialog, Manage Profiles lists the profiles with Edit and Reset buttons. Edit is available only when
there is a profiles folder, and Reset only for a profile that has a file. An unknown profile name is an error that
lists the names.
File diff suppressed because one or more lines are too long
+7 -3
View File
@@ -177,9 +177,13 @@ solids are ([Groups](#groups)), turned about one shared axis.
- The objects stay live: editing the clipping path, the blend's keys or the symbol reshapes the solid.
- An image is refused, alone or in a group: trace it first with Object › Image Trace › Make. The help page routes
images to 3D through Image Trace ([Create 3D vector artwork](https://helpx.adobe.com/illustrator/desktop/special-effects-styles/create-3d-graphics/create-3d-vector-artwork.html)).
A hidden image in a group is left out like any hidden member, and so is an image in a clipping group whose bounds
lie wholly outside the clipping path's bounds, when the image has no visible fills or strokes of its own and
neither the image nor a group holding it inside the clipping group has effects.
A hidden image in a group is left out like any hidden member. An image in a clipping group is left out when its
frame, as its transform places it, lies wholly outside the area that every clipping path around it fills together
(holes of an even-odd or compound clipping path included), when the image has no visible fills or strokes of its
own and neither the image nor a group holding it inside the clipping group has effects. A clipping path hides
everything outside its shape ([the help page](https://helpx.adobe.com/illustrator/using/clipping-masks.html)). An
image that the clips show any part of is refused. Resolving one effect's art cuts image frames to clipping paths at
most 1,024 times (VectorCraft's own limit); past that, the art is refused.
## Rotate
+1 -1
View File
@@ -233,7 +233,7 @@ tools, never checked side by side) isn't captured row by row.
| "intersect" label and snapping to path intersections | partial | #1658 (part of #1602): a point drawn with the Pen, the shape tools or the other drawing tools and an anchor dragged with Direct Selection snap to where paths and ruler guides cross; a moved selection's own anchors and the Width tool don't |
| Construction guides at preference angles while drawing | done | #506 |
| Line extension: the dragged end of a straight segment snaps to the segment's own direction at any angle, past its other end or short of it, with the guide along it | done | #2120; Direct Selection and Curvature, one anchor dragged (with several, the move has no single direction); nearer the horizontal or vertical through the other end, the point lines up with it ("align"), so a nearly level segment can still be straightened |
| Measurement labels while drawing, moving and resizing | partial | sizes and offsets; angle and distance readouts while drawing missing |
| Measurement labels while drawing, moving and resizing | done | sizes and offsets; the segment being drawn is labeled with its distance, angle and offsets by the Line Segment tool, and by the Pen, Curvature and Smart Pen tools with Enable Rubber Band on (#2983) |
| Spacing guides (equal distances) | partial | for moves and bounding-box resizes (#394); not while drawing |
| Distance Guides: Alt/Option over another object, or an empty part of an artboard, shows the selection's distances to it (Smart Guides › Invoke Distance Guides) | done | Selection tool hover with Smart Guides on: the gap between facing edges, else the offsets of matching edges, to another object; the left, right, top and bottom distances to the artboard; labelled in the General unit. The selection is measured as a whole. Nothing while moving or nudging, which the public pages don't describe. [Use Distance Guides](https://helpx.adobe.com/illustrator/desktop/measure-and-align/grids-and-guides/use-distance-guides-for-accurate-placement.html), [Smart Guides options](https://helpx.adobe.com/illustrator/desktop/measure-and-align/grids-and-guides/smart-guides-options.html) |
| Snapping tolerance preference | done | |