github storytold/vectorcraft v0.14.0
VectorCraft v0.14.0

4 hours ago

Note

FreeBSD aarch64 is dropped from this release. We had to cut releases, and we cannot build this target within the 5-hour CI limit for any of the Craft apps, so we are dropping it for now. This is a known blocker, flagged for a future fix in storytold/craft-common-actions#39. FreeBSD x86_64 and every other platform are included.

What's Changed

  • SVG import: hrefs that need no folder stay as written, and images in a non-absolute folder are read by @dotCooCoo in #2837
  • MCP: parse errors and overlong lines wait for room in the 64-line queue by @dotCooCoo in #2776
  • PDF import: an XMP packet nested more than 256 deep is skipped instead of overflowing the stack by @dotCooCoo in #2816
  • PDF import: PDF and .ai layer names without a byte order mark are read as PDFDocEncoding by @dotCooCoo in #2810
  • .ai import: a file whose editing data can't be decompressed says why its layers weren't read by @dotCooCoo in #2800
  • EPS and .ai import: the note for editing data of another page size gives both sizes and the scale by @dotCooCoo in #2799
  • .ai import: page type over a text object is left out only when that object's text has its letters by @dotCooCoo in #2808
  • Legacy .ai export: warns when an image in art it flattens or expands can't be decoded by @dotCooCoo in #2817
  • Legacy .ai export: radial gradients are written with their highlight (Bh) by @dotCooCoo in #2807
  • Legacy .ai export: images are written in the form the version 7 specification shows by @dotCooCoo in #2801
  • PDF export: an image that can't be decoded is left out with a note instead of failing the export by @dotCooCoo in #2790
  • Render: raster exports warn about an undecodable image drawn from a kept Rasterize image by @dotCooCoo in #2781
  • Place: Bounding Box measures only the art that shows by @dotCooCoo in #2806
  • Place: justified RTF paragraphs marked right to left end their last line on the right by @dotCooCoo in #2815
  • Tabs: Repeat Tab measures the first stop from the left indent by @dotCooCoo in #2809
  • Type: Left and Right reach both sides of a character drawn with no width by @dotCooCoo in #2795
  • Direct Selection: a group selected whole shows its anchors as selected by @dotCooCoo in #2797
  • Fields: Shift+Enter applies a pattern, layer, artboard or asset name and keeps the field active by @dotCooCoo in #2785
  • Accessibility: color and channel sliders report their values to screen readers by @dotCooCoo in #2794
  • Appearance: the inline effect editor shows 3D, Warp, Rasterize and channel choices as dropdowns by @dotCooCoo in #2796
  • Shaper: the Lasso, Smart Guides and the anchor tools skip a Shaper Group's original shapes by @dotCooCoo in #2782
  • Selection: a marquee selects an Intertwine group or a repeat only where it meets their art by @dotCooCoo in #2805
  • i18n: the History panel translates the step names that contain a style's name by @dotCooCoo in #2803
  • Color: type, gradient, mesh and swatch commands store RGB input as color-managed CMYK in a CMYK document by @dotCooCoo in #2812
  • Export: a .ait export names file.saveAsTemplate, and the CLI's convert writes the template by @dotCooCoo in #2813
  • Save as Template: aiVersion 7 is an error for a .ait, and the dialog shows no Version by @dotCooCoo in #2819
  • Patterns: Pattern Options refuses a name another swatch has by @dotCooCoo in #2825
  • Save As: on Linux the file type picked in the save dialog decides the format by @dotCooCoo in #2783
  • Tests: the drag-budget test sets its thread count, and no render test changes the default by @dotCooCoo in #2836
  • Color: freeform gradients keep CMYK inks when expanded, meshed or edited by @dotCooCoo in #2829
  • PDF export: PDF and .ai files keep the document's creation date by @dotCooCoo in #2838
  • Export for Screens: the dialog's example names the file the export writes by @dotCooCoo in #2839
  • .ai import: opening a file with a variable library warns that its variables weren't read by @dotCooCoo in #2842
  • History: the panel menu clears the history by @dotCooCoo in #2843
  • Paths: a curve with a handle near f64::MAX is measured by its control points by @dotCooCoo in #2844
  • Selection: a Shift-constrained move that snaps stays on its line by @dotCooCoo in #2845
  • Slices: resizing a slice snaps as drawing one does by @dotCooCoo in #2846
  • Blends, meshes and envelopes: a number given as text is refused by @dotCooCoo in #2851
  • Docs: target-app-parity.md lists seven Evidence items once each by @dotCooCoo in #2852
  • G4: Paragraph panel menu › Justification… (word and letter spacing, glyph scaling, auto leading, single word justification) by @VL420 in #2771
  • Export progress dialog with Cancel, on the shared cancel token by @fabian-co in #2564
  • Render: gradient meshes in CMYK documents draw several times faster by @fabian-co in #2802
  • Close a dropdown list after an option is picked with the keyboard (#2789) by @MarekSpodBiedry in #2824
  • Dialogs: a plug-in's parameters scroll when they don't fit the window by @KaboomFox in #2840
  • Batch follow-ups: #2842 note translated, test fixes for #2824, #2771 and #2829, ROADMAP by @bflatastic in #2865
  • G9: .ai right-to-left paragraphs keep their alignment by @ham9zah in #2859
  • i18n: Georgian (ka) interface language by @devius in #2045
  • i18n(pl): Artboard is "obszar kompozycji", Guides "linie pomocnicze" by @lewandowskit in #2870
  • G1: test that a group of clipped images shows only its masks and their bounds by @ham9zah in #2876
  • Part of #394: required shaping is not an alternate glyph by @ham9zah in #2887
  • Fix #2576: poll for fonts that font managers activate while the app is in front by @nrq6993-a11y in #2884
  • Add interactive Mirror Repeat axis controls by @AJMakesStuff in #2877
  • SVG export: a Japanese face's numbered weight (W0–W9) is its font-weight, W6 600 (#2873) by @bflatastic in #2896
  • Canvas: selected point type's baseline marker runs under each line, centred and right-aligned type too (#2879) by @bflatastic in #2897
  • docs: drop references to competing commercial software by @dylanmtaylor in #2893
  • New Document: Recent and Saved cards keep the orientation they were made in (#2860) by @bflatastic in #2904
  • Pencil: a stroke that starts and ends on a selected path redraws the section between (Edit Selected Paths, #2850) by @bflatastic in #2905
  • Resolve the "ft" unit suffix to Feet in Unit::named by @Silvertree2010 in #2895
  • Fix #2723: Reshape tool falloff follows the path, so nodes stretch progressively by @nrq6993-a11y in #2900
  • Release: embed the current craft-fonts (adds Noto Sans Georgian, craft-fonts#27) by @devius in #2934
  • i18n(de): add missing PSD error messages and effect Soft entry by @ElPaule in #2940
  • i18n(ka): Letter and Word Spacing as in the other Craft apps; "weren't read" in the catalog's usual form by @devius in #2941
  • CMYK profiles carry every tag an ICC output profile requires (#2707) by @Higgs32584 in #2913
  • Fix #2727: opacity-mask editing no longer dims the canvas by @nrq6993-a11y in #2927
  • Fix #2646: keep undocked shared-dock panels opaque by @nrq6993-a11y in #2911
  • CLI, MCP: the raster scale no longer resizes DXF exports by @MortenHusted in #2931
  • Fix #2719: honor Display Print Size for status-bar 100% zoom by @nrq6993-a11y in #2928
  • Effects: an Outer Glow grows its solid silhouette by a quarter raster pixel before the blur by @EricKuck in #2915
  • Fields: arrow keys and the wheel step to the next whole unit, and Ctrl/Cmd steps to the next tenth by @dotCooCoo in #2916
  • Type: a click away from the text being edited ends editing without making new text by @dotCooCoo in #2922
  • Select: select.color picks objects by fill and stroke colour, no object needed by @MortenHusted in #2939
  • web: window.vectorcraft, the control channel for the page by @youngeuibae in #2943
  • File formats: Targa (.tga) files open and place by @dotCooCoo in #2765
  • i18n: Traditional Chinese translates status-bar and error messages by @dotCooCoo in #2784
  • EPS and .ai import: images with TIFF predictor 2 draw their samples at every bit depth by @dotCooCoo in #2907
  • MCP: document.pdfInfo answers one page for an EPS, a .ps file or a PostScript .ai by @dotCooCoo in #2914
  • Transform Each, Rasterize, Mosaic, Trim Marks and Rearrange: a number given as text is refused by @dotCooCoo in #2917
  • Links: a document opened from a mapped drive finds links on its share by @dotCooCoo in #2921
  • Paths: anchor commands refuse a subpath that is not a whole number by @dotCooCoo in #2929
  • i18n: number, object id and date parameter errors are translated by @dotCooCoo in #2930
  • Legacy .ai export: an F line follows each %AI5_EndRaster by @dotCooCoo in #2935
  • PDF and .ai import: editing data with a UTF-16 description is checked against its pages by @dotCooCoo in #2936
  • .ai import: the editing data reader warns about each image it can't read by @dotCooCoo in #2937
  • Legacy .ai export: the title and spot color and gradient names are written in Windows-1252 by @dotCooCoo in #2938
  • Save for Web: each browser preview is written to its own folder by @dotCooCoo in #2944
  • i18n: Traditional Chinese and Georgian rows for the parameter-check and pdfInfo errors (#2930, #2784, #2914) by @bflatastic in #2956
  • G1: show the system busy cursor during background open, save and export by @nrq6993-a11y in #2952
  • #1753: saved workspaces restore dock panel width by @nrq6993-a11y in #2953
  • PDF/.ai import: a .ai saved without PDF compatibility opens when pages names every page by @dotCooCoo in #2948
  • Type: a zero width non-joiner is shaped in the face of the letters around it by @dotCooCoo in #2670
  • Rotate View: a dial shows the angle while a drag rotates the view by @dotCooCoo in #2677
  • Exports: SOURCE_DATE_EPOCH stands in for the clock, so output repeats by @Hamza0101 in #2947
  • ci: configure Dependabot for Cargo and GitHub Actions by @dylanmtaylor in #2949
  • Smart Guides: object highlighting stays off with Snap to Grid or Pixel Preview by @dotCooCoo in #3040
  • Variables: a data set with no value for any bound variable shows a status message by @dotCooCoo in #3048
  • 3D and Materials: Extrude & Bevel and Inflate build a solid from each stroke's outline by @dotCooCoo in #3049
  • Tabs: Snap to Unit, or Shift held, puts a tab stop on the ruler's nearest tick by @dotCooCoo in #3039
  • Layers: with Locate Selected Objects on, the panel shows the row of art selected on the canvas by @dotCooCoo in #3033
  • Live Paint: Live Paint Selection Tool Options set what a click selects and the highlight by @dotCooCoo in #3052
  • Objects on Path: attach objects to a path and spread them along it by @dotCooCoo in #3066
  • Linux: file managers offer VectorCraft for .ai, EPS and every other format Finder offers it for by @dotCooCoo in #2821
  • Reject self-intersecting polygons in polygon_covers_rect by @Silvertree2010 in #3115
  • Clear dangling handles when deleting anchors from a closed path by @Silvertree2010 in #2968
  • Stop locked guide objects from blocking marquee selection by @Silvertree2010 in #3074
  • MCP: document.pdfInfo refuses a thumbnail that is not a page number by @dotCooCoo in #2964
  • Variables: Import and Export Data Sets… show file dialogs on macOS and keep the window running by @dotCooCoo in #2969
  • eps: read Illustrator text with hyphenation and tab attributes by @rotohun in #3006
  • PDF import: say when invisible text is left out (part of #2675) by @00xJS in #2988
  • Exports: say that an encrypted PDF still differs, and test the clock fallback by @Hamza0101 in #2961
  • i18n(fi): translate 67 labels added since the Finnish review by @Janiz-zzz in #3120
  • Keep Type arrows on grapheme boundaries in mixed-direction text by @sanyamsingh001 in #3004
  • Anchor Point tool: Shift-drag on an anchor moves it, handles and all by @sungjea713 in #3095
  • Effects: effect art redraws when fonts arrive or the color settings change by @dotCooCoo in #3102
  • #2558: a drag over a wide blur draws it from the still frame's raster by @ariymarkowitz in #3001
  • PDF: placed and pasted pages keep live text by @KnottyDyes in #3042
  • Batch follow-ups: #3004 test prints, #3095 catalog rows, #3042 doc banners by @bflatastic in #3131
  • Preserve cached canvas scale during viewport resizing by @FractalEncrypt in #3106
  • DXF: export circular paths as native CIRCLE and ARC entities by @MiQ71 in #2962
  • Keep status-bar messages and readouts stable by @FractalEncrypt in #3107
  • Rulers: an inch is divided in half, not in ten by @Hamza0101 in #2951
  • G1: Pencil Alt key toggles to Smooth Tool (#2001) by @krinry in #2685
  • #2008: improve color picker layout by @shorbank in #2013
  • G9: Regression tests for Illustrator path guides from editing data (#779) by @nrq6993-a11y in #3007
  • Fix #2996: color books copy to user folder under book title by @nrq6993-a11y in #3003
  • Fix #2681: distinguish Appearance from Pathfinder panel icons by @nrq6993-a11y in #2981
  • Font menu: label the Japanese script filter as 汉字 in Chinese UI (#2206) by @nrq6993-a11y in #2989
  • Allow assigning a keyboard shortcut to Enter Isolation Mode by @nrq6993-a11y in #2999
  • G1: Spacing Guides snap bounding-box resizes to equal gaps by @nrq6993-a11y in #2966
  • Drawing tools: distance and angle measurement labels while placing points by @nrq6993-a11y in #2983
  • path.join: corner or smooth at the merged anchor by @nrq6993-a11y in #2982
  • G9: .ai/.eps import restores ruler units from %AI5_RulerUnits by @nrq6993-a11y in #3015
  • Tests: Graph Data's full-size sheet test counts the cells it draws instead of timing them by @dotCooCoo in #3142
  • Fix intersects_rect ignoring paths crossing zero-width/height rects by @Silvertree2010 in #3138
  • A CMYK JPEG is not labelled JFIF by @Hamza0101 in #3140
  • Save: warn when SVG keeps only one of several artboards by @Higgs32584 in #2994
  • Simplify: Object › Path › Simplify opens a slider with Auto-Simplify and More Options by @dotCooCoo in #2555
  • Appearance: image fills and strokes draw the shape Convert to Shape or Outline Object gives them by @dotCooCoo in #2500
  • G9: .ai import reads Adobe Feather art styles as live effects by @nrq6993-a11y in #3064
  • G11: Pen bezier handle drag preview updates while the button is held (#834) by @nrq6993-a11y in #3065
  • G1: hide bounding box while dragging type-on-path brackets by @nrq6993-a11y in #3069
  • G1: Graph tools show width and height in measurement labels while dragging by @nrq6993-a11y in #3099
  • G1: Crop Image tool honors measurement labels while resizing the crop box by @nrq6993-a11y in #3114
  • G1: Pie, Live Corners, Width and Print Tiling honor measurement_labels by @nrq6993-a11y in #3122
  • G1: Measure tool honors Measurement Labels preference by @nrq6993-a11y in #3128
  • G4: Touch Type arrow keys nudge the selected character by @nrq6993-a11y in #3121
  • G4: View › Snap to Glyph snaps new type to live-text baselines and glyph bounds by @nrq6993-a11y in #3124
  • G4: Properties panel Variable Font axes for selected type by @nrq6993-a11y in #3127
  • G1: Effect Warp dialog remembers last confirmed style and sliders by @nrq6993-a11y in #3100
  • Keep an island inside a hole a separate Shape Builder region by @Silvertree2010 in #3148
  • G1: Envelope Distort shows move distance in measurement labels while dragging corners by @nrq6993-a11y in #3146
  • Home: Recent Files rows highlight and click as one; Home screen scrolls by @texjer in #3149
  • Docs: ROADMAP row for 2026-10-19, and rows doc-conflict merges duplicated by @bflatastic in #3151
  • G1: Mesh editing shows move distance in measurement labels while dragging points by @nrq6993-a11y in #3144
  • G2: Effect › Sketch › Chalk & Charcoal raster filter by @nrq6993-a11y in #2972
  • G2: Effect › Sketch › Graphic Pen raster filter by @nrq6993-a11y in #2967
  • G2: Effect › Sketch › Reticulation raster filter by @nrq6993-a11y in #2976
  • G2: Effect › Artistic › Plastic Wrap raster filter by @nrq6993-a11y in #3034
  • Effects: catalog rows for Chalk & Charcoal, Graphic Pen, Reticulation and Plastic Wrap (#2972, #2967, #2976, #3034) by @bflatastic in #3153
  • Filter control characters in SVG export title and description by @Silvertree2010 in #3152
  • Docs: effects parity counts the Sketch and Artistic filters of 2026-10-19 (36/57) by @bflatastic in #3155
  • G1: Alt-drag an existing ruler guide to swap horizontal and vertical by @nrq6993-a11y in #2997
  • Ask for the .ai options on Save a Copy like Save As (#3141) by @MarekSpodBiedry in #3158
  • Add a generic family to the font-family of SVG export and CSS (#3135) by @MarekSpodBiedry in #3157
  • Draw the isolation bar over the canvas instead of squeezing it (#3126) by @MarekSpodBiedry in #3156
  • G2: Effect › Sketch › Chrome raster filter by @nrq6993-a11y in #2985
  • Keep a PDF's invisible text (a scanned page's OCR layer) as type, and save it invisible (#2675) by @odgrim in #3159
  • G2: Effect › Sketch › Plaster raster filter by @nrq6993-a11y in #2990
  • G5: Art brush Overlap option in Brush Options by @nrq6993-a11y in #3056
  • Libraries panel: scrolling, and drag to reorder items and groups by @danngreen in #3162
  • Live shapes: a polygon read from a file has 3 to 1000 sides by @Matoo125 in #3163
  • Fix #2143: ruler guides and key objects align to each other by @danngreen in #3165
  • G1: Rectangular and Polar Grid dialogs reference point locator (#1377) by @nrq6993-a11y in #3057
  • Export Selection: the selection becomes one asset, not one per object by @sungjea713 in #3166
  • Effects: Artistic: Smudge Stick, Sponge and Watercolor (#2435) by @vangel76 in #2525
  • Effects: Sketch › Bas Relief, Charcoal, Photocopy and Stamp (#2527) by @vangel76 in #2533
  • Export for Screens: the Assets tab scrolls to the assets it opens on by @sungjea713 in #3167
  • G1: Group Selection Shift-click deselects compound path members by @nrq6993-a11y in #3050
  • Fix #2213: a copy with a large image no longer puts its SVG on the clipboard as text by @00xJS in #2575
  • Docs: install the CLI and register it with MCP clients by @KnottyDyes in #3110
  • Clipboard: a copied .ai or .ait file pastes the objects of its editing data by @dotCooCoo in #2408
  • docs: make tiled poster printing discoverable (#2857) by @Zaxaerith in #3029
  • docs: add typography and custom lettering guide (#2980) by @Zaxaerith in #3087
  • Artboards: Width, Height, Preset and Orientation apply to every selected artboard by @dotCooCoo in #2565
  • Fix GNOME/Wayland window controls by @danielmigueltejedor in #2268
  • Plug-ins: exporters write file formats of their own (G17) by @KaboomFox in #3171
  • Plug-ins: labels, units, groups, help and conditions for parameters (G17) by @KaboomFox in #3172
  • G2: Effect › Sketch › Note Paper by @nrq6993-a11y in #2954
  • Plug-ins: live effects read their object's fills and strokes (G17) by @KaboomFox in #3173

New Contributors

Full Changelog: v0.13.1...v0.14.0

Don't miss a new vectorcraft release

NewReleases is sending notifications on new releases.