A prefs.set step, recorded inside a command.batch or loaded from a
.vcactions file, can hold a folder preference such as scratchPrimary.
- ui.inspect under automation read roots now checks such a step's
value for {key, value} and each entry of values, also in a batch
step's commands at any depth, as written and trimmed, including bare
names, subfolders and file: URLs. An empty value and the scratch disk
choices Startup and None stay.
- Any other step text written as an absolute path or a file: URL
outside the read root is left out also when whitespace surrounds it.
- Save Actions refuses a set with a prefs.set step that holds a folder
value and names the action and the preference instead of writing the
file. An empty folder and the scratch disk choices save.
- prefs.export leaves out scratchPrimary and scratchSecondary, like the
other folder preferences. prefs.import refuses a scratch disk set to a
folder and still reads Startup, None and an empty value.
The folder list, the scratch disk choices and the folder check now live
in one place in the engine. Docs: docs/mcp.md, params text and a
progress line in docs/target-app-parity.md.
file.newProfiles.edit and file.newProfiles.reset returned the automation
access check and file system errors with the profile file's whole path,
so a client confined to read roots that leave out the preferences folder
learned where the folder is. The errors now go through naming_in_error,
like other paths the client did not give: whole inside the read roots,
otherwise by file name. docs/mcp.md and the params text say so.
The widget's Constrain button was grayed out in Free Distort, and
neither it nor Shift changed a Free Distort corner drag. Constrain is
now available in Free Transform and Free Distort, and stays unavailable
in Perspective Distort.
With Constrain on, or Shift held, a corner dragged in Free Distort
moves only along the line through the opposite corner, in the box's
own proportions, and the other three corners stay in place. On a
turned box the line runs through the box's own corners. A box with no
size leaves the corner where it is. Cmd/Ctrl+Alt+Shift on a corner
still drags in Perspective Distort. The measurement label shows how
far the corner moved.
The Live Paint Selection tool always showed the plain arrow. Its cursor
now says what a click at the pointer selects, by the same rules as the
click (Alt, Select Fills, Select Strokes, locked, hidden and isolated
groups): the arrow with a filled square over a face, with a short line
between two anchor marks over an edge, and with an x where a click
selects no face or edge. From a press to the release the cursor keeps
the look it had at the press. Use Precise Cursors shows the crosshair.
- Cursor: LivePaintSelectFace, LivePaintSelectEdge and
LivePaintSelectOutside, with cursors.toml entries and drawn glyphs.
- Tests: live_paint_selection_cursor_shows_what_a_click_selects,
live_paint_selection_shows_the_arrow_with_a_face_edge_or_x_badge, and
the precise-cursor list.
Docs: docs/mcp.md, docs/target-app-parity.md.
file.close {index} on a tab other than the current one made the
document now at the closed index current and reset the tool, so the
document the user was working in went to the back. The current
document now stays current, found by its id as document.move does, and
its tool keeps its state. Closing the current tab still makes its
neighbor current.
Docs: docs/mcp.md, docs/target-app-parity.md.