Commit Graph
5415 Commits
Author SHA1 Message Date
BFlat 4caa68a268 Merge pull request #3951 from dotCooCoo/fix/layer-ids-refused-by-object-commands
Arrange: a layer id given to Send to Back and the other selection commands is refused
2026-10-24 19:00:42 +07:00
BFlat ceec6c32d4 Merge pull request #3967 from Taha-Mahmoodi/fix/commands-accept-id
Fix #3965: id works as ids of one with nothing selected wherever params take ids?|id?
2026-10-24 19:00:25 +07:00
dotCooCoo 8ce6177c62 Arrange: a layer id given to Send to Back and the other selection commands is refused
Squashed from #3951 onto main.
2026-10-24 18:16:24 +07:00
BFlat dae0edb39c Merge pull request #3941 from fabian-co/feat/ai-palette-swatches
Open .ai files with their swatches (palette, colour groups, unused inks); Swatches panel keeps the art's swatch after deselecting
2026-10-24 18:09:08 +07:00
BFlat 90844e3ab3 Merge pull request #3973 from vecteza/feat/dimension-smart-guides
Dimension tool: Linear picks show and snap to Smart Guides
2026-10-24 18:08:52 +07:00
BFlat c62931c283 Merge pull request #2841 from dotCooCoo/fix/locked-or-hidden-slices-deselect
Slices: Lock Slices and Hide Slices deselect the slices and keep them deselected
2026-10-24 18:08:35 +07:00
BFlat 75dc87fabd Merge pull request #3948 from dotCooCoo/fix/trace-and-style-prompt-runs
MCP: the trace-and-style prompt's steps run as written
2026-10-24 18:08:20 +07:00
BFlat 18d0e3a6ea Merge pull request #3956 from dotCooCoo/fix/recolor-group-keeps-swatch-links
Recolor: recolor.apply with a color group keeps art linked to the group's global swatches
2026-10-24 18:08:04 +07:00
BFlat fd256b2d63 Merge pull request #3958 from dotCooCoo/feat/eps-central-file
EPS: Use Artboards also writes a central file with every artboard
2026-10-24 18:07:48 +07:00
BFlat 99b4a25f2d Merge pull request #3976 from dotCooCoo/feat/find-by-bounds-and-select
Find Objects: document.find filters by bounds, size and anchor count and can select the matches
2026-10-24 18:07:33 +07:00
BFlat fb34817531 Merge pull request #3982 from dotCooCoo/feat/image-trace-preview
Image Trace: a Preview checkbox chooses whether setting changes trace at once
2026-10-24 18:07:22 +07:00
Taha-Mahmoodi 97f84723ef Fix #3965: an unresolved step reference given as id is refused under the command's name; effect.apply keeps its effect-naming id 2026-10-24 17:57:21 +07:00
Taha-Mahmoodi c40113b755 Fix #3965: a malformed or unknown id is refused under the command's name, never replaced by the selection 2026-10-24 17:57:20 +07:00
Taha-Mahmoodi 8c5714a260 Fix #3965: id works as ids of one with nothing selected wherever params take ids?|id? 2026-10-24 17:57:18 +07:00
BFlat f924c69f3e Merge pull request #3934 from dotCooCoo/feat/live-object-cache-checked-before-resource-walk
Render: an unchanged live object or effect art is not walked again for its resources
2026-10-24 17:55:17 +07:00
BFlat 7644d11c7b Merge pull request #3962 from dotCooCoo/feat/brush-pieces-kept-per-copy
Render: brush art of symbol instances, inline graphics and repeat copies is kept between frames
2026-10-24 17:55:01 +07:00
BFlat 391febaba2 Merge pull request #3963 from dotCooCoo/feat/inspect-file-info-title
MCP: document.inspect and document.open report the File Info title as fileInfoTitle
2026-10-24 17:54:46 +07:00
BFlat 6b29d3a551 Merge pull request #3971 from dotCooCoo/fix/mcp-file-tools-absolute-paths
MCP: the file tools send paths made absolute against the server's working directory
2026-10-24 17:54:31 +07:00
BFlat c3b7bfb0b9 Merge pull request #3981 from dotCooCoo/fix/mcp-render-matches-png-export
MCP: screenshot and render_preview draw edges as a PNG export does
2026-10-24 17:54:16 +07:00
BFlat 5b2d460e06 Merge pull request #3970 from dotCooCoo/fix/trace-grouping-grid
Image Trace: Auto Grouping looks up containing paths in a grid instead of testing every pair
2026-10-24 17:54:01 +07:00
BFlat d30caeca61 Merge pull request #3972 from dotCooCoo/fix/trace-params-unknown-keys
Image Trace: imageTrace.make refuses unknown keys inside params
2026-10-24 17:53:46 +07:00
BFlat 5fb1d863bb Merge pull request #3942 from dotCooCoo/fix/trace-cut-out-edge
Image Trace: the semi-transparent edge of a cut-out image traces as the color beside it
2026-10-24 17:53:31 +07:00
BFlat 2bc6244ad5 Merge pull request #3947 from dotCooCoo/fix/recolor-colors-without-selection
Recolor: recolor.colors and recolor.reduce read the art Select All takes when nothing is selected
2026-10-24 17:53:16 +07:00
BFlat da3a2f1839 Merge pull request #3943 from dotCooCoo/fix/select-same-matches-compound-paths
Select: Same commands for paint, appearance and shape select compound paths
2026-10-24 17:53:01 +07:00
BFlat d6b1312951 Merge pull request #3949 from dotCooCoo/fix/trace-flat-sliver
Image Trace: a filled traced path that straightens to no area is left out
2026-10-24 17:52:45 +07:00
BFlat 493d3ce2bf Merge pull request #3925 from cmain/fix/print-landscape-spool
Print: landscape pages print upright on macOS print queues
2026-10-24 17:52:30 +07:00
BFlat 149718393b Merge pull request #3959 from dotCooCoo/fix/issue-3799
Fix #3799: Alt held at the press draws a straight Pencil line at any angle
2026-10-24 17:52:14 +07:00
BFlat 1428c3f822 Merge pull request #3966 from Taha-Mahmoodi/fix/outlines-keep-ruby
Fix #3964: Create Outlines, EPS, EMF/WMF and legacy .ai keep the ruby where the canvas draws it
2026-10-24 17:51:59 +07:00
BFlat 0b31a3342b Merge pull request #3979 from dotCooCoo/fix/remembered-artboard-pick
Save: a remembered artboard pick follows the artboards it named
2026-10-24 17:51:44 +07:00
BFlat 7f8334e2fa Merge pull request #3977 from dotCooCoo/fix/outlines-of-threaded-frame-keep-text-once
Threaded text: Create Outlines and Expand on a frame no longer duplicate its text
2026-10-24 17:51:29 +07:00
BFlat cacca3e9aa Merge pull request #3938 from dylanmtaylor/security/review-findings-render
Security: render and PDF export bounds for symbol expansion, dotted guides, blending groups and pinned images
2026-10-24 17:51:13 +07:00
BFlat 04f5fb1df0 Merge pull request #3983 from Silvertree2010/fix/h1946-svg-import-css-parser-ignores-im
Match !important case-insensitively in SVG import CSS parser
2026-10-24 17:50:58 +07:00
BFlat 5adad7888a Merge pull request #3924 from Taha-Mahmoodi/fix/pdf-scan-literal-stream
PDF import: the pre-open stream scan doesn't let a "stream" inside a literal string hide the real stream after it
2026-10-24 17:50:42 +07:00
BFlat 0e9d65b169 Merge pull request #3930 from dylanmtaylor/security/review-findings-misc
Security: linear work for shortcut review, gradients, recovery names, include cycles, batch references, DOCX styles, DXF layouts and long strokes
2026-10-24 17:50:27 +07:00
BFlat abb5b9f773 Merge pull request #3933 from dylanmtaylor/security/review-findings-file-authority
Security: file authority for stored paths, linked files, placed documents, font folders, recovery areas and atomic saves
2026-10-24 17:50:11 +07:00
BFlat fb919479b1 Merge pull request #3936 from dylanmtaylor/security/review-findings-effects
Security: bounded flattening, plug-in budgets and caches, loaded textures, Revolve paint copies, color book and ICC names
2026-10-24 17:49:56 +07:00
BFlat c799240ef5 Merge pull request #3939 from dylanmtaylor/security/review-findings-docmodel
Security: document model budgets for live art, clipping runs, placed documents, graph masks and path reading
2026-10-24 17:49:41 +07:00
bflatastic 9090afea1c .ai palette: color groups are capped as swatches are 2026-10-24 17:46:36 +07:00
Fabian GrajalesandClaude Opus 5.5 bd4804b4da Swatches panel keeps the art's swatch highlighted after deselecting
Deselecting made the panel jump to the swatch of the paint new art gets
(White). It now keeps the deselected art's swatch until the paints for new
art change (a swatch or colour picked with nothing selected) or another
document shows; selecting other art highlights its swatch.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 17:46:20 +07:00
Fabian GrajalesandClaude Opus 5.5 1adbf259f7 Open .ai files with their swatches: the palette, its colour groups and unused spot colours
The editing data's palette (%AI5_BeginPalette) was skipped, so a .ai file
opened with the default swatches plus only the spot colours its art used:
inks the art doesn't use (a Pantone set kept in the file) and colour groups
were lost. The palette is now read in order (process, spot in CMYK, RGB or
Lab, and global colours, gradients and patterns, colour groups; versioned
content read once) and replaces the default swatches.

Xs/Xz (Registration at a tint, as printer's marks use it) are read as the
Registration swatch: before, art painted with them stopped the editing data
from being read at all.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 17:46:20 +07:00
vectezaandClaude Opus 5.5 1a6bc267d5 Dimension tool: Linear picks show and snap to Smart Guides
Picking the two points of a Linear dimension snapped to anchors and to the
line under the pointer, but showed no guides and ignored the art around it.
The picks now go through the drawing tools' Smart Guides (DrawSnap), hovering
too, so the guides show before each click: a point slides into line with other
objects' anchors and centres, and the second onto the construction guides
through the first. An anchor of the line under the pointer still wins (it
links the dimension to that path), then a guide, then the closest point of the
line (#2432). The guides go once the dimension is being placed.

Test: linear_picks_show_and_snap_to_smart_guides (fails on the old tool, which
showed no overlays while hovering). docs/dimensions.md updated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 17:46:19 +07:00
bflatastic 381b788f56 Slices: Lock Slices and Hide Slices deselect the slices and keep them deselected
Squashed from #2841 onto main.
2026-10-24 17:46:19 +07:00
dotCooCoo 4ca0c26f2f MCP: the trace-and-style prompt's steps run as written
When an agent followed the trace-and-style prompt step by step, it
failed at the second step: open_file leaves the image unselected, so
imageTrace.make returned "nothing selected". The text did not say that
the Default preset traces in black and white. No step expanded the
trace, so the source image stayed in the document. The set_paint step
gave every traced shape the same paint. Step 2 also said that
screenshots show the Image Trace view, while render_preview and
screenshot without window draw the tracing result. Step 1 said that
the image opens at its own pixel size, while an image that declares a
resolution opens at its size at that resolution.

The steps now select the image with select.all (or name its id), say
which presets keep colors, expand the trace with imageTrace.expand or
imageTrace.makeAndExpand, recolor with recolor.colors and recolor.apply,
and check the result with render_preview or screenshot. The prompt's
name, arguments and defaults are unchanged.
2026-10-24 17:46:15 +07:00
dotCooCoo a7ef6ce78c Recolor: art linked to a group swatch keeps its color model
With model "keep" (the default), a row whose new color is in another
color model gives linked art the color converted into the art's model.
That art no longer stays linked to the rewritten group swatch, which
holds the color in its own model, and the reply's note reports the
conversion.
2026-10-24 17:46:15 +07:00
dotCooCoo b8436385e8 Recolor: art a row leaves unchanged loses its link to a rewritten group swatch
When recolor.apply with a group rewrites a global swatch with another
color than the row of the art linked to it, and that row leaves the art's
color as it is, the art now keeps the row's color and is no longer linked
to the swatch. Before, the link stayed and the group's rewrite gave the
art the swatch's new color.
2026-10-24 17:46:15 +07:00
dotCooCoo 5100a52a12 Recolor: recolor.apply with a color group keeps art linked to the group's global swatches
Art linked to a global swatch of the group that recolor.apply rewrites stays
linked when the swatch takes its row's new color: it shows that color at its
tint, and a later swatch.edit still reaches it. Before, the art took the new
color unlinked. With group, the reply adds relinked, the count of other linked
paints that followed the group's new colors.
2026-10-24 17:46:15 +07:00
dotCooCoo 640ddbd4c0 EPS: Use Artboards also writes a central file with every artboard
With Use Artboards and two or more artboards, EPS export now writes a
central file under the path's own name before the file of each artboard.
The central file contains the whole document, and its bounding box is
the visible art, as in an export without Use Artboards. An export of a
single chosen artboard still writes one file at the path's name, and
Export for Screens still writes one EPS per artboard. When no art shows,
only the artboard files are written.

Docs: the useArtboards params text, the MCP export tool's range text,
docs/mcp.md, docs/control-protocol.md and docs/target-app-parity.md.
2026-10-24 17:46:14 +07:00
dotCooCoo dbc1b69f1c Find Objects: document.find filters by bounds, size and anchor count and can select the matches
document.find took only name, kind and text, so removing hairline slivers or
every object in one region needed the whole inspect tree and a filter
written outside the app. It now also takes within and intersects
([x, y, width, height] in document points), min and max width, height,
thickness (the smaller side) and area of the geometric bounds, and min and
max anchor count (a compound path counts its members together). Each given
filter must match, and limits are inclusive.

select: true also selects the matches, leaving out hidden and locked
objects, matches inside another match, and compound path members unless
the compound path is isolated; the reply adds selected. Select > Reselect
repeats the find, and an action being recorded records a find that
selects. The count that select.color, the Select > Same commands and the
Select > Object commands report is now the number of objects selected,
after Lock Guides leaves out guide paths.
2026-10-24 17:46:13 +07:00
dotCooCoo d29790b34e Image Trace: a Preview checkbox chooses whether setting changes trace at once
Every change in the Image Trace panel traced the selected Image Trace
object again at once, and there was no way to adjust several settings
first and trace once.

The panel now has a Preview checkbox before Trace. It is on by default
and kept with the UI preferences; Reset to Default leaves it. With
Preview off, setting changes wait in the panel until Trace applies them
as one undo step, or until Preview is turned on again. When Preview is
turned on with no Image Trace object selected, the object is traced
with the waiting changes when it is selected again. A change of view
keeps the waiting settings, and selecting another Image Trace object
shows that object's own settings. The control channel's ui.set takes
imageTracePreview.
2026-10-24 17:46:12 +07:00
dotCooCoo 381cfea823 Render: an unchanged live object or effect art is not walked again for its resources
To check what it kept for a live object, or for effect art made from
live objects, type or symbols, the renderer walked the object in every
frame to hash the symbols, patterns and placed files it shows, and it
looked up each symbol instance it found by name in the list of every
symbol. At 1000 x 1000 pixels, the walk took most of the frame on a
page of 2,000 envelopes around instances of the last 2,000 of 10,000
symbols: 83 ms a frame when every frame walked them.

The renderer now keeps what the walk found with the node, which it
holds weakly, and with the document's symbols and patterns as the walk
read them. A later frame makes the key from what was kept while the
node and the document's symbols and patterns stay the same, and walks
the node again when any of them changes. A walk that finds a placed
file is not kept. An evaluation that the live cache does not keep, such
as a thumbnail's copy, is no longer walked. The same page now takes
30 ms a frame, with the same pixels.

Docs: docs/target-app-parity.md
2026-10-24 17:29:33 +07:00