vectorcraft/crates/engine/src/cmd
bflatastic 39c14abd35 Fix #1264: placed (linked) files in a .ai file's editing data come in as linked images
A .ai file with placed files opened from its PDF part (no guides, no sublayers,
no hidden objects), because the editing-data reader stopped at them.

- Lexer: a placed file's preview section is one token (it was skipped).
- Reader: %AI5_BeginPlace ... ~ becomes a linked image with the file's path,
  showing the preview the data keeps of it (premultiplied ARGB, capped at
  MAX_PIXELS, its rows checked against the bytes there), in its place: the
  matrix takes the file's pixels from the canvas, where they start at the point
  of art space's origin. A placed file without a preview, a path or a matrix
  still makes the file open from its PDF part.
- The open result lists one warning saying linked pictures show the
  low-resolution preview until their files are found (rows in the catalogs).
- Engine: a link nothing is known of whose image shows a preview is read where
  it is found as the document opens, into the image's bounds, and isn't
  reported as modified.
- Tests: lexer, reader (hand-written data), engine open with the link missing
  and found, fuzz tokens.
- Docs: file-format-parity, target-app-parity, gaps, ROADMAP.
2026-10-12 17:46:01 +07:00
..
clipboard #1244: smaller objects: Node 352 -> 152 bytes, NodeKind 200 -> 80, and a cheaper undo estimate 2026-10-12 11:02:32 +07:00
fileio PDF import: a PDF saved with its editing data opens on its artboard with its bleed 2026-10-12 16:44:16 +07:00
findfiles Fix #832: --automation-read-root and --automation-write-root confine the MCP server's files 2026-10-10 14:27:24 +07:00
place #1244: smaller objects: Node 352 -> 152 bytes, NodeKind 200 -> 80, and a cheaper undo estimate 2026-10-12 11:02:32 +07:00
rasterfx #1244: smaller objects: Node 352 -> 152 bytes, NodeKind 200 -> 80, and a cheaper undo estimate 2026-10-12 11:02:32 +07:00
appearance.rs Paint: fill, stroke, gradient and Appearance panel commands that change nothing record no undo step 2026-10-12 09:43:15 +07:00
assets.rs fix(assets): validate all explicit export object ids before collecting 2026-10-11 01:46:24 +07:00
attributes.rs #1244: smaller objects: Node 352 -> 152 bytes, NodeKind 200 -> 80, and a cheaper undo estimate 2026-10-12 11:02:32 +07:00
brushsym.rs Graph designs and marker designs: Object › Graph › Design… and Marker… 2026-10-12 06:42:49 +07:00
buildcmds.rs #1244: smaller objects: Node 352 -> 152 bytes, NodeKind 200 -> 80, and a cheaper undo estimate 2026-10-12 11:02:32 +07:00
clipboard.rs #1244: undo history bounded by bytes, without lookup tables or repeated selections in its steps 2026-10-12 11:02:17 +07:00
colorcmds.rs Fix #122: colour adjustment live effects (Effect > Color Adjustments) 2026-10-06 00:42:26 +07:00
colormgmt.rs Fix #832: --automation-read-root and --automation-write-root confine the MCP server's files 2026-10-10 14:27:24 +07:00
colortheme.rs M3.96: Color Themes panel with a local theme library 2026-10-05 05:08:28 +07:00
create.rs #1244: smaller objects: Node 352 -> 152 bytes, NodeKind 200 -> 80, and a cheaper undo estimate 2026-10-12 11:02:32 +07:00
css.rs M4.96: Window › CSS Properties shows, copies and exports the CSS of the selection 2026-10-05 16:03:11 +07:00
cut.rs Review #986: the rect through finite_numbers; rustfmt 2026-10-11 01:45:18 +07:00
distortcmds.rs #1244: smaller objects: Node 352 -> 152 bytes, NodeKind 200 -> 80, and a cheaper undo estimate 2026-10-12 11:02:32 +07:00
docinfo.rs #1244: smaller objects: Node 352 -> 152 bytes, NodeKind 200 -> 80, and a cheaper undo estimate 2026-10-12 11:02:32 +07:00
docmenu.rs #1244: undo history bounded by bytes, without lookup tables or repeated selections in its steps 2026-10-12 11:02:17 +07:00
docsetup.rs M4.20: Document Setup with bleed, transparency grid, paper and type options 2026-10-05 08:28:16 +07:00
draw2.rs fix(selection): 線分の選択と削除をアンカーから分ける (#1278) 2026-10-12 07:25:36 +07:00
edit.rs feat: change and reset the ruler origin (#1212) 2026-10-12 15:17:24 +07:00
effectcmd.rs M9: add live Revolve with artboard rotation and lighting controls 2026-10-10 23:44:46 +07:00
expand.rs Placed documents: Links commands check, update, relink and break their links 2026-10-08 12:20:51 -07:00
fileinfo.rs M4.55: File Info with author, description, keyword chips, rating and copyright, written to SVG, PDF and PNG 2026-10-05 09:55:47 +07:00
flatten.rs #1244: smaller objects: Node 352 -> 152 bytes, NodeKind 200 -> 80, and a cheaper undo estimate 2026-10-12 11:02:32 +07:00
fontfiles.rs Links: Find in Folder… looks for missing linked files in a folder and its subfolders 2026-10-12 08:16:41 +07:00
fonts.rs Part of #394: Show Font Names in English labels the font menus. 2026-10-10 14:10:31 +07:00
freeform.rs Review: width-point removal reuses point_indices; ROADMAP (#1079) 2026-10-11 07:43:14 +07:00
gradient.rs #1007: Reverse Gradient mirrors off-centre midpoints 2026-10-11 03:51:31 +07:00
graph.rs #1244: smaller objects: Node 352 -> 152 bytes, NodeKind 200 -> 80, and a cheaper undo estimate 2026-10-12 11:02:32 +07:00
halftone.rs Fix #122: Object > Vector Halftone 2026-10-06 00:42:26 +07:00
help.rs Community links: Help menu (Discord, ArtCraft website, app page, GitHub), Discord button in the header, links on the About and Home screens; engine help.* commands return the URLs (menu clicks open them via the host's browser service) 2026-10-01 14:37:29 -04:00
inline.rs M7: inline symbols in text 2026-10-08 15:45:34 -07:00
layer.rs Layers: art moved into a hidden or locked layer, or hidden by a data set, is deselected 2026-10-12 14:50:00 +07:00
layerpanel.rs Layers: art moved into a hidden or locked layer, or hidden by a data set, is deselected 2026-10-12 14:50:00 +07:00
library.rs Fix #926: the Libraries panel's search, groups and library export/import 2026-10-10 17:17:01 +07:00
linkfiles.rs Links: Find in Folder… looks for missing linked files in a folder and its subfolders 2026-10-12 08:16:41 +07:00
links.rs Fix #1264: placed (linked) files in a .ai file's editing data come in as linked images 2026-10-12 17:46:01 +07:00
live.rs #1244: smaller objects: Node 352 -> 152 bytes, NodeKind 200 -> 80, and a cheaper undo estimate 2026-10-12 11:02:32 +07:00
maskedit.rs #1244: smaller objects: Node 352 -> 152 bytes, NodeKind 200 -> 80, and a cheaper undo estimate 2026-10-12 11:02:32 +07:00
menucmds.rs #1244: smaller objects: Node 352 -> 152 bytes, NodeKind 200 -> 80, and a cheaper undo estimate 2026-10-12 11:02:32 +07:00
mod.rs Links: Find in Folder… looks for missing linked files in a folder and its subfolders 2026-10-12 08:16:41 +07:00
newart.rs #1244: smaller objects: Node 352 -> 152 bytes, NodeKind 200 -> 80, and a cheaper undo estimate 2026-10-12 11:02:32 +07:00
newdoc.rs Part of #394: new and imported documents use the Gridline every and Subdivisions preferences 2026-10-12 08:02:13 +07:00
object.rs Part of #394: art moved whole with direct-selected anchors follows Transform Pattern Tiles 2026-10-12 14:50:00 +07:00
opacitymask.rs #1244: smaller objects: Node 352 -> 152 bytes, NodeKind 200 -> 80, and a cheaper undo estimate 2026-10-12 11:02:32 +07:00
overprint.rs M3.76: Attributes panel with overprint, centre point, path direction, fill rule, image map, URL and note 2026-10-05 03:46:04 +07:00
package.rs Review fixes for #777: report sections per document, fmt, docs and ROADMAP 2026-10-10 09:32:12 +07:00
paint.rs Paint: fill, stroke, gradient and Appearance panel commands that change nothing record no undo step 2026-10-12 09:43:15 +07:00
panelcmds.rs Graphs keep their label formatting when drawn again 2026-10-12 06:42:50 +07:00
path.rs Part of #394: art moved whole with direct-selected anchors follows Transform Pattern Tiles 2026-10-12 14:50:00 +07:00
pathops.rs fix: Pathfinder results keep the source's name and SVG id (#1293) 2026-10-12 15:17:01 +07:00
patterncmds.rs Robustness: VectorCraft never crashes — no panics in shipped code 2026-10-05 06:28:59 +07:00
pdfcmds.rs M4.44: PDF presets: built-ins in code, saved presets, Edit > PDF Presets 2026-10-05 10:40:22 +07:00
perspgrid.rs Fix #321: the perspective grid hides while a perspective tool is chosen 2026-10-08 03:27:36 +07:00
plugin.rs Fix #832: --automation-read-root and --automation-write-root confine the MCP server's files 2026-10-10 14:27:24 +07:00
prefscmds.rs #1244: undo history bounded by bytes, without lookup tables or repeated selections in its steps 2026-10-12 11:02:17 +07:00
print.rs EPS import: bound what hostile editing data can cost, and say when it can't be read 2026-10-09 03:49:49 -04:00
printadvanced.rs #1244: smaller objects: Node 352 -> 152 bytes, NodeKind 200 -> 80, and a cheaper undo estimate 2026-10-12 11:02:32 +07:00
printpresets.rs M4.79: print presets in the Print dialog and Edit > Print Presets 2026-10-05 16:30:46 +07:00
printtiling.rs M4.80: Print Tiling tool and View > Show Print Tiling 2026-10-05 17:26:59 +07:00
rasterfx.rs #1244: smaller objects: Node 352 -> 152 bytes, NodeKind 200 -> 80, and a cheaper undo estimate 2026-10-12 11:02:32 +07:00
recolor.rs M3.95: Color Guide Limit to Library and Edit or Apply Colors without art 2026-10-05 05:08:15 +07:00
recovery.rs #1244: a crash between a recovery copy's document and its details keeps every image 2026-10-12 11:03:01 +07:00
select.rs #1244: smaller objects: Node 352 -> 152 bytes, NodeKind 200 -> 80, and a cheaper undo estimate 2026-10-12 11:02:32 +07:00
shaper.rs #1244: smaller objects: Node 352 -> 152 bytes, NodeKind 200 -> 80, and a cheaper undo estimate 2026-10-12 11:02:32 +07:00
slices.rs #1244: smaller objects: Node 352 -> 152 bytes, NodeKind 200 -> 80, and a cheaper undo estimate 2026-10-12 11:02:32 +07:00
stroke.rs Review #987: test the next-object stroke with nothing selected; rustfmt 2026-10-11 01:46:22 +07:00
style.rs #1244: smaller objects: Node 352 -> 152 bytes, NodeKind 200 -> 80, and a cheaper undo estimate 2026-10-12 11:02:32 +07:00
stylelib.rs Swatches: swatch.library.copyToUser copies a loaded library into User Defined 2026-10-09 13:32:59 -07:00
swatch.rs M3.79: Edit or Apply Color Group opens Recolor Artwork on a colour group 2026-10-05 04:20:27 +07:00
swatchlib.rs #1244: undo history bounded by bytes, without lookup tables or repeated selections in its steps 2026-10-12 11:02:17 +07:00
tabs.rs M7: per-paragraph paragraph attributes 2026-10-08 15:07:13 -07:00
textedit.rs #1244: undo history bounded by bytes, without lookup tables or repeated selections in its steps 2026-10-12 11:02:17 +07:00
textstyles.rs #1001: named text styles take leading, kerning, mojikumi and other attributes left out at their defaults 2026-10-11 03:51:06 +07:00
textwrap.rs #1244: smaller objects: Node 352 -> 152 bytes, NodeKind 200 -> 80, and a cheaper undo estimate 2026-10-12 11:02:32 +07:00
threads.rs M7: inline symbols in text 2026-10-08 15:45:34 -07:00
typecmd.rs #1244: smaller objects: Node 352 -> 152 bytes, NodeKind 200 -> 80, and a cheaper undo estimate 2026-10-12 11:02:32 +07:00
typemenu.rs Type: Change Case, Smart Punctuation and other commands that change nothing record no undo step 2026-10-12 08:45:22 +07:00
variablecmds.rs Layers: art moved into a hidden or locked layer, or hidden by a data set, is deselected 2026-10-12 14:50:00 +07:00
views.rs Review: New View reads its centre with finite_numbers; ROADMAP (#1058) 2026-10-11 07:13:37 +07:00
wand.rs M3.28: proxies look through groups like the paint commands (a group shows its contents' paint, and contents that differ make a "?" proxy), the toolbar and panels share the engine's Session::proxy_paints, Magic Wand and Select Text by Font bump the revision so the cached "?" state follows them; double-click proxy test 2026-10-04 18:22:05 +07:00
webexport.rs #983: supersample Art Optimized edges in exports 2026-10-11 03:48:03 +07:00
xform.rs Part of #394: art moved or duplicated with an artboard follows Transform Pattern Tiles 2026-10-12 00:16:21 +07:00