VectorCraft v0.17.0

VectorCraft is an open-source vector illustration application designed as a clean-room reimplementation of the Adobe Illustrator workflow. Built entirely in Rust, it provides a native desktop application for Windows, macOS and Linux, along with a WebAssembly version that runs in the browser.

The project goes beyond basic vector drawing. It aims to reproduce a professional Illustrator-style workflow with Bézier editing, Pathfinder operations, multiple artboards, typography, gradients, live effects, PDF and SVG workflows, and extensive automation capabilities.

Features

VectorCraft provides a substantial collection of professional vector-illustration tools:

  • Pen and Direct Selection tools

  • Bézier anchors and handles

  • Pathfinder and exact Boolean operations

  • Multiple artboards

  • Layers and groups

  • Smart Guides

  • Rulers, grids and alignment tools

  • Live corners

  • Gradient and mesh tools

  • Gradient fills and strokes

  • Pattern and appearance controls

  • Blend tool

  • Radial Repeat

  • Envelope Distort

  • Puppet Warp

  • Liquify

  • Width tool

  • Perspective Grid

  • Freeform gradient editing

  • Recolor Artwork and Color Themes

  • Editable text and type-on-path

  • Variable and transformed vector content

  • Symbols

  • Clipping and masking

  • SVG import and export

  • PDF import and export

  • EPS export

  • DXF import

  • PNG, JPEG and WebP raster export

  • Export for Screens

  • Native .vectorcraft document format

  • Print engine

  • PDF layers and overprint support

The application also includes a command API that exposes its tools and interface to external automation. A JSON control channel and MCP server allow AI agents and scripts to manipulate documents, operate tools and export artwork.

This is one of VectorCraft's most distinctive features. It is not simply an image editor with an AI assistant added on top. The editing engine itself is designed to be programmatically controllable.

Download VectorCraft v0.17.0 - Software Mirrors

VectorCraft v0.17.0 for Windows

vectorcraft-0.17.0-windows-x86.msi | 98.89 MB

vectorcraft-0.17.0-windows-x86-portable.zip | 121.22 MB

vectorcraft-0.17.0-windows-x64.msi | 101.82 MB

vectorcraft-0.17.0-windows-x64-portable.zip | 126.23 MB

vectorcraft-0.17.0-windows-arm64.msi | 95.77 MB

vectorcraft-0.17.0-windows-arm64-portable.zip | 120.23 MB

VectorCraft v0.17.0 for macOS

vectorcraft-cli-0.17.0-macos-universal.zip | 106.27 MB

vectorcraft-0.17.0-macos-universal.dmg | 138.04 MB

VectorCraft v0.17.0 for Linux

vectorcraft-0.17.0-linux-x86_64.tar.gz | 123.32 MB

vectorcraft-0.17.0-linux-x86_64.rpm | 124.35 MB

vectorcraft-0.17.0-linux-x86_64.pkg.tar.zst | 91.97 MB

vectorcraft-0.17.0-linux-x86_64.flatpak | 85.4 MB

vectorcraft-0.17.0-linux-x86_64.deb | 125.19 MB

vectorcraft-0.17.0-linux-x86_64.AppImage.zsync | 204.18 kB

vectorcraft-0.17.0-linux-x86_64.AppImage | 116.53 MB

vectorcraft-0.17.0-linux-riscv64.tar.gz | 121.25 MB

vectorcraft-0.17.0-linux-riscv64.rpm | 122.38 MB

vectorcraft-0.17.0-linux-riscv64.deb | 122.91 MB

vectorcraft-0.17.0-linux-aarch64.tar.gz | 118.08 MB

vectorcraft-0.17.0-linux-aarch64.rpm | 120.19 MB

vectorcraft-0.17.0-linux-aarch64.pkg.tar.zst | 88.59 MB

vectorcraft-0.17.0-linux-aarch64.flatpak | 79.9 MB

vectorcraft-0.17.0-linux-aarch64.deb | 121.24 MB

vectorcraft-0.17.0-linux-aarch64.AppImage.zsync | 195.93 kB

vectorcraft-0.17.0-linux-aarch64.AppImage | 111.81 MB

VectorCraft v0.17.0 for BSD

vectorcraft-0.17.0-freebsd-x86_64.tar.gz | 123.08 MB

Others Download related to VectorCraft v0.17.0

vectorcraft-web-0.17.0.zip | 27.92 MB

VectorCraft v0.17.0 Source Code

VectorCraft v0.17.0 Source code (zip)

VectorCraft v0.17.0 Source code (tar.gz)

VectorCraft v0.17.0 Release Notes:

What's Changed

  • Brushes: one output budget across tracks, tiles and copies (#3594) by @saad-mughal435 in #3731
  • Docs: the Shape Builder parity line paraphrases the combine page by @dotCooCoo in #3679
  • G4: paragraph Auto Leading drives the Leading field, leading nudge and placeholder fill by @bflatastic in #3733
  • G4: hanging punctuation keeps its amounts under Glyph Scaling and burasagari by @bflatastic in #3736
  • Docs: the Shape Builder parity lines appear once each by @dotCooCoo in #3737
  • Cap the face count of a font collection in enumerate_faces by @Silvertree2010 in #3735
  • Plug-ins: heavy filters, allowed at install and run in the background (G17) by @KaboomFox in #3721
  • Docs: twelve parity doc lines describe the reference pages without quoting them by @dotCooCoo in #3743
  • Windows: a pen's barrel button is the right mouse button with Windows Ink by @dotCooCoo in #3738
  • G12: Constrain Angle for the arrow keys, Shift drags and new objects (#394) by @bflatastic in #3745
  • Type: OpenType SVG colour fonts draw and export as vector art by @lehni in #3741
  • Place: files are read and decoded on a background thread by @dotCooCoo in #3740
  • PDF import: keep one tracking value on letters whose file widths round off the installed font's advances by @Taha-Mahmoodi in #3742
  • Export for Screens: files are encoded and written on the background thread by @dotCooCoo in #3686
  • Restore render depth counters after a caught panic by @Silvertree2010 in #3749
  • Simplify: Object › Path › Simplify opens its slider at the Auto-Simplify level for the selection by @Taha-Mahmoodi in #3750
  • Artboards: Artboard Options shows a center mark and cross hairs on the canvas by @Taha-Mahmoodi in #3751
  • Fix #3705: pastes follow Draw Inside and Draw Behind, and Shift+D no longer sticks in Draw Behind by @Taha-Mahmoodi in #3752
  • PDF import: keep a line's glyphs on course when the file's widths are a little off the font's advances by @Taha-Mahmoodi in #3753
  • SVG: keep other applications' attributes from import to export by @KaboomFox in #3758
  • Cap the input of live Pathfinder effects by @Silvertree2010 in #3757
  • Make DXF import symbol-name uniquing linear by @Silvertree2010 in #3760
  • Linux: a tablet pen's pressure reaches the tools under X11 and XWayland by @dotCooCoo in #3761
  • Stop DXF hatch source-handle loop at first missing handle by @Silvertree2010 in #3762
  • Stop tiny DXF spline weights from splitting every span to the cap by @Silvertree2010 in #3763
  • Preserve supplied passwords when confirming Save PDF by @dylanmtaylor in #3836
  • packaging: use [[ for bash conditional tests (SonarCloud S7688) by @dylanmtaylor in #3853
  • Packaging: pin the signing client and appimagetool, and check their hashes by @aiongg in #3268
  • i18n: every catalog translates "PDF security settings are not an object" by @Taha-Mahmoodi in #3847
  • Raise undefinedresult for non-finite EPS arithmetic instead of panicking by @Silvertree2010 in #3771
  • Keep ASCII85 output from starting its first line with '%' by @Silvertree2010 in #3858
  • Fix quadratic PostScript search in the EPS importer by @Silvertree2010 in #3816
  • Charge PostScript filter output to the EPS interpreter budget by @Silvertree2010 in #3810
  • Charge and bound EPS image sample planes on import by @Silvertree2010 in #3821
  • Charge gstate and currentgstate path copies to the memory budget by @Silvertree2010 in #3822
  • Fix quadratic paper layout de-duplication in DXF import by @Silvertree2010 in #3754
  • Cap the total array insert copies in a DXF import by @Silvertree2010 in #3789
  • Bound DXF import work for nested inserts that produce no nodes by @Silvertree2010 in #3794
  • Cap path elements in DXF import across the whole file by @Silvertree2010 in #3800
  • Hash PDF page contents without caching a decoded copy per page by @Silvertree2010 in #3806
  • Share native-format entries naming the same bytes; cap copies at data by @Silvertree2010 in #3801
  • Render opacity masks over the masked object's bounds by @Silvertree2010 in #3777
  • Bound offscreen pixels kept alive by nested blending groups by @Silvertree2010 in #3776
  • Bring the window forward when Finder opens a file (#3769) by @MarekSpodBiedry in #3845
  • Type: a Ctrl/Cmd click away from the type being edited ends its edit by @marcoarnulfo in #3840
  • Panels: a double-click on a tab of a group beside another no longer reports an error by @marcoarnulfo in #3830
  • Panels: a double-click on the tab strip right of the tabs collapses the group by @marcoarnulfo in #3783
  • Threaded text: Convert To Point Type on a frame no longer duplicates its text by @dotCooCoo in #3827
  • Fix #3705: art drawn or pasted inside an isolated object in Draw Inside stays in isolation mode by @Taha-Mahmoodi in #3805
  • Fix #3766: correct stroke profile flip icons by @MiQ71 in #3798
  • Open and Place: a file read in the background waits for a busy tool only during a drag by @dotCooCoo in #3791
  • Simplify: with part of a path direct-selected, Object › Path › Simplify refits only the selected runs of segments by @Taha-Mahmoodi in #3814
  • Fix text spacing shortcuts for selected type by @MiQ71 in #3823
  • Render: live objects in symbol art and opacity masks keep their evaluations between frames by @dotCooCoo in #3795
  • Fonts: a family and style split from a PostScript name find the face once it is installed by @fortesnow in #3755
  • Type: SVG glyph documents follow the SVG table's coordinate rules by @lehni in #3804
  • Type: colour glyphs go with type that effects reshape and Expand Appearance by @lehni in #3803
  • SVG: type written as outlines stacks colour glyphs under their run's paint by @lehni in #3808
  • Font menu: Font Technology › Variable lists only variable font families by @Taha-Mahmoodi in #3813
  • Count Repeats inside symbol art toward the Repeat instance budget by @Silvertree2010 in #3788
  • Flatten transparent image pattern tiles in legacy .ai v7 export by @Silvertree2010 in #3770
  • i18n: missing translations never fail; xtask ci prints one report by @aiongg in #3856
  • i18n(fi): fix package-note spacing and a few Finnish labels by @Janiz-zzz in #3842
  • i18n(pl): "Wtyczki i dyski robocze", "Geometryczne linie pomocnicze" by @lewandowskit in #3775
  • Fix status-bar coordinates after changing the ruler origin by @haranishi in #2847
  • Pencil: Shift held at the press draws a straight line at 45° steps by @marcoarnulfo in #3846
  • Libraries panel: show items as icons or in a list by @danngreen in #3854
  • Pen tablets: a pen's eraser end selects the Eraser on Linux under X11 and XWayland by @dotCooCoo in #3778
  • feat: display point type baselines for node outlines and add hover test by @MajedAlaejem in #3834
  • Tools: double-clicking the Line Segment, Arc, Rectangular Grid and Polar Grid tools opens their Tool Options by @Taha-Mahmoodi in #3815
  • Artboards: Artboard Options shows video safe areas and sets the pixel aspect ratio that View › Rulers › Show Video Rulers counts the artboard in by @Taha-Mahmoodi in #3831
  • Pathfinder: Trap spreads the lighter colour into the darker as an overprinting strip where solid colours meet by @Taha-Mahmoodi in #3785
  • Smart Guides: Alt over another object or the artboard shows the selection's distances to it by @Taha-Mahmoodi in #3832
  • Type: selected type shows its in and out ports, and the in port threads backwards by @Taha-Mahmoodi in #3817
  • Symbols: Window › Symbol Libraries opens symbol libraries whose symbols click into the document's Symbols by @Taha-Mahmoodi in #3833
  • Type: the Paragraph panel's Bullets button turns paragraphs into a bulleted list by @dotCooCoo in #3780
  • Select: Start Global Edit edits the objects of the same shape together, each in proportion by @Taha-Mahmoodi in #3781
  • Docs: one ranked-table row each for G2 and G13 in gaps.md by @bflatastic in #3874
  • ci(sonar): stop cancelling main-branch runs so coverage is published by @dylanmtaylor in #3881
  • Reject signed hex digits in XML-ID _xHH_ escapes by @Silvertree2010 in #3860
  • Fix false font fallback misses during concurrent loading by @FractalEncrypt in #3861
  • Type: colour glyphs keep each fill's own colour, also between colours that look alike by @lehni in #3866
  • Actions: Create New Set and Set Options… name action sets, and a recording goes into the current set (#3712) by @marcoarnulfo in #3863
  • Import: an Illustrator gradient mesh comes in as one connected mesh by @ham9zah in #3811
  • fix(stroke): preserve extended dash patterns when editing (#3497) by @Zaxaerith in #3513
  • Export for Screens: a document row for an artboard keeps only that artboard's art (#3868) by @bflatastic in #3875
  • Type: tests pin colour glyphs in variable fonts, on paths and on the canvas by @lehni in #3873
  • SVG: a Preserve Editing SVG reopened from disk saves as the full document again (#3867) by @bflatastic in #3876
  • Security: SVG import and export bounds (entity expansion, filter stacks, id probing, font feature tags) by @dylanmtaylor in #3877
  • Security: geometry, path edit and tool work bounds by @dylanmtaylor in #3882
  • Type: emoji go with type that effects reshape and Expand Appearance by @lehni in #3879
  • Fix #3716: a click near an anchor selects without moving the object by @mercuryVM in #3885
  • Security: DXF export bounds (layer and style names, flattening, entity count, image size) and import dash patterns by @dylanmtaylor in #3886
  • Security: Scribble rows, Outer Glow dilation and CSS export names by @dylanmtaylor in #3889
  • Security: export names, linked-file ids, MCP prompt arguments and image encoders by @dylanmtaylor in #3890
  • Security: PDF import, print and export bounds; PDF 1.3 encryption notes by @dylanmtaylor in #3884
  • Renderer: colour caches key colours with Color::key by @lehni in #3894
  • Fix #3724: Window › New Window is greyed out until it opens a window by @mercuryVM in #3892
  • Links: resolve stored paths with craft-docpath's resolve_absolute by @aiongg in #3267
  • EPS tests: budget tests wait 120 s for the program to stop by @aiongg in #3891
  • SVG export: type with small capitals, superscript, subscript or tab leaders is written as outlines (#3869) by @bflatastic in #3896
  • G12: ruler guides nudged with art keep to the page's axes at a turned Constrain Angle by @bflatastic in #3898
  • Fix clipboard read-policy bypass and FULL lock held during checks (audit automation roots) by @dylanmtaylor in #3897
  • Pathfinder Outline: junctions a hair apart are one cut, so no sliver path is left (#3870) by @bflatastic in #3899
  • EMF and WMF export: say when type is written as outlines and pattern fills as their tiles (#3850) by @bflatastic in #3902
  • Tests: engine tests that add fonts to the shared font database take one lock by @bflatastic in #3906
  • PDF export: pattern fills are written as tiling patterns (#3849) by @bflatastic in #3905
  • Reject a leading plus sign in page range numbers by @Silvertree2010 in #3904
  • Type: images in SVG glyph documents draw with the glyph by @lehni in #3908
  • M2.1: prevent click-through on open path fills and support segment toggle (#3405) by @el-j in #3907
  • Tests: native-menu tests count menu reads only in runs no other test disturbed by @bflatastic in #3914
  • Type: SVG glyphs leave out images of SVG documents by @lehni in #3916
  • Fix #3828: New Document › Branding offers Business Card 91 × 55 mm by @Taha-Mahmoodi in #3917
  • Type: an SVG glyph's image is an SVG image by its plain href first by @lehni in #3918
  • Fix #3586: the PDF pre-open scan reads a file dense with stream keywords in linear time by @Taha-Mahmoodi in #3919
  • Fix #3920: a family another thread is loading is found whole, so fallback text never takes the style of its first file by @Taha-Mahmoodi in #3921
  • CI: shared gate workflow; FreeBSD nightly and on release by @aiongg in #3772
  • G11: Shape Builder pieces: contract the sweep's stubs between two cuts of one path by @bflatastic in #3923
  • CI: one test binary per crate, nextest, line tables only by @aiongg in #3855
  • Security: Image Trace bounds (mosaic, raster length overflow, auto grouping, stroke tracing) by @dylanmtaylor in #3878
  • Security: private temp paths for the signing certificate and test output; web font licences stay inside the checkout by @dylanmtaylor in #3871
  • Security: text layout, shaping, font name and embedding bounds by @dylanmtaylor in #3880
  • .ai import: an image too large for the editing data's reader opens the file as its PDF part, not with a blank layer (#1479) by @bflatastic in #3927
  • ci: move release workflow write permission to job level (SonarCloud S8233) by @dylanmtaylor in #3928
  • chore(text): use is_some_and instead of unnecessary map_or (clippy) by @dylanmtaylor in #3929
  • Main's CI: an unnecessary map_or, testkit's Unix-only mut, and a shared temp-dir probe by @bflatastic in #3935
  • macOS: a tablet pen's pressure reaches the tools (#852) by @bflatastic in #3932
  • Security: Affinity import and brush expansion bounds by @dylanmtaylor in #3887
  • style: keep paint.rs spot-colour chain under rustfmt's max width by @dylanmtaylor in #3940
  • Build: craft-pdf, hayro and krilla at craft-libs main by @aiongg in #3931
  • Build: craft-pdf at craft-libs 2eca9b3a, with hayro-postscript from craft-libs by @aiongg in #3957
  • Security: document model budgets for live art, clipping runs, placed documents, graph masks and path reading by @dylanmtaylor in #3939
  • Security: bounded flattening, plug-in budgets and caches, loaded textures, Revolve paint copies, color book and ICC names by @dylanmtaylor in #3936
  • Security: file authority for stored paths, linked files, placed documents, font folders, recovery areas and atomic saves by @dylanmtaylor in #3933
  • Security: linear work for shortcut review, gradients, recovery names, include cycles, batch references, DOCX styles, DXF layouts and long strokes by @dylanmtaylor in #3930
  • PDF import: the pre-open stream scan doesn't let a "stream" inside a literal string hide the real stream after it by @Taha-Mahmoodi in #3924
  • Match !important case-insensitively in SVG import CSS parser by @Silvertree2010 in #3983
  • Security: render and PDF export bounds for symbol expansion, dotted guides, blending groups and pinned images by @dylanmtaylor in #3938
  • Threaded text: Create Outlines and Expand on a frame no longer duplicate its text by @dotCooCoo in #3977
  • Save: a remembered artboard pick follows the artboards it named by @dotCooCoo in #3979
  • Fix #3964: Create Outlines, EPS, EMF/WMF and legacy .ai keep the ruby where the canvas draws it by @Taha-Mahmoodi in #3966
  • Fix #3799: Alt held at the press draws a straight Pencil line at any angle by @dotCooCoo in #3959
  • Print: landscape pages print upright on macOS print queues by @cmain in #3925
  • Image Trace: a filled traced path that straightens to no area is left out by @dotCooCoo in #3949
  • Select: Same commands for paint, appearance and shape select compound paths by @dotCooCoo in #3943
  • Recolor: recolor.colors and recolor.reduce read the art Select All takes when nothing is selected by @dotCooCoo in #3947
  • Image Trace: the semi-transparent edge of a cut-out image traces as the color beside it by @dotCooCoo in #3942
  • Image Trace: imageTrace.make refuses unknown keys inside params by @dotCooCoo in #3972
  • Image Trace: Auto Grouping looks up containing paths in a grid instead of testing every pair by @dotCooCoo in #3970
  • MCP: screenshot and render_preview draw edges as a PNG export does by @dotCooCoo in #3981
  • MCP: the file tools send paths made absolute against the server's working directory by @dotCooCoo in #3971
  • MCP: document.inspect and document.open report the File Info title as fileInfoTitle by @dotCooCoo in #3963
  • Render: brush art of symbol instances, inline graphics and repeat copies is kept between frames by @dotCooCoo in #3962
  • Render: an unchanged live object or effect art is not walked again for its resources by @dotCooCoo in #3934
  • Image Trace: a Preview checkbox chooses whether setting changes trace at once by @dotCooCoo in #3982
  • Find Objects: document.find filters by bounds, size and anchor count and can select the matches by @dotCooCoo in #3976
  • EPS: Use Artboards also writes a central file with every artboard by @dotCooCoo in #3958
  • Recolor: recolor.apply with a color group keeps art linked to the group's global swatches by @dotCooCoo in #3956
  • MCP: the trace-and-style prompt's steps run as written by @dotCooCoo in #3948
  • Slices: Lock Slices and Hide Slices deselect the slices and keep them deselected by @dotCooCoo in #2841
  • Dimension tool: Linear picks show and snap to Smart Guides by @vecteza in #3973
  • Open .ai files with their swatches (palette, colour groups, unused inks); Swatches panel keeps the art's swatch after deselecting by @fabian-co in #3941
  • Fix #3965: id works as ids of one with nothing selected wherever params take ids?|id? by @Taha-Mahmoodi in #3967
  • Arrange: a layer id given to Send to Back and the other selection commands is refused by @dotCooCoo in #3951
  • Pencil: the pointer shows a straight-line cursor while Shift or Alt is held before a press by @dotCooCoo in #3984
  • MCP: save_file against the running app waits for the save and reports its result by @dotCooCoo in #3969
  • PDF export: the hyphen that ends a hyphenated line is written as text by @dotCooCoo in #3988
  • Image Trace: pressing and holding the eye button shows the source image by @dotCooCoo in #3989
  • Native format: a document is saved pretty-printed only when its pretty-printed JSON is at most 1 MiB by @dotCooCoo in #3997
  • Type: the Numbered List button numbers paragraphs 1, 2, 3 by @dotCooCoo in #3960
  • Require four hex digits in DXF text \U+XXXX escape by @Silvertree2010 in #3986
  • Reject plus signs in logo palette hex parser by @Silvertree2010 in #3991
  • MCP docs: export and add_text each have one row by @dotCooCoo in #3998
  • Save: option errors name the save command that was run by @dotCooCoo in #3993
  • Properties: Blend Options, Merge Live Paint, Width Profile, an effect's Delete icon and Direct-Selected corners by @Taha-Mahmoodi in #3950
  • Image Trace: Flat Logo says when it traces a large image at a reduced size by @dotCooCoo in #3944
  • Image Trace: Flat Logo traces named colors a few levels off at the image's own size by @dotCooCoo in #3999
  • Image Trace: Flat Logo leaves out a traced outline that has no area by @dotCooCoo in #4003
  • Reject a leading plus sign in SOURCE_DATE_EPOCH by @Silvertree2010 in #4005
  • Docs: G11, G2 and parity tables drop missing items that shipped (Effect Gallery, Relative rounding, Hard/Soft Mix, #834, #937, #722) by @Taha-Mahmoodi in #4006
  • Fix #3621: function-based PDF shadings keep their colours instead of a flat grey by @pat26-dotcom in #3671
  • Image Trace: Flat Logo finds a bar two pixels wide in its own color by @dotCooCoo in #4008
  • MCP docs: start an installed app with the control port by @dotCooCoo in #4009
  • Renderer: character strokes are expanded once, not every frame by @lehni in #3996
  • Undo groups: an open undo group also groups the edits in a document opened or created before its end by @dotCooCoo in #4016
  • test(scriptcheck): table the held-value tests by @vangel76 in #4018
  • G11: Shape Builder's edge-source index is a grid, so diagonal hatches are no longer quadratic by @Ronfo2013 in #4021
  • MCP: each alias tool names its pair, and ui_screenshot takes max_side by @dotCooCoo in #4022
  • Keep the denominator of DXF MTEXT stacked fractions written with ^ by @Silvertree2010 in #4024
  • perf(scriptcheck): lex each file once, fewer copies by @vangel76 in #4019
  • refactor(scriptcheck): feature enums, split analyze.rs by @vangel76 in #4025
  • Keep escaped backslash literal before U+XXXX in DXF MTEXT by @Silvertree2010 in #4000
  • Control: requests are answered at full speed while the window is hidden on macOS by @dotCooCoo in #4026
  • Escape spaces before x and a separator in XML ids by @Silvertree2010 in #4027
  • fix(scriptcheck): same report with and without a loader for scripts without includes by @vangel76 in #4029
  • ci(deps): bump Swatinem/rust-cache from 2.9.2 to 2.9.3 in the actions group by @dependabot[bot] in #3812
  • Pencil: the closing cursor shows while a stroke is drawn back near its start by @dotCooCoo in #4002
  • Shape Builder: rebuild the region map for each document revision by @dotCooCoo in #4030
  • i18n(sv): translate 1 new string, use the agreed terms in 148 by @kler in #3421
  • Tests: the colour-font PDF test counts only text objects, not the random file ID by @echelon in #4034
  • Type: threaded frames do not repeat a continued paragraph's first-line indent or list marker by @dotCooCoo in #4031
  • MCP docs: wait for the app window before starting the client, and the full --connect error by @dotCooCoo in #4032
  • Shape Builder: a drag picks every region it crosses, however narrow by @dotCooCoo in #4035
  • Shape Builder: a line that ends inside a shape stays whole by @dotCooCoo in #4037
  • Threaded text: Flatten Transparency on a frame no longer duplicates its text by @dotCooCoo in #4039
  • Shape Builder: hover and Alt hover share one region map by @dotCooCoo in #4041
  • Shape Builder: uses a Live Paint group's filled faces and stroked edges by @dotCooCoo in #4042
  • Reject non-digit array indexes in batch step references by @Silvertree2010 in #4043
  • Require two hex digits in SVG href percent escapes by @Silvertree2010 in #4044
  • MCP: save_file takes the native save options compress, version and preview by @dotCooCoo in #3955
  • Renderer tests: the Arabic alternate-glyph tests take the font lock by @addibble in #4045
  • Shortcuts: use the shared craft-keymap crate for the catalogue, overrides, dispatch and .kys import by @aiongg in #3119

New Contributors

  • @saad-mughal435 made their first contribution in #3731
  • @aiongg made their first contribution in #3268
  • @MajedAlaejem made their first contribution in #3834
  • @mercuryVM made their first contribution in #3885
  • @cmain made their first contribution in #3925
  • @vecteza made their first contribution in #3973
  • @Ronfo2013 made their first contribution in #4021
  • @dependabot[bot] made their first contribution in #3812
Full Changelog: v0.16.0...v0.17.0

Performance and Compatibility

VectorCraft is implemented in Rust and uses a multithreaded rendering architecture. The project reports that 20,000 shapes can be rendered in approximately 27 milliseconds at full Retina resolution while maintaining a responsive interface.

Its geometry engine is designed around exact curve operations, while structural sharing provides effectively unlimited undo without requiring every operation to duplicate the entire document.

The project also places considerable emphasis on automated testing. Property-based tests are used for document round trips, while rendering and geometry have dedicated test infrastructure.

File compatibility is another strength. SVG is a first-class format, while PDF import/export and PDF-compatible AI files provide useful interoperability with established design workflows. DXF import and EPS export further extend its usefulness for technical and print-oriented work.

However, compatibility should not be confused with complete Illustrator parity. VectorCraft is still under active development, and the project roadmap indicates that some areas remain under construction.

System Requirements

VectorCraft supports:

  • Windows

  • macOS

  • Linux

  • FreeBSD

  • WebAssembly/browser

Prebuilt Linux packages are available in several formats, including:

  • AppImage

  • DEB

  • RPM

  • Tarball

Both x86_64 and ARM64 Linux builds are provided.

macOS has a universal build supporting Intel and Apple Silicon, while Windows is distributed as a native desktop application.

Developers can also build the application directly from source using Rust.

Pros and Cons

Pros

  • Open-source

  • MIT or Apache-2.0 licensing

  • Native Rust application

  • Windows, macOS and Linux support

  • Browser/WebAssembly version

  • Strong Bézier and vector-editing tools

  • Exact Pathfinder Boolean operations

  • Multiple artboards

  • Advanced gradients and appearance controls

  • Envelope Distort, Puppet Warp and Liquify

  • SVG and PDF support

  • EPS export

  • DXF import

  • Native document format

  • Excellent automation potential

  • JSON control interface

  • MCP support for AI agents

  • Multithreaded rendering

  • Extensive automated testing

Cons

  • Still under active development

  • Not yet a complete Illustrator replacement

  • Some workflows will still lack the maturity of established commercial software

  • Font availability and typography coverage are still developing

  • Professional production workflows should be tested before full migration

  • The large feature set can make the application more complex for beginners

How to Install

The easiest method is to download the appropriate prebuilt package from the project's GitHub releases.

Linux users can choose between AppImage, DEB, RPM and tarball packages. macOS users can install the universal application, while Windows users can use the provided Windows package.

Developers can build the desktop application from source:

git clone https://github.com/storytold/vectorcraft
cd vectorcraft
cargo run --release -p vectorcraft

A VectorCraft document can also be opened directly:

cargo run --release -p vectorcraft -- examples/dusk-poster.vectorcraft

For headless processing and automation, the project provides a CLI:

cargo run --release -p vectorcraft-cli -- run \
  --in examples/ribbons.vectorcraft \
  --export out.pdf

The MCP server can be launched with:

cargo run --release -p vectorcraft-cli -- mcp

This makes VectorCraft particularly interesting for automated graphics generation and AI-assisted design workflows.

Final Verdict

VectorCraft is an unusually ambitious open-source Illustrator alternative. It is not merely a basic SVG editor with a familiar interface. The project is attempting to recreate a substantial portion of the professional Illustrator workflow while building its own modern Rust-based rendering and document architecture.

Its strongest areas are vector geometry, Pathfinder operations, Bézier editing, advanced effects, SVG/PDF interoperability and automation. The MCP and JSON control interfaces are especially interesting because they allow the same editing engine to be operated by scripts and AI agents.

Performance is another major strength. The native Rust architecture and multithreaded rendering approach give VectorCraft a solid technical foundation for handling complex vector documents.

The biggest limitation is maturity. Established applications such as Illustrator have decades of compatibility work, plugins, fonts, production workflows and ecosystem support behind them. VectorCraft is still developing and should not yet be treated as a drop-in replacement for every professional Illustrator workflow.

For designers, developers and open-source users looking for a modern vector graphics application, however, VectorCraft is one of the most interesting projects in this category. Its combination of native performance, open licensing and agent-native automation makes it particularly worth watching.

VectorCraft v0.17.0
Free
Software Informations:
Developer:

Operating System:
Windows / macOS / Linux / BSD
Date Added:
2026-10-25T23:08:27.515Z
Categories:

Post a Comment/Report Broken Link: