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