What's Changed
- Grant network access so update checks can reach GitHub by @dylanmtaylor in #4482
- Honor CARGO_BUILD_TARGET in FreeBSD packaging for aarch64 release builds by @dylanmtaylor in #4487
- Enforce Rust coding standards via Clippy by @dylanmtaylor in #4299
- Remove the experimental Windows 7 build by @dylanmtaylor in #4497
- Seed PDF encryption keys from the OS random source by @Silvertree2010 in #4391
- Fix ColorKey Display overflow on huge negative Lab a/b by @Silvertree2010 in #4321
- Reject non-hex characters in Image Trace ignoreColor by @Silvertree2010 in #4323
- Reject non-hex digits in RTF 'XX escapes by @Silvertree2010 in #4330
- Accept CRLF lines of exactly the maximum length in the MCP reader by @Silvertree2010 in #4409
- Reject non-hex characters in EPS uni/u glyph names by @Silvertree2010 in #4449
- Reject a sign after # in EPS PostScript radix numbers by @Silvertree2010 in #4460
- Reject fractional DXF integer values by @TheGalitube in #4514
- Blend: nested blends keep to a step budget (#3579) by @mockydevs in #4513
- Fix #3564: SVG import: cap converted objects and nested images by @el-j in #4436
- Accept whole-number floats as grid divider counts by @Silvertree2010 in #4315
- Artboards: artboard.new and artboard.setProps refuse a number or name of the wrong type by @dotCooCoo in #4448
- Layers: the Layers panel's commands refuse a boolean given as text by @dotCooCoo in #4429
- Edit Colors: Saturate without an intensity is an error instead of a pass at 0 by @dotCooCoo in #4483
- perf(ui-egui): eliminate zero-filling allocation on canvas texture upload in color_image (#4504) by @el-j in #4512
- Keep compound path holes when using the Eraser and Knife by @Silvertree2010 in #4501
- Fix #3773: Offset Path offsets a path whose ends meet as a closed shape by @dotCooCoo in #4362
- Expand the stroke of stroked type into filled outlines by @Silvertree2010 in #4328
- Fix #4237: Add Anchor Point selects the path it adds to by @Hassan1305 in #4325
- Appearance: a mixed selection's object chip shows "?" when the fills differ by @ham9zah in #4316
- Appearance: Add New Fill and Add New Stroke with an empty ids list run nothing without a selection by @dotCooCoo in #4408
- Tests: the idle cursor test renders every frame on the test thread by @dotCooCoo in #4425
- Fix #4151: DXF export: verify closed circular subpaths complete a full turn without reversing by @el-j in #4433
- Apply Transparency opacity to the clicked gradient mesh point by @Silvertree2010 in #4331
- Properties: test that typed transforms turn about the reference point (#4285) by @ham9zah in #4335
- Curvature: deleting a point re-curves the path through the remaining points by @dotCooCoo in #4361
- Stroke Weight: a step from a weight between the presets goes to the next preset by @dotCooCoo in #4363
- Fix Shift-scaling a corner handle along a single axis by @Silvertree2010 in #4367
- Shape Builder: a merge walks the arrangement once per batch of faces by @dotCooCoo in #4375
- Pencil: Alt smooths as far from the drag as the Smooth tool does by @dotCooCoo in #4376
- Blob Brush: Alt switches to the Smooth tool while it is held by @dotCooCoo in #4380
- Arc tool: C, F and Up/Down change the arc while it is dragged out by @dotCooCoo in #4384
- Width tool: Escape deselects the selected width points by @dotCooCoo in #4385
- Document: Cmd+Alt+Shift+U switches to the next unit of measurement by @dotCooCoo in #4386
- Type tools: Shift switches between horizontal and vertical, and Alt switches between area and path type by @dotCooCoo in #4387
- Scissors: Alt held switches to the Add Anchor Point tool by @dotCooCoo in #4388
- Part of #4326: a drag whose mouse-up was lost ends once macOS reports no button down by @dotCooCoo in #4398
- Color panel: Cmd/Ctrl-click and Cmd/Ctrl+Shift-click on the spectrum apply Complement and Invert by @dotCooCoo in #4399
- Gradient: Cmd/Ctrl-click on the Gradient Fill box or the Gradient button resets to White, Black by @dotCooCoo in #4400
- Layers: Alt-click on a layer name selects the layer's art by @dotCooCoo in #4401
- Export for Screens: a ZIP export deflates its files by @dotCooCoo in #4393
- Export: document.export takes a pixel width or height for raster files by @dotCooCoo in #4394
- Part of #3235: PDF import keeps the spot swatch of a DeviceN color that mixes inks by @dotCooCoo in #4395
- i18n: Character panel Kerning and Tracking terms agree in each catalog by @dotCooCoo in #4403
- Type: Undo and Redo put the caret where the undone or redone edit was by @dotCooCoo in #4404
- Fix #4036: a .ai swatch library without layers loads its palette, not the default swatches by @dotCooCoo in #4405
- Layers: Cmd/Ctrl+Alt-click places a new layer below the current one and a new sublayer at the bottom by @dotCooCoo in #4407
- Blob Brush: a stroke merges with the topmost matching path and its neighbors in its group or layer by @dotCooCoo in #4410
- Character and Paragraph Styles: a style dropped on New is copied, and one dropped on Delete is deleted by @dotCooCoo in #4413
- Blob Brush: Tool Options set its Fidelity by @dotCooCoo in #4414
- Tabs: the position field's label is translated by @dotCooCoo in #4416
- Arc tool: a closed arc with Base Along Y draws the X-axis sector mirrored by @dotCooCoo in #4417
- Text styles: the panel menu's Duplicate highlights the copy and Delete clears the highlight by @dotCooCoo in #4419
- Distort tools: Escape cancels a Puppet Warp, perspective or Liquify drag by @dotCooCoo in #4421
- Object: Lock, Hide, Unlock All and Show All are off in isolation mode by @dotCooCoo in #4422
- Keyboard Shortcuts: commands that need a value are not listed unless given a shortcut by @dotCooCoo in #4423
- Fix #4143: Window menu lists panel items alphabetically by localized name by @el-j in #4424
- i18n: each catalog names leading with one term by @dotCooCoo in #4426
- fix(format): read a native document within an object budget (#3587) by @mockydevs in #4515
- fix(format): remove what a native file has beyond the canvas (#3575) by @mockydevs in #4519
- Tools: Escape cancels an Anchor Point, Mesh, Shape Builder or Measure drag by @dotCooCoo in #4430
- Star tool: Ctrl/Cmd holds the inner radius the star shows when the key goes down by @dotCooCoo in #4432
- Envelopes: Anti-Alias and Preserve Shape Using change how distorted images draw by @dotCooCoo in #4434
- Snap to Glyph: points land on glyph anchors and line up with x-height, character widths and angles by @dotCooCoo in #4437
- Selection tool: Escape cancels a move, scale, rotation, marquee or widget drag by @dotCooCoo in #4438
- Object: Unlock All and Show All with Shift+Alt act only within the selected object's group by @dotCooCoo in #4439
- Contextual Task Bar: a Stroke chip beside Fill picks the stroke color by @dotCooCoo in #4440
- Transparency: isolation mode and opacity mask editing can't be entered from each other by @dotCooCoo in #4441
- Blend: Escape drops the Blend tool's first pick by @dotCooCoo in #4444
- Brushes: Pattern Brush Options' corner tiles can be None or made from the side tile by @dotCooCoo in #4445
- Tests: tests that depend on wall-clock time or font loads pass on a loaded machine by @dotCooCoo in #4450
- Tests: the nested-instance culling tests count the symbol art a frame measures by @dotCooCoo in #4452
- Live Paint: a Live Paint Selection marquee selects the faces and edges it touches by @dotCooCoo in #4456
- i18n: Enter Isolation Mode's errors show in the interface language by @dotCooCoo in #4457
- Shaper: Shaper Group edits keep the opacity mask and pattern editing layers isolated by @dotCooCoo in #4464
- Tests: the MCP remote-backend tests pass on a loaded machine by @dotCooCoo in #4478
- Save As: on Linux an older portal's answer to the save dialog is no longer lost by @dotCooCoo in #4480
- Document Color Mode: also converts graph designs, graphic styles, opacity masks and brush art by @dotCooCoo in #4500
- test(app): keep a child's start from holding the GPU start file's lock by @mockydevs in #4520
- Fix canvas pointer mapping under subpixel dock layouts by @bflatastic in #4540
- i18n(ru): 363 rows the Russian catalog was missing by @JaffarSk24 in #4320
- i18n(ka): Georgian wording fixes for 10 rows by @devius in #4327
- i18n(ka): Georgian for the batch dialog, PDF presets, dimension options and swatch names by @devius in #4374
- i18n: add Catalan (ca) localization by @krosk93 in #4453
- Pattern Brush: keep the tile's curves on a straight run (#3926) by @saad-mughal435 in #3954
- Shape Builder: a merge replaces only the paths it uses, where they are by @dotCooCoo in #4094
- Canvas: a pan or zoom-out fills the uncovered area with low-resolution art by @dotCooCoo in #4256
- Support EPS Save and Save As with editable data by @mockydevs in #4293
- Path: Object › Path › Smooth with a slider and Auto-Smooth (#4115) by @bflatastic in #4543
- macOS: the app builds and passes clippy again after main.rs was split by @dotCooCoo in #4531
- Flare: preview options and restore defaults with Alt or Option by @dotCooCoo in #4446
- Swatches: global swatch edits also update graph designs and the art of brushes by @dotCooCoo in #4489
- Blob Brush: keep the first Shift axis without moving earlier points by @dotCooCoo in #4525
- Map hyphenation exception break points to the original word's chars by @Silvertree2010 in #4530
- Part of #3137: Color Guide takes its base from colors chosen in Color, Swatches and the Color Picker by @dotCooCoo in #4532
- Fix #2249: macOS converts the canvas from sRGB to the display's profile by @dotCooCoo in #4534
- Drop Shadow: apply Darkness in the source color space by @dotCooCoo in #4535
- Shapes: the Rectangle and Ellipse dialogs link Width and Height by @nevarem in #4537
- Object: Cmd/Ctrl+Alt+Shift+3 hides every unselected object by @dotCooCoo in #4418
- Direct Selection: a drag from a fill moves only the selected anchors of partly selected paths by @dotCooCoo in #4443
- Shaper: dragging a shape out of a Shaper Group's bounds takes it out of the group by @dotCooCoo in #4415
- Round stepper button steps like arrow-key steps by @Silvertree2010 in #4494
- Tests: the pan-fill canvas test runs again when another test moves the placed-document clock by @bflatastic in #4550
- Text: keep a letter and its marks in one font when falling back (#4491) by @bflatastic in #4549
- Preserve comment markers inside CSS strings by @TheGalitube in #4553
- Tests: the non-sRGB Drop Shadow test fails when its child test does not run by @dotCooCoo in #4557
- Retain spacing when rearranging artboards by @TheGalitube in #4570
- Keep Smooth's closed-path start corner within the tolerance by @Silvertree2010 in #4571
- Object: Hide Unselected Artwork keeps a selected layer's art and groups that hold locked guides by @dotCooCoo in #4575
- Properties: selected ruler guides show their position in a Transform section by @nevarem in #4572
- Selection: a press where a mask hides a selected object's art grabs it by @nevarem in #4552
- Fix #4283: a wheel notch zooms at once without Animated Zoom by @Hassan1305 in #4313
- Import: dimension labels from Illustrator files come in once, right to left by @ham9zah in #4547
- perf(engine): gate post-edit Shaper and Text-Wrap maintenance via edited-root diffing (#4554) by @el-j in #4560
- Tests: the MCP concurrency, folder search and artboard export tests pass on a loaded machine by @dotCooCoo in #4473
- Blend: choosing the Blend tool again finishes the blend by @dotCooCoo in #4454
- Zoom tool: Space held while dragging moves the zoom marquee by @dotCooCoo in #4372
- Image Trace: Document Library fills link to the document's global swatches by @dotCooCoo in #4396
- Place: an image whose pixels can't be read is refused instead of placed blank by @dotCooCoo in #4257
- Transparency: pattern editing mode and opacity mask editing can't be entered from each other by @dotCooCoo in #4458
- Fix #3089: a stroked line with an effect expands to a stroked line, then Expand outlines it by @Taha-Mahmoodi in #4169
- Blend: a click picks again when the Blend tool's first pick is gone by @dotCooCoo in #4447
- Image Trace: Manage Presets saves, renames and deletes custom tracing presets by @dotCooCoo in #4071
- Libraries: gradients and patterns can be added to a library and applied from it by @dotCooCoo in #4442
- Fix #4567: vertically center numbers and text in input fields by @el-j in #4577
- Fix #4542: Edit › Color Settings… and Assign Profile… show the Separations Preview panel by @bflatastic in #4578
- Fix #4518: a dialog or floating panel over the canvas hides the pointer from it by @bflatastic in #4579
- Fix #4538: New Layer and New Sublayer are refused while an opacity mask is edited by @bflatastic in #4580
- Isolation mode: breadcrumbs are clickable to navigate hierarchy levels (#4468) by @el-j in #4474
- Fix #4523: a new document's VectorCraft Options start as the last native save used them by @bflatastic in #4581
- Fix #4382: the Eyedropper's Alt-click applies what it picked up when nothing is selected by @bflatastic in #4583
- Fix #4565: preview Pencil and Paintbrush strokes at half a pixel at most by @bflatastic in #4585
- Fix #2754: Shift+Enter inserts a soft return (forced line break) by @Taha-Mahmoodi in #4584
- Web build: show the app icon as the tab and home-screen icon by @gjrtimmer in #4587
- Fix #4466: a Direct Selection double-click outside isolated art leaves isolation mode by @bflatastic in #4588
- Fix #2033: An EPS whose layers can't be used keeps its layer tree by @Ridzzz0Alam in #4589
- Fix #4564: Turkish "Open" reads "Aç" on buttons; the Arc tool's open arc keeps "Açık" by @bflatastic in #4591
- i18n: Turkish "Place" is the command (Yerleştir), not the noun (Yer) by @bflatastic in #4594
- Direct Selection: a further Alt-click adds the path's group, then the next group up by @dotCooCoo in #4381
- Flare: make ray rotation independent of pointer event rate by @dotCooCoo in #4389
- Character: Cmd/Ctrl+Alt+K highlights the kerning and Cmd/Ctrl+Alt+Shift+F highlights the font name by @dotCooCoo in #4390
- Effects: Roughen, Pucker & Bloat and Tweak show sliders (#4488) by @bflatastic in #4592
- Fix #3569: a PDF that draws one form over and over can't exhaust memory or hang the import by @bflatastic in #4601
- Fix #4150: Windows doesn't start OpenGL unless a start needs it by @VoiceLessQ in #4600
- Fix #3209: SVG export writes type sizes and spacing in CSS with px by @Ridzzz0Alam in #4604
- PDF import: a refused file says which stream it trips on (refs #4366) by @VoiceLessQ in #4603
- perf(svg): compute unique ID prefix directly to avoid duplicate document serialization (#4555) by @el-j in #4563
- Fix #3098: Image Trace traces off the UI thread, with progress and Cancel by @VoiceLessQ in #4605
- Fix #3926: Art, Scatter and Pattern brush art keeps its curves where the path bends by @bflatastic in #4606
- Fix #4459: retain text properties when copying text across documents by @Taha-Mahmoodi in #4608
- Windows: keep OpenGL for a GPU without Direct3D 12 and for a named adapter (#4150) by @VoiceLessQ in #4607
- perf(effects): reorder pure-translation Transform copies after round-join terminal Offset Path (#4145) by @el-j in #4611
- Fix #2238: Properties doesn't offer Offset Path and Simplify for type alone by @Ridzzz0Alam in #4613
- PDF import: a page's content listed in an array object is named as content (refs #4366) by @VoiceLessQ in #4612
- fix(canvas): allow multi-selecting artboards via Shift-click on canvas label (#4484) by @el-j in #4485
- Window: Cmd+F6 and Cmd+Shift+F6 go to the next and previous document by @dotCooCoo in #4377
- Type: Cmd/Ctrl+Shift+U underlines, and Cmd/Ctrl+Alt+Shift+C and H toggle the line composer and hyphenation by @dotCooCoo in #4383
- Character and Paragraph Styles: Alt-click on New asks for the new style's name by @dotCooCoo in #4402
- File formats: PCX (.pcx) files open and place by @dotCooCoo in #4428
- Direct Selection: a marquee selects area type's frame anchors by @dotCooCoo in #4435
- Recolor Artwork and swatch libraries: parameters of the wrong form are errors by @dotCooCoo in #4492
- Images: a fill color colorizes grayscale and 1-bit images by @dotCooCoo in #4431
- Pathfinder: live compound shapes (Make, Shape Mode, Release, Expand Compound Shape) by @bflatastic in #4621
- Fix #3232: a CMYK gradient mesh keeps its K when lightened by @mockydevs in #4619
- Fix #4420: import attached Affinity recolor adjustment layers as color overlays by @Taha-Mahmoodi in #4620
- Image Trace: background traces see library colour changes, and keep frames coming (#3098) by @VoiceLessQ in #4617
- Blob Brush and Eraser: Size follows the pen pressure (#4590, #3961) by @bflatastic in #4626
- Contributors: add Ashok Ram by @ashokram-si in #4627
- Docs: cut the progress docs' status lines back to their latest change by @bflatastic in #4630
- Align: Align to Glyph Bounds for point and area type (#4231) by @bflatastic in #4631
- Linux clipboard: stop the retry storm by @wjrichards in #4629
- Type: Character panel › Show Snap to Glyph Options (#4232) by @bflatastic in #4636
- Gradient Mesh: select several mesh points; move, color and opacity reach them all (#4207, #4208, #4170) by @bflatastic in #4639
- Separations Preview: hidden plates leave raster images too (#4153) by @bflatastic in #4647
- Fix #4233: Direct Selection drags art onto Asset Export and the other panels by @mockydevs in #4645
- Fix #4469: Direct Selection's task bar offers the path's anchor actions by @mockydevs in #4642
- Fix #4625: UI settings survive a relaunch and a second window by @mockydevs in #4641
- Docs: audit which Preferences options act (G12) by @bflatastic in #4649
- Fix #3510: editing data past 512 MiB opens with its layers where memory allows by @mockydevs in #4640
- packaging: Flatpak finds and prints to CUPS printers by @dylanmtaylor in #4634
- Close all gaps in solid-like dash pattern for odd-length dashes by @Silvertree2010 in #4650
- Fix #3911: EMF export writes a pattern fill as one shape per part of its tile by @mockydevs in #4648
- Path: Average & Join with a corner or smooth choice, Cmd+Alt+Shift+J (G1) by @bflatastic in #4655
- Direct Selection: a marquee over part of a segment selects it (#4654) by @bflatastic in #4657
- Guides: a ruler guide shows while dragged with Real-time Drawing off (#4646) by @bflatastic in #4659
- .ai import: a PDF part cropped to the art no longer hides the layers by @mockydevs in #4658
- .ai import: a file whose PDF part is an empty page opens from its editing data by @mockydevs in #4651
- PDF export: gradient meshes as smooth Type 6 patch shadings by @mockydevs in #4653
- Effect dialogs keep a typed distance within the effect's range by @datatimp in #4663
- i18n(ja): translate the update check and the trace progress labels by @C0uki in #4661
- .ai import: a placed file on %_ lines no longer drops the layers by @mockydevs in #4660
- deps: bump tar, zip, roxmltree, rustls-webpki and symphonia to latest by @dylanmtaylor in #4662
- CI: workflows only call craft-common-actions at @main (AGENTS.md; windows-arm64 unpinned) by @dylanmtaylor in #4656
- SVG export: rectangles, circles, ellipses, lines and straight paths as SVG shape elements (#4652) by @bflatastic in #4668
- .ai import: try a placed file at its box's corner when the layers differ by @mockydevs in #4664
- Touch: a second finger cancels a tool gesture the first one started; the pinch pans and zooms (#4198) by @bflatastic in #4672
- Color Mixer popover: the Color panel's menu, with its color modes (#4249) by @bflatastic in #4673
- Control bar: Replace menu for selected symbol instances (#4121) by @bflatastic in #4674
- Spinners: a held arrow repeats after a pause (#4267) by @bflatastic in #4675
- Update prompt shows the app icon and accent color instead of a letter by @dylanmtaylor in #4671
- Add-ons: Artwork Cleanup — simplify keeping shape, health check, deep ungroup, rejoin by @bflatastic in #4678
- Fix pretend-version testing for update prompts by @dylanmtaylor in #4677
- Add-ons: Color Effects — live exposure, desaturate and invert, apply as filter, panel by @bflatastic in #4680
- Add-ons: Path Precision Tools — anchor eraser brush, extend path, measure, anchor inspector, crossings by @bflatastic in #4685
- Add-ons: Smart Pen — draw and edit paths with one tool, panel by @bflatastic in #4689
- fix(pathops): a huge stroke width with round joins no longer panics Outline Stroke by @jayzed80 in #4683
- Fix #4638: clamp bounded effect length inputs on commit and reject invalid input visibly by @Taha-Mahmoodi in #4682
- Linux clipboard: copy text through the core Wayland protocol by @wjrichards in #4624
- Draw Inside marks the corners of the object it draws into (#4319) by @bflatastic in #4690
- Contextual Task Bar: stays up through a click on another object, hides only for a drag (#4681) by @bflatastic in #4692
- Place: a photo's EXIF orientation turns it upright (#4284) by @bflatastic in #4693
- View › Hide Artboards hides their edges and shows the canvas as paper (#4038) by @bflatastic in #4694
- Full Screen and Presentation Mode fill the screen (#4365) by @bflatastic in #4695
- Gradient stop popover: an eyedropper samples the stop's colour from the art (#4681) by @bflatastic in #4696
- Add-ons: Color Effects — select by color kind (spot colors, color effects, RGB, CMYK and grayscale images) by @bflatastic in #4699
- Presentation Mode fits the active artboard and hides selections, guides, grids and artboard edges by @bflatastic in #4700
- Smart Pen: an Alt-drag away from paths selects the points inside a marquee by @bflatastic in #4703
- .ai/EPS import: read gradient meshes in named colours, mixed colour spaces and large grids by @mockydevs in #4697
- .ai import: an empty page with skipped content isn't taken for empty; outlines asked for are given by @mockydevs in #4698
- PDF import: large mesh shadings and mesh-painted strokes come in as gradient meshes by @mockydevs in #4702
- feat: show six Distribute Objects buttons in Control bar when 2+ objects selected (Illustrator parity) by @adambelis in #4561
- Gradient panel: presets to apply, save and delete (G13) by @ashokram-si in #4701
- i18n(sv): translate 32 new strings, use the agreed terms in 11 by @kler in #4691
- Libraries panel: art and colors dragged in are added where they are dropped by @danngreen in #4463
- Add-ons: Parametric Shape Tool — re-editable stars, polygons, rings, arrows, gears and more by @bflatastic in #4709
- Text styles: Select All Unused highlights the unused styles, and Delete deletes them all by @dotCooCoo in #4486
- Add-ons: Color Effects — live Vector Halftone effect by @bflatastic in #4721
- 3D Extrude & Bevel, Inflate and Rotate apply to type, which stays editable (#4715) by @bflatastic in #4724
- Spiral tool: Alt-drag adds or removes winds and Ctrl/Cmd-drag changes the decay by @dotCooCoo in #4725
- PDF export: bound a colorized image's color channel by @dotCooCoo in #4716
- Libraries: library loads check name before reading the file by @dotCooCoo in #4717
- Graphic Styles: addFromLibrary treats ids: null as left out by @dotCooCoo in #4718
- PDF: colorized images count as transparency for PDF 1.3 and PDF/X by @dotCooCoo in #4720
- Images: color edits recolor a colorized image's fill by @dotCooCoo in #4731
- Character and Paragraph Styles: a style made by the New style dialog or the panel menu is highlighted by @dotCooCoo in #4713
- Knife: Alt cuts in a straight line and Shift+Alt cuts at 45° steps by @dotCooCoo in #4726
- Pencil and Blob Brush: Alt smooths with the Smooth tool's Fidelity by @dotCooCoo in #4706
- Pathfinder: Cmd+4 repeats the last Pathfinder operation by @dotCooCoo in #4730
- .ai import: keep All Caps and Small Caps on type from the editing data by @mockydevs in #4708
- .ai import: weigh unseen text again at the placed files' other placement by @mockydevs in #4723
- .ai import: pages cropped to the art in UserUnit units, and their copies' type by @mockydevs in #4727
- .ai import: outlines from the editing data keep their look and threads; mesh corners with non-numbers are unread by @mockydevs in #4729
- Perspective Selection: Cmd/Ctrl+Alt-drag copies objects in perspective by @dotCooCoo in #4714
- Image Trace: Document Library links to a global swatch that shares a process swatch's color by @dotCooCoo in #4705
- Canvas: Shift, Alt and Cmd/Ctrl pressed or released mid-drag apply with the pointer held still by @bflatastic in #4735
- Add-ons: Color Effects — Duotone effect and Print Ink Fixes by @bflatastic in #4734
- Testkit: temp_dir starts empty in each process, so a reused process id can't fail a test by @bflatastic in #4737
- bs: Add Bosnian (bs) to the interface languages by @nine-codes in #4722
- .ai/EPS import: read gradient mesh corners whose handle weights are 0 by @mockydevs in #4738
- .ai/EPS import: a gradient mesh takes the transparency written after it by @mockydevs in #4744
- .ai/EPS import: crop marks after the layers and type inside placed PDFs no longer lose the layers by @mockydevs in #4740
- .ai import: put placed files where they draw closer to the page by @mockydevs in #4742
- .ai import: space type on a path round curves as the file lays it out by @mockydevs in #4743
- Swatches: a Shift-click after switching documents starts a new range by @dotCooCoo in #4733
- Add-ons: Artwork Cleanup — text tools by @bflatastic in #4741
- chore(deps): bump the cargo-patch group across 2 directories with 4 updates by @dependabot[bot] in #4665
- Type: required lam-alef is not an alternate in fonts that put it in liga (#394) by @mockydevs in #4746
- .ai/EPS import: a layer's state after its last mesh stays the layer's by @mockydevs in #4748
- Type: Alt+arrow spacing steps turn with vertical type by @dotCooCoo in #4747
- View: Escape in either Full Screen Mode returns to Normal Screen Mode by @dotCooCoo in #4745
- Panels: a second press of a panel's function key hides its group by @dotCooCoo in #4749
- EPS import: read layers whose type is in the legacy format beside a page with text by @mockydevs in #4752
- docs: record the .ai/EPS import fixes from a user's file audit by @mockydevs in #4751
- Object: Cmd/Ctrl+Alt+Shift+2 locks every unselected object by @dotCooCoo in #4753
- Shortcuts: Shift+Comma and Shift+Period also apply the last color and gradient by @dotCooCoo in #4750
- Transform tools: backquote drag transforms only the pattern by @dotCooCoo in #4754
- EPS import: keep a layer's opacity when its state block has the stroke style by @mockydevs in #4755
- Add-ons: Path Precision Tools — Corner Tool and Slide Anchor by @bflatastic in #4758
- .ai/EPS import: a masked gradient mesh takes the transparency after its mask by @mockydevs in #4756
- .ai/EPS import: a blend takes the transparency written after its record by @mockydevs in #4757
- .ai import: compare a PDF of some artboards on the artboard its page shows by @mockydevs in #4759
- .ai/EPS import: a layer's state after its last blend stays the layer's by @mockydevs in #4760
- PDF import: take a group's knockout and isolate flags from the interpreter by @mockydevs in #4763
- Testkit: the temp_dir test pre-makes a private directory, as temp_dir does by @mockydevs in #4766
- PDF export: cache colorized images that can't be exported by @dotCooCoo in #4764
- PDF export: leave out an object whose opacity mask lost an image by @dotCooCoo in #4765
- fix(flatpak): allow reading launcher version pins by @dylanmtaylor in #4767
- Add-ons: Path Precision Tools — live path effects by @bflatastic in #4771
- Legacy .ai: colorized image pattern tiles keep their color by @dotCooCoo in #4769
- Canvas: pressing or releasing backquote mid-drag updates the live preview by @dotCooCoo in #4770
- View: Escape that cancels a ruler or Tools move does not reach the tool by @dotCooCoo in #4772
- Paintbrush: Alt held at the press smooths a selected path by @dotCooCoo in #4768
- Clipboard: TEXT_ONLY is built on Linux only, so clippy passes on macOS by @dotCooCoo in #4774
- M5: opaque knockout fills draw once in hard-edge and supersampled raster export by @mockydevs in #4773
- Live Paint: Alt-click and Alt+Shift-click with the Bucket sample with the Eyedropper by @dotCooCoo in #4775
- Add-ons: Path Precision Tools — Shared Edge Merge by @bflatastic in #4778
- Tabs: the ruler's indent markers set the first-line and left indents by @dotCooCoo in #4776
- Image Trace: Document Library fills are not linked to swatches by @dotCooCoo in #4777
- Render: leave out an object whose opacity mask lost an image by @dotCooCoo in #4780
- Path Precision Tools: the Shared Edges fields read like the others in the panel by @bflatastic in #4781
New Contributors
- @TheGalitube made their first contribution in #4514
- @Hassan1305 made their first contribution in #4325
- @JaffarSk24 made their first contribution in #4320
- @krosk93 made their first contribution in #4453
- @nevarem made their first contribution in #4537
- @gjrtimmer made their first contribution in #4587
- @Ridzzz0Alam made their first contribution in #4589
- @VoiceLessQ made their first contribution in #4600
- @wjrichards made their first contribution in #4629
- @datatimp made their first contribution in #4663
- @jayzed80 made their first contribution in #4683
- @adambelis made their first contribution in #4561
- @nine-codes made their first contribution in #4722
Full Changelog: v0.18.0...v0.19.0