[!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
- docs: add SonarCloud and CodeRabbit badges to README by @dylanmtaylor in https://github.com/storytold/vectorcraft/pull/2923
- Skip CodeRabbit reviews on Dependabot PRs by @echelon in https://github.com/storytold/vectorcraft/pull/3247
- Gradient meshes: a grid whose point count overflows is malformed by @Matoo125 in https://github.com/storytold/vectorcraft/pull/3193
- Gradient meshes: deleting mesh lines leaves a malformed mesh as it is by @Matoo125 in https://github.com/storytold/vectorcraft/pull/3194
- Repeat: nested Repeats stop at 250,000 instances in all by @Matoo125 in https://github.com/storytold/vectorcraft/pull/3223
- EMF export: pattern tiles stop at 250,000 in all by @Matoo125 in https://github.com/storytold/vectorcraft/pull/3224
- G2: Effect › Sketch › Water Paper raster filter by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/2955
- Fix EPS writer emitting inf for huge finite numbers by @Silvertree2010 in https://github.com/storytold/vectorcraft/pull/3240
- Quote CSS font-family names that are not plain identifiers by @Silvertree2010 in https://github.com/storytold/vectorcraft/pull/3254
- Encode trailing space as x20 in XML ids to keep round trip by @Silvertree2010 in https://github.com/storytold/vectorcraft/pull/3225
- Normalise negative zero in Measure tool angle by @Silvertree2010 in https://github.com/storytold/vectorcraft/pull/3230
- Keep fallback library name for blank GPL Name line by @Silvertree2010 in https://github.com/storytold/vectorcraft/pull/3323
- Root-argument tests: give the app 30 seconds to exit, not 5 by @lehni in https://github.com/storytold/vectorcraft/pull/3286
- Libraries: a User Defined library file whose reading panics is skipped by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3331
- M3.57: preserve fractional CSS gradient stop positions by @MMexicann in https://github.com/storytold/vectorcraft/pull/3284
- Leave the pattern tile edge and swatch bounds out of exports by @HEOJUNFO in https://github.com/storytold/vectorcraft/pull/3304
- Offset Path's Preview checkbox keeps its last state across opens (#3195) by @rahul05ranjan in https://github.com/storytold/vectorcraft/pull/3203
- Legacy .ai export: a radial gradient's color stops are written from ramp point 0 to 100 by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3285
- Warn on export when a font style is drawn in another style (#3229) by @MarekSpodBiedry in https://github.com/storytold/vectorcraft/pull/3251
- Save for Web: browser previews go only to a folder the current user owns by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3344
- Links: a link on a drive mapped to another share is not followed by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3321
- Fix lost diacritics with keyboard-hook IMEs (UniKey/OpenKey) by @jordanlemcc-ship-it in https://github.com/storytold/vectorcraft/pull/3307
- Fix Show and Hide Guides (#3219) by @MiQ71 in https://github.com/storytold/vectorcraft/pull/3269
- Fix [#3188]: arranging art inside a clipping mask keeps the clipping path at the bottom by @Taha-Mahmoodi in https://github.com/storytold/vectorcraft/pull/3206
- Fix [#3198]: the status bar's fps is the rate the window draws at, not an average of idle bursts by @Taha-Mahmoodi in https://github.com/storytold/vectorcraft/pull/3200
- Keep the swatch link when blending two tints of one swatch (#3234) by @MarekSpodBiedry in https://github.com/storytold/vectorcraft/pull/3252
- Keep stroke weight in document space on transformed type by @Silvertree2010 in https://github.com/storytold/vectorcraft/pull/3270
- Fix [#2820]: images drawn small redraw from their kept mips while being moved by @Taha-Mahmoodi in https://github.com/storytold/vectorcraft/pull/3208
- G1: Area type drag shows width and height in measurement labels by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3182
- G1: File Place cursor shows placed size in measurement labels while dragging by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3218
- G1: Reshape tool shows Smart Guide offset readouts while reshaping paths by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3217
- G1: Anchor Point tool shows move distance in measurement labels while Shift-dragging by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3205
- Appearance: Cmd+/ adds a new fill and Cmd+Alt+/ adds a new stroke by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3341
- File: Cmd+Alt+N makes a new document without the New Document dialog by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3324
- Artboards: the panel menu's Convert to Artboards converts the selected objects by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3339
- Select: Bristle Brush Strokes selects objects by their brush's type by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3337
- Brushes: Select All Unused selects the brushes the document does not use by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3334
- View: Show Live Paint Gaps highlights the gaps of the selected Live Paint groups by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3313
- Document Info: a Brushes category lists the document's brushes by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3330
- Brushes: Hue Shift without a key uses the most-used art color by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3333
- SVG import: support feBlend filter primitive and transparent backdrops by @odysseexp in https://github.com/storytold/vectorcraft/pull/3316
- Exclude retained trace bitmaps from result bounds and highlights by @FractalEncrypt in https://github.com/storytold/vectorcraft/pull/3271
- Persist Polygon and Star counts after exact-size placement by @FractalEncrypt in https://github.com/storytold/vectorcraft/pull/3257
- (3179) Envelope Distort by @AJMakesStuff in https://github.com/storytold/vectorcraft/pull/3189
- Pencil: Edit selected paths within 0 turns editing off by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3340
- Brush Options: Pattern Scale and Art Width have sliders by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3335
- Variables: the nothing-applied message clears when a later data set applies by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3299
- Tabs: a stop moved past another stays selected by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3265
- G1: a move over a panel waits and resumes on the canvas (#2826) by @ashsajal1 in https://github.com/storytold/vectorcraft/pull/3215
- G1: selection tools take a clipping path on its outline by @addibble in https://github.com/storytold/vectorcraft/pull/3246
- Distribute: selected ruler guides are spaced with the objects by @danngreen in https://github.com/storytold/vectorcraft/pull/3181
- UI: FilePick filters own their text, so a dialog's file types can be made at run time by @lehni in https://github.com/storytold/vectorcraft/pull/3177
- Live Paint: a Live Paint Selection click outside the faces selects the edge it highlights by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3305
- Live Paint: Merge keeps the group's lock, visibility, mask and graphic style link by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3327
- Swatches: a swatch made from a color the app shows keeps that color's model in a CMYK document by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3320
- Objects on Path: clipping paths and parts of blends, envelopes and repeats stay in place by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3322
- Tabs: in vertical type the alignments read Top- and Bottom-Justified Tab and the position Y by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3318
- Graphs: column designs show each column's value where their type has % and two digits by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3311
- EPS import: a PostScript error shows what its name means in the interface language by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3293
- Undo groups: a cancel drops only the canceled groups' entries from the journal by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3294
- Undo groups: library styles and field scrubs close only the group they open by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3287
- Type: the Every-line Composer composes paragraphs that mix type sizes in rectangular area type by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3295
- Paragraph: Insert Kashidas justifies Arabic lines with kashidas by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3288
- Type: Optical Margin Alignment hangs punctuation at the ends of type on a path by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3310
- Draw from centre (Alt) now applies to the typed size of a rectangle or ellipse (#3309) by @MarekSpodBiedry in https://github.com/storytold/vectorcraft/pull/3348
- Blob Brush: Shift keeps the stroke horizontal or vertical by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3351
- Layers: Cmd+Alt+L opens Layer Options for a new layer by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3355
- Build: the wasm check is warning-free; one file-dialog check instead of two by @Taha-Mahmoodi in https://github.com/storytold/vectorcraft/pull/3207
- i18n: each catalog names the blend spine with one term by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/2596
- Isolation mode: object.isolate refuses hidden or locked objects and locked guide paths by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/2671
- Export: area type that Shrink Text to Fit scales down is written at the size it draws at by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/2672
- Tests: the engine-language test runs a Japanese frame again by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/2682
- Pick placed images on their frame with Selection by Path Only by @HEOJUNFO in https://github.com/storytold/vectorcraft/pull/3306
- Part of [#1816]: Snap to Grid lands a moved object by its nearest edge and no longer snaps its center by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3336
- Brushes: colorization recolors type in scatter brush art by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3345
- Artboards: Rename gives several selected artboards one name, numbered by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3350
- Pencil and Paintbrush: holding Alt shows the closing loop cursor by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3352
- Canvas: the pointer's document point follows a wheel scroll or view drag in the same frame by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3364
- AI import: a gradient stop naming a process colour leaves its swatch process (#1771) by @AyberkA0 in https://github.com/storytold/vectorcraft/pull/1772
- PDF presets: Press Quality converts to Document CMYK, keeping its numbers (#2950, [#1242]) by @00xJS in https://github.com/storytold/vectorcraft/pull/3012
- Artboard tool: Shift-drag draws an artboard inside another or marquee-selects artboards by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/2497
- Shape Builder: double-clicking the tool opens Shape Builder Tool Options by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/2557
- Part of [#2384]: imported PDF text keeps its place when the file draws the space beside a wide gap by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/2688
- Web: a pan or zoom of a heavy document moves the last frame and renders once the view is still by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3329
- Artboards: each artboard can have a background color on the canvas by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/2403
- Use Preview Bounds: objects are measured with their geometry effects by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/2595
- PDF/.ai import: a .ai saved without PDF compatibility is placed and pasted from its editing data by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/2182
- feat(window): adopt shared craft-window for Linux decorations (depends on craft-libs#217) by @dylanmtaylor in https://github.com/storytold/vectorcraft/pull/3366
- Preferences: list the languages alphabetically by their own name by @nikolainyegaard in https://github.com/storytold/vectorcraft/pull/3371
- Save As: a typed extension of a format the save doesn't write is replaced by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3372
- Docs: the document.open pages sentence names the file saved without PDF compatibility by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3373
- Tests: the half-form test uses only a fallback face that forms Ka's half form (#2670) by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3376
- Type: a character typed with AltGr while editing text runs no command by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3382
- Tests: the data set export test checks the whole file in a folder emptied first (#2969) by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3389
- Data Recovery: the recovery folders are owner-only on Unix by @oracola91 in https://github.com/storytold/vectorcraft/pull/3406
- Docs: localization parity row counts match the catalogs on main by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3414
- ICC: all built-in profiles are checked for aligned sizes and tags by @KnottyDyes in https://github.com/storytold/vectorcraft/pull/3418
- Docs: localization parity lists the Dutch, Danish and Indonesian catalogs by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3438
- Library panels: a persistent panel whose file is gone stays listed as missing by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3368
- Brushes: dragging a brush reorders it within its type by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3369
- Effects: expanded, flattened and exported art keeps the random Transform the canvas drew by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3374
- Brushes: renaming or deleting a brush updates every stroke that uses it by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3385
- Dialogs: sliders step their field's number with the arrow keys by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3388
- Brushes: New Brush asks for the type and opens its Brush Options by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3390
- Symbols: F8 opens Symbol Options for a new symbol from the selection by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3397
- Type: Optical Margin Alignment hangs punctuation in right-to-left paragraphs by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3394
- G4: No Break keeps marked characters on one line by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3398
- Brush Options: Tips shows each colorization method on a sample by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3402
- Threaded text: type on a path threads, mixed with area type by @lehni in https://github.com/storytold/vectorcraft/pull/3408
- Threaded text: releasing a frame from a longer thread no longer duplicates its text by @lehni in https://github.com/storytold/vectorcraft/pull/3409
- G4: Fractional Widths rounds a type object's advances to whole points by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3411
- EPS/.ai editing data: type keeps stacked art styles as live appearance by @flamesquirrel in https://github.com/storytold/vectorcraft/pull/3419
- Print: JIS B4/B5 and Japanese paper sizes (はがき・封筒・四六判) by @midasdf in https://github.com/storytold/vectorcraft/pull/3422
- PDF export: PDF and .ai files carry File Info's copyright status, notice and URL by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3427
- Tabs: a stop placed or moved on the ruler lands on a whole point by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3433
- Place: Word's low, medium and high kashida justification sets Insert Kashidas by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3434
- Brushes: New Brush and Bristle Brush Options take a bristle brush name of at most 31 characters by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3312
- Keyboard Shortcuts: each Align and Distribute button of the Align panel can be given a key by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3317
- Artboards: the Artboards panel locks an artboard and the art on it by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/2592
- Fix [#2995]: reorder grouped panel tabs by dragging within the tab strip by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3000
- G2: Effect › Artistic › Dry Brush raster filter by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3026
- G1: Cmd+Alt temporarily lends Group Selection by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3053
- G2: Effect › Pathfinder › Hard Mix live effect by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3061
- G2: Texturizer Load Texture in effect dialog by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3070
- G5: Pattern brush Key Color eyedropper in Brush Options by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3075
- G1: Live Corners relative corner rounding (#1144) by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3091
- G4: Scale Text Attributes bakes object scale into type sizes by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3101
- G4: Paragraph panel indents and spacing show blank when paragraphs differ by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3136
- G12: Honor Preferences › Devices › Enable Touch Workspace by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3139
- Commands: an index of 2^32 or more no longer wraps around on 32-bit builds by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3292
- Fix [#2178]: Pathfinder Unite groups disconnected islands for Ungroup by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/2970
- G1: Properties: Edit Clipping Path and Edit Contents for one clip group by @addibble in https://github.com/storytold/vectorcraft/pull/3430
- Document Info: a Repeat Objects category lists the document's repeats by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3445
- Add lighting presets to 3D effects by @alpha-rock in https://github.com/storytold/vectorcraft/pull/3442
- Type: ruby (ふりがな) for live text by @midasdf in https://github.com/storytold/vectorcraft/pull/3448
- Commands: a boolean or number given as text is refused by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3428
- PDF import: letter-spaced text keeps its word spaces by @KnottyDyes in https://github.com/storytold/vectorcraft/pull/3417
- Text: an embedder of the egui panels may leave the bundled fonts out by @addibble in https://github.com/storytold/vectorcraft/pull/3431
- Variables: Load Variable Library… reads a variable library's text variables and data sets by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/2853
- G2: Effect › Artistic › Palette Knife raster filter by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3038
- G2: Effect › Artistic › Paint Daubs raster filter by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3032
- G2: Effect › Artistic › Underpainting raster filter by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3035
- G2: Effect › Artistic › Rough Pastels raster filter by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3044
- Type on a path: right-to-left text that overflows shows its start by @lehni in https://github.com/storytold/vectorcraft/pull/3415
- G2: Effect › Artistic › Colored Pencil raster filter by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3028
- i18n: the message scan reads errors made with bad() and error variants, and new ones need rows by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/2708
- G4: System Layout spaces every text object in whole points by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3412
- G2: Effect › Pathfinder › Soft Mix blends overlapping CMYK fills by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3063
- 3343: recognize PageMaker .pmd on open with a clear message by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3452
- Canvas: each update copies the rendered frame whole instead of pixel by pixel by @lehni in https://github.com/storytold/vectorcraft/pull/3453
- Character panel Tate-chu-yoko marks vertical type as a horizontal block by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3399
- G2: Effect › Sketch › Torn Edges raster filter by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3010
- G2: Effect › Artistic › Fresco raster filter by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3096
- Plug-ins: filters read and set effects and stroke styles (G17) by @KaboomFox in https://github.com/storytold/vectorcraft/pull/3174
- G4: Mark Snap to Glyph done in parity docs and test the menu toggle by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3456
- Recolor: recolor.apply takes a model option for the new colour's model (#2170) by @vangel76 in https://github.com/storytold/vectorcraft/pull/2520
- Live Paint: the Live Paint tools and livePaint.fill skip hidden faces by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3460
- Expand stroke: compact plain stroke spines before outlining by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3457
- Shape Builder: Gap Detection and Tool Options (#2523) by @vangel76 in https://github.com/storytold/vectorcraft/pull/2526
- Fix Eyedropper styling for highlighted text ranges by @mockydevs in https://github.com/storytold/vectorcraft/pull/3466
- UI.7: workspaces keep their layout changes by @gorkematlyn in https://github.com/storytold/vectorcraft/pull/3279
- UI.6: dock panels into any dock group by @gorkematlyn in https://github.com/storytold/vectorcraft/pull/3280
- UI.8: collapse dock groups to their tabs by @gorkematlyn in https://github.com/storytold/vectorcraft/pull/3281
- Character: Character Direction sets the selected characters left to right or right to left by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3436
- Type: the vertical ruby test passes with craft-fonts' Shippori Mincho by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3477
- Blend: Ease In / Ease Out and separate Color Ease in Blend Options (#1124) by @vangel76 in https://github.com/storytold/vectorcraft/pull/2539
- Canvas: an edit redraws only the area it changed by @lehni in https://github.com/storytold/vectorcraft/pull/3461
- Save As: the suggested extension typed in another case gets the picked type's by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3481
- G11: Align panel moves ruler guides to artboard (#3463) by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3483
- PDF export: a 16-bit PNG is written at 8 bits for PDF 1.3 and 1.4 instead of failing the export by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3464
- Tests: the data set export test fails when its folder cannot be emptied (#3389) by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3486
- Export: EPS, legacy .ai, EMF/WMF and DXF give one note for images that can't be decoded by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3482
- Ellipse pie angles in Transform and Properties (#3451) by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3468
- security: enforce HTTPS on curl downloads (SonarCloud S6506) by @dylanmtaylor in https://github.com/storytold/vectorcraft/pull/3475
- Use chrono instead of hand-rolled UTC conversion by @dylanmtaylor in https://github.com/storytold/vectorcraft/pull/3387
- Commands: Transform Each, artboards and more refuse a boolean or number given as text by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3487
- Export As: a held Enter doesn't confirm the options; exporters get their file by @KaboomFox in https://github.com/storytold/vectorcraft/pull/3488
- Render: moved type with mitred strokes redraws where its spikes reach by @lehni in https://github.com/storytold/vectorcraft/pull/3484
- ui: Effect Gallery dialog (browse raster filters and apply a stack) by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/2883
- Library panels: Locate Library… refuses a panel whose library is there by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3490
- Tests: the Expand Appearance reply test fails when the reply leaves out the expanded object (#3374) by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3491
- i18n: add Turkish (tr) localization by @Muratv07 in https://github.com/storytold/vectorcraft/pull/2581
- G11: Copy fill/stroke by dragging between proxies (#3467) by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3492
- Fix [#3465]: Swatch Libraries Other Library lists .ase on Linux by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3493
- Commands: path.create with path data refuses closed given as text, and the grids refuse a count by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3499
- Artboards: Rename opens on a selected artboard after a Ctrl/Cmd double-click or a paste by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3500
- Support dragging editable artwork between document tabs by @mockydevs in https://github.com/storytold/vectorcraft/pull/3479
- i18n(ja): Keyboard Shortcuts editor and the Print overprint note by @C0uki in https://github.com/storytold/vectorcraft/pull/3501
- Fix [#3480]: pattern edit preview honors Overlap stacking by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3498
- Add shared presets and artwork fitting to Artboard Options by @FractalEncrypt in https://github.com/storytold/vectorcraft/pull/3277
- UI: an embedder of the egui panels binds their font families without shipping their faces by @addibble in https://github.com/storytold/vectorcraft/pull/3512
- Fix [#3455]: Home recent reopen focuses existing document by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3502
- Fix [#3395]: color book library tabs use file name by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3518
- Fix [#3494]: translatable package status message by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3506
- Library panels: Locate Library… reads a missing library whose panel isn't persistent by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3520
- G4: Mixed paragraph composer menu checks by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3523
- PDF/X-1a and X-3: flattening keeps a CMYK document's inks where it rasterizes (#2160) by @odgrim in https://github.com/storytold/vectorcraft/pull/3524
- G11: Open Arc tool options on canvas click by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3507
- Rename the Preferences "Performance & Storage" category to "Storage" (#3410) by @dennisklappe in https://github.com/storytold/vectorcraft/pull/3469
- G11: Color Picker and popover Fill/Stroke proxy drags (#3440) by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3533
- Type: show recently used fonts in font pickers (#3515) by @MorningFrog in https://github.com/storytold/vectorcraft/pull/3535
- Type on a Path hits filled paths without a stroke (#3505) by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3534
- G4: Mixed paragraph Hyphenate checkbox by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3537
- G4: Mixed paragraph kinsoku and mojikumi dropdowns by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3539
- Render: moved stretched type redraws where its strokes reach by @lehni in https://github.com/storytold/vectorcraft/pull/3541
- G4: Mixed Justification dialog fields by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3542
- Fix [#2103]: arrow keys with the Artboard tool move the selected artboards and their art by @Taha-Mahmoodi in https://github.com/storytold/vectorcraft/pull/3549
- Fix [#3093]: panel scroll bars take a column of their own instead of covering controls by @Taha-Mahmoodi in https://github.com/storytold/vectorcraft/pull/3550
- Fix [#2452]: panning or zooming over detailed art no longer hit-tests it every frame by @Taha-Mahmoodi in https://github.com/storytold/vectorcraft/pull/3551
- Fix [#3443]: the Layers list's scroll bar no longer covers the rows' selection marks by @Taha-Mahmoodi in https://github.com/storytold/vectorcraft/pull/3554
- Artboards: the active artboard follows the Artboard tool after Paste, Cut and tool.setOption by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3557
- Fix Recolor Artwork Edit overflow with large palettes by @makesomethingshit in https://github.com/storytold/vectorcraft/pull/3476
- Package: File › Package collects and writes the package on the background thread by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3560
- README: the app icon above the title by @bflatastic in https://github.com/storytold/vectorcraft/pull/3583
- Gradient mesh: each tessellated quad shades between its corner colours, no banding by @bflatastic in https://github.com/storytold/vectorcraft/pull/3609
- Export: a typed extension of a format the export doesn't write is replaced by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3608
- Fix EPS counted metadata reads after CRLF line endings by @bflatastic in https://github.com/storytold/vectorcraft/pull/3614
- AF.5: Affinity import — strokes, text decoration, text placement, outline effects, CMYK photos by @dwetscher in https://github.com/storytold/vectorcraft/pull/3548
- Fix [#3545]: draw_path and draw_shape with a paint the engine refuses leave the document unchanged by @Taha-Mahmoodi in https://github.com/storytold/vectorcraft/pull/3611
- Fix [#3370]: stepping a number field stops at its bounds: a stroke weight at 0, a miter limit at 1 by @Taha-Mahmoodi in https://github.com/storytold/vectorcraft/pull/3612
- Fix [#3544]: an SVG of one artboard on its own has the artboard's name as its title by @Taha-Mahmoodi in https://github.com/storytold/vectorcraft/pull/3613
- i18n(ka): Georgian for 7 strings added since [#2045] by @devius in https://github.com/storytold/vectorcraft/pull/3616
- Effects: Sketch › Conté Crayon draws the dark areas in a black crayon and the light areas in a white one on textured paper by @Taha-Mahmoodi in https://github.com/storytold/vectorcraft/pull/3629
- CLI: run --commands reads the steps from a JSON file or standard input (#3147) by @Taha-Mahmoodi in https://github.com/storytold/vectorcraft/pull/3630
- Automation: --automation-read-root and --automation-write-root may each be given more than once (#3546) by @Taha-Mahmoodi in https://github.com/storytold/vectorcraft/pull/3631
- Place: Link keeps a placed PDF or .ai linked to its file by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3496
- Gradients: Dither in the Gradient panel draws a gradient fill with fine noise that hides banding by @Taha-Mahmoodi in https://github.com/storytold/vectorcraft/pull/3637
- Shortcuts: a command on Cmd+Enter or Cmd+Escape runs without the tool's Enter or Escape by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3638
- Fix Spiral tool click options dialog by @MiQ71 in https://github.com/storytold/vectorcraft/pull/3636
- Fix [#3623]: a word gap between two sizes reads as a space in PDF import by @pat26-dotcom in https://github.com/storytold/vectorcraft/pull/3641
- Package: a file the writer refuses is named once in the error by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3647
- G4: Mixed paragraph direction leaves direction buttons unselected by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3648
- G4: Mixed Hyphenation dialog fields by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3649
- Restore and remember maximized window state by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3660
- G8: Regression test for art style filter cap by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3662
- Shape Builder: Pick Color From Artwork takes the look where the drag starts, else where it ends by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3664
- Gradients: dithered fills sample only what shows; review follow-ups to [#3637] by @Taha-Mahmoodi in https://github.com/storytold/vectorcraft/pull/3668
- G12: honor Use Low Resolution Proxy for Linked EPS (#394) by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/2975
- Artboards: an action or Batch… that reverts or switches documents keeps the active artboard by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3670
- Type: colour emoji fonts with bitmap glyphs draw and export by @lehni in https://github.com/storytold/vectorcraft/pull/3561
- Fix [#3646]: display PDF document title by @MiQ71 in https://github.com/storytold/vectorcraft/pull/3667
- Package: reads placed pages and document previews only for the options that use them by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3681
- SVG import: read the text once for the prepass's markers, with the data URLs left out by @addibble in https://github.com/storytold/vectorcraft/pull/3677
- Gradients: paint.setStroke refuses a dithered gradient when "swatch" is null by @Taha-Mahmoodi in https://github.com/storytold/vectorcraft/pull/3682
- Wrap to_hsb hue of 360 back to 0 for near-red colours by @Silvertree2010 in https://github.com/storytold/vectorcraft/pull/3683
- SVG import: images in images share the depth cap, SVGZ images one unpacking cap (#3562, [#3563]) by @odgrim in https://github.com/storytold/vectorcraft/pull/3676
- Gradients: Method › Perceptual mixes a gradient's colours in OKLab; SVG and PDF write it as an image by @Taha-Mahmoodi in https://github.com/storytold/vectorcraft/pull/3684
- Shape Builder: in merge mode, a click on a stroke splits the path there by @dotCooCoo in https://github.com/storytold/vectorcraft/pull/3665
- Save for Web: initialize from the active artboard by @makesomethingshit in https://github.com/storytold/vectorcraft/pull/3634
- Import: type on a closed path keeps its wrapped end bracket by @ham9zah in https://github.com/storytold/vectorcraft/pull/3685
- SVG import: leave out a data URL inside url(…) too, and jump over each one by @addibble in https://github.com/storytold/vectorcraft/pull/3688
- Map pen barrel buttons before egui-winit drops them by @nrq6993-a11y in https://github.com/storytold/vectorcraft/pull/3659
- Accept an explicit leading plus sign in Unit::parse by @Silvertree2010 in https://github.com/storytold/vectorcraft/pull/3690
New Contributors
- @lehni made their first contribution in https://github.com/storytold/vectorcraft/pull/3286
- @MMexicann made their first contribution in https://github.com/storytold/vectorcraft/pull/3284
- @rahul05ranjan made their first contribution in https://github.com/storytold/vectorcraft/pull/3203
- @jordanlemcc-ship-it made their first contribution in https://github.com/storytold/vectorcraft/pull/3307
- @odysseexp made their first contribution in https://github.com/storytold/vectorcraft/pull/3316
- @ashsajal1 made their first contribution in https://github.com/storytold/vectorcraft/pull/3215
- @addibble made their first contribution in https://github.com/storytold/vectorcraft/pull/3246
- @nikolainyegaard made their first contribution in https://github.com/storytold/vectorcraft/pull/3371
- @oracola91 made their first contribution in https://github.com/storytold/vectorcraft/pull/3406
- @flamesquirrel made their first contribution in https://github.com/storytold/vectorcraft/pull/3419
- @mockydevs made their first contribution in https://github.com/storytold/vectorcraft/pull/3466
- @C0uki made their first contribution in https://github.com/storytold/vectorcraft/pull/3501
- @dennisklappe made their first contribution in https://github.com/storytold/vectorcraft/pull/3469
- @MorningFrog made their first contribution in https://github.com/storytold/vectorcraft/pull/3535
- @pat26-dotcom made their first contribution in https://github.com/storytold/vectorcraft/pull/3641
Full Changelog: https://github.com/storytold/vectorcraft/compare/v0.14.0...v0.15.0