vectorcraft/crates/engine/src/cmd
Fahri Meral eb0f2ff2e4 variables: let one object be driven by several variables
`bindings` mapped an object id to a single variable name, so binding an object
to a second variable silently dropped the first — a binding lost with nothing
to show for it. The reference app binds the selected object to the selected
variable, one click at a time, and nowhere says a second binding replaces the
first (https://helpx.adobe.com/illustrator/desktop/automate-visualize-data/
automate-actions/work-with-variables.html), so this allows several instead.

`bindings` is now a set of variable names per object. `dataset.select` walks
them in the order the variables are defined, which keeps two text variables on
one object deterministic (the later one's value is what is left, and `applied`
counts both). `variable.bind` reports `bound` (added) and `already` (was there
already); `variable.unbind` takes an optional `variable` to drop one binding
instead of all of them.

This is done before the field ships rather than after: `variables` has never
been in a released file, so the shape can still change for free. Once a version
with it is out, the same change would need a format version bump and a
migration, since `crates/format` keeps every version from 1 loading.

A strict superset of what worked before: every binding a document had is still
there and still applied, in the same order.

cargo xtask ci: all 7 steps pass.
2026-10-10 23:34:21 +07:00
..
clipboard Merge #616: Fix #597: an image copied in a browser pastes as the picture, not its address 2026-10-09 05:26:43 +07:00
fileio Fix #926: the Libraries panel's search, groups and library export/import 2026-10-10 17:17:01 +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 Merge storytold/main into AF.3 native Affinity import 2026-10-09 04:26:07 +00:00
appearance.rs Colour graph series through Group Selection 2026-10-10 14:33:40 +07:00
assets.rs M4.65: Asset Export panel and the Assets tab of Export for Screens 2026-10-05 15:24:54 +07:00
attributes.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
brushsym.rs Part of gap 5: Scatter, Art and Pattern Brush Options 2026-10-10 17:48:05 +07:00
buildcmds.rs Image Trace: Flat Logo mode (sub-pixel edges, restored corners, true lines and circles) 2026-10-09 17:57:04 +11:00
clipboard.rs Fix #745: a working Libraries panel of graphics, colours and text styles 2026-10-09 20:12:59 +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 Merge #631: Type: Character Alignment on the ICF top and bottom (ideographic character face) 2026-10-09 06:24:04 +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 Fix #122: Mirror & Cut, Line Cut and Rectangle Cut tools 2026-10-06 00:42:26 +07:00
distortcmds.rs Placed documents: the object, drawn exactly and kept as art by every exporter 2026-10-08 12:20:51 -07:00
docinfo.rs Fix #813: type can name an installed version of its font 2026-10-09 19:26:51 +00:00
docmenu.rs Fix #903: Reselect repeats a Same command after Deselect 2026-10-10 12:55:37 +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 Part of #852: Brush Options for Calligraphic and Bristle brushes, pen pressure 2026-10-10 12:15:18 +07:00
edit.rs Fix #786: clear exact compound members and explicit targets 2026-10-09 11:33:23 -06:00
effectcmd.rs Fix #221: Effect > Pathfinder works on several selected objects 2026-10-07 02:21:06 +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 Part of ROADMAP gap 2: Radial Blur, Smart Blur and Unsharp Mask on a pixel-filter pipeline 2026-10-09 13:30:31 +07:00
fontfiles.rs Fix #832: --automation-read-root and --automation-write-root confine the MCP server's files 2026-10-10 14:27:24 +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 M3.97: freeform points drag out to delete, spread ring drags, Lines mode draws lines 2026-10-05 04:43:43 +07:00
gradient.rs M14.4: no panics in the shipped code main gained since the no-panics branch 2026-10-05 06:39:18 +07:00
graph.rs Graph Type: tick mark length and count per axis, category tick marks, axis label prefix and suffix 2026-10-10 22:38:35 +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 M11: honor Move Artwork in artboard coordinate edits 2026-10-10 09:49:24 +02:00
layerpanel.rs Layers: sublayers are layers, not objects, and every row has a command 2026-10-07 22:29:15 +07:00
library.rs Fix #926: the Libraries panel's search, groups and library export/import 2026-10-10 17:17:01 +07:00
links.rs Links: one watch for changed linked files 2026-10-10 20:19:27 +07:00
live.rs M8.17: Edit envelopes on the canvas: Edit Contents, mesh points and handles, Control bar 2026-10-06 12:16:59 +07:00
maskedit.rs M3.86: Alt-click the mask thumbnail to view only the mask 2026-10-05 03:11:04 +07:00
menucmds.rs Merge #687: Rearrange All Artboards layouts, order and one click 2026-10-09 12:28:10 +07:00
mod.rs variables: data-merge model and engine commands 2026-10-10 23:32:59 +07:00
newart.rs M14.4: no panics in the shipped code main gained since the no-panics branch 2026-10-05 06:39:18 +07:00
newdoc.rs Fix #681: Rearrange All Artboards layouts, order and one-click access 2026-10-09 12:22:48 +07:00
object.rs Fix #938: Live Corner widgets on every selected path 2026-10-10 17:19:52 +07:00
opacitymask.rs M3.69: target circles target layers, groups and objects; drag them to move appearances 2026-10-05 02:15:41 +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 Colour graph series through Group Selection 2026-10-10 14:33:40 +07:00
panelcmds.rs Type: Kinsoku Set — Hard (today's set), Soft and None (#633) 2026-10-09 17:26:37 +09:00
path.rs Fix #776: the Pen continues any open path and joins two paths 2026-10-09 23:59:50 +07:00
pathops.rs Fix #87: rust-version is 1.95, and clippy 1.95 passes 2026-10-05 23:05:32 +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 Review: System Title Bar only where it applies, docs, title repaint 2026-10-10 21:15:21 +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 M4.81: Print advanced options: overprints, flattener, printer profile, bitmap 2026-10-05 17:27:00 +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 Fix #827: shadows and glows keep their blend modes in PDF 2026-10-10 10:28:04 +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 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
select.rs Fix #903: Reselect repeats a Same command after Deselect 2026-10-10 12:55:37 +07:00
shaper.rs M2.9: add editable Shaper groups and shape orientation steps 2026-10-08 22:52:23 +01:00
slices.rs M4.90: Save for Web (Legacy) previews and saves optimised GIF, JPEG, PNG-8 and PNG-24 images, slices and HTML 2026-10-05 15:24:51 +07:00
stroke.rs M14.5: Preferences > Units drive every length the UI shows and reads 2026-10-05 07:43:41 +07:00
style.rs Part of #852: Brush Options for Calligraphic and Bristle brushes, pen pressure 2026-10-10 12:15:18 +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 Fix #832: --automation-read-root and --automation-write-root confine the MCP server's files 2026-10-10 14:27:24 +07:00
tabs.rs M7: per-paragraph paragraph attributes 2026-10-08 15:07:13 -07:00
textedit.rs variables: fix binding lifetime, dataset editing and the missing UI to define 2026-10-10 23:34:21 +07:00
textstyles.rs Fix #745: a working Libraries panel of graphics, colours and text styles 2026-10-09 20:12:59 +07:00
textwrap.rs M7.4: Text Wrap flows on both sides of an object (lines split into every free span, left to right, sharing the baseline; exact interval intersection across the line band) 2026-10-02 09:28:04 -04:00
threads.rs M7: inline symbols in text 2026-10-08 15:45:34 -07:00
typecmd.rs Fix clippy on main: Create Outlines passes the text, not a reference to it 2026-10-10 06:27:19 +07:00
typemenu.rs M7: inline symbols in text 2026-10-08 15:45:34 -07:00
variablecmds.rs variables: let one object be driven by several variables 2026-10-10 23:34:21 +07:00
views.rs M3.88: Show Transparency Grid is per-document engine view state 2026-10-05 03:11:04 +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 Fix #787: raster exports keep translucent edges over opaque art opaque 2026-10-10 11:12:13 +07:00
xform.rs Part of #451: guides dragged out of the rulers snap, artboard guides 2026-10-08 15:23:18 +07:00