What's Changed
- Paste: in front or back of a compound path's member, other art goes beside the compound path by @dotCooCoo in #5120
- .ai import: version 7 palettes keep their swatches without names by @dotCooCoo in #5123
- Variables: Rename reports a missing variable or data set before a taken name by @dotCooCoo in #5135
- Variables: a graph variable's data set applies its CSV as graph.setData does by @dotCooCoo in #5136
- Variables: Lock Variables' description names the refused import by @dotCooCoo in #5137
- Variables: a text value on threaded type replaces the whole story by @dotCooCoo in #5138
- Recolor Artwork: color sliders in a chosen color mode edit the selected row's new color by @dotCooCoo in #5113
- Native format: take the .vectorcraft envelope from craft-vectorcraft-format by @dotCooCoo in #5146
- Fix #3818: the chosen brightness holds when the system theme differs by @dotCooCoo in #5164
- Fix #2089: Affinity strokes keep their Width tool profile by @dotCooCoo in #5171
- Fix #3437: Spiral segments follow the spiral by @dotCooCoo in #5178
- PDF export: a white stop linked to a process swatch keeps a spot gradient on its ink by @dotCooCoo in #5182
- Symbols: Replace Symbol clears the old symbol's dynamic overrides by @dotCooCoo in #5183
- EPS: spot inks named All or None print as spot inks by @dotCooCoo in #5184
- Legacy .ai: type with rotated characters is written as outlines that keep the rotation by @dotCooCoo in #5186
- Variables: Edit Data Set keeps an empty text value when OK changes nothing by @dotCooCoo in #5127
- Fix #3797: documents open in Preview, and Outline is a setting of each document by @dotCooCoo in #5134
- .ai import: a clipping path keeps its stroke by @dotCooCoo in #5132
- .ai import: legacy type keeps its spacing, hanging punctuation and hyphenation by @dotCooCoo in #5125
- .ai import: paths keep their notes and Show Center by @dotCooCoo in #5129
- Variables: Undo and Redo clear a highlight that names no variable by @dotCooCoo in #5131
- Variables: Export Data Sets refuses more data sets or variables than Import Data Sets reads by @dotCooCoo in #5124
- Variables: Import Data Sets reports why a cell was refused by @dotCooCoo in #5133
- Variables: a CSV header that names one variable twice is refused by @dotCooCoo in #5128
- Variables: a command that changes nothing adds no undo step by @dotCooCoo in #5130
- Variables: Update Data Set keeps a row's values when every bound object is locked by @dotCooCoo in #5126
- Variables: an import or library load that changes nothing adds no undo step by @dotCooCoo in #5145
- Variables: Export Data Sets marks visibility and image columns with # and @ by @dotCooCoo in #5141
- .ai import: Stylize effects open with their saved settings by @dotCooCoo in #5140
- .ai import: Convert to Shape opens live on paths and type by @dotCooCoo in #5142
- Docs: .ai guides are no longer listed as lost by @dotCooCoo in #5071
- Docs: list every case where an unread .ai object still sends the file to its page by @dotCooCoo in #5074
- .ai import: page art moved to its artboard takes its pattern tiles along by @dotCooCoo in #5076
- .ai import: Objects on Path records measure each group once by @dotCooCoo in #5077
- Place: the Word .doc reader resolves each style once and refuses damaged property tables by @dotCooCoo in #5073
- Live Paint: the Live Paint Bucket highlights an edge thinner than a face by @dotCooCoo in #5052
- Actions: the panel menu's Duplicate copies the selected action or set by @dotCooCoo in #5068
- Swatch libraries: Patterns › Geometric Patterns adds a pattern with its swatch by @dotCooCoo in #5049
- i18n: open, save and recovery messages name their counts in the singular or the plural by @dotCooCoo in #5084
- .ai import: a file whose PDF part can't be read opens from its editing data by @dotCooCoo in #5051
- .ai import: area type flows around its text wrap objects by @dotCooCoo in #5082
- .ai import: area type keeps its rows, columns, gutters and first baseline by @dotCooCoo in #5069
- Objects on Path: the Rotate All widget turns every attached object about its attachment point by @dotCooCoo in #5081
- .ai import: vertical type keeps its orientation and Tate-chu-yoko runs by @dotCooCoo in #5086
- Export for Screens: a folder named with dotless ı is not merged into i by @dotCooCoo in #5093
- Accessibility: Tab no longer stops on the Simplify and Smooth sliders' backdrop by @dotCooCoo in #5091
- Appearance: effect.move reports the effect's index in the object whose row it names by @dotCooCoo in #5087
- Mesh: Create Gradient Mesh at a point outside the object keeps the path by @dotCooCoo in #5095
- Brushes: Pattern Brush Options keeps Original after a swatch is chosen by @dotCooCoo in #5097
- Transparency: makeOpacityMask refuses objects in ids that cannot be edited by @dotCooCoo in #5104
- File formats: JPEG 2000 prefers the display resolution box over the capture box in either order by @dotCooCoo in #5105
- Type: choosing Optical kerning clears manual pair values, as Auto does by @dotCooCoo in #5101
- OpenType: the panel's Position menu sets superscript, subscript, numerator or denominator glyphs by @dotCooCoo in #5098
- Character Styles: Style Options sets scale, baseline shift, rotation and language by @dotCooCoo in #5094
- Symbols: symbol editing mode keeps every instance in step, and its UI entry points are tested by @dotCooCoo in #5106
- Variables: Import Data Sets reads CSV files that are not UTF-8 as Windows-1252 by @dotCooCoo in #5116
- Variables: Edit Data Set's Name field renames the data set by @dotCooCoo in #5121
- .ai import: anchors are smooth or corners by the case of their segment operators by @dotCooCoo in #5122
- .ai import: artboard display options, raster effects settings and the header's author come in by @dotCooCoo in #5102
- .ai import: graphs open as their drawn art, with a note by @dotCooCoo in #5115
- .ai import: multi-layer masks open as a clipping group in each layer by @dotCooCoo in #5117
- Separations Preview: Gamut Check counts colors in the singular and the plural by @dotCooCoo in #5190
- Fix #2181: PDF layer forms get real boxes and lose their off-page marks by @dotCooCoo in #5191
- Canvas: a drag ends where its button went up by @dotCooCoo in #5195
- Artwork Cleanup: Simplify Anchors and Deep Ungroup leave hidden and locked art alone by @dotCooCoo in #5197
- Artwork Cleanup: Empty Text and Off-Artboard Art leave type that clips art by @dotCooCoo in #5203
- Document Info: Save writes the category the panel shows by @dotCooCoo in #5212
- Recolor: the Global Adjust sliders change every color at once by @dotCooCoo in #5214
- Fix #785: commands refuse an id that isn't an object id instead of using the selection by @dotCooCoo in #5167
- Fix #4995: Above Text moves a Tabs panel that already floats by @dotCooCoo in #5162
- Actions: the current set is kept after a restart by @dotCooCoo in #5169
- Actions: the panel menu's Action Options… renames the selected action by @dotCooCoo in #5172
- Variables: Save Variable Library… writes the variables and data sets as an XML library by @dotCooCoo in #5147
- .ai import: Offset Path, Outline Object and Outline Stroke open live by @dotCooCoo in #5148
- .ai import: a line width of 0 draws as a hairline by @dotCooCoo in #5174
- .ai import: placed files are found by the folder they keep relative to the document by @dotCooCoo in #5176
- .ai import: the document's graphic styles open in the panel with their objects linked by @dotCooCoo in #5155
- Type: manual kerning in right-to-left text spaces the pair it is set on by @dotCooCoo in #5185
- Fonts: Find Font and Replace Missing Fonts reach the type in symbols by @dotCooCoo in #5199
- Keyboard Shortcuts: commands a key cannot run without a value are not listed by @dotCooCoo in #5194
- Actions: Save Actions… and Load Actions… save a set to a file and load it back by @dotCooCoo in #5192
- .ai import: a group still open at the end of the art is an error by @dotCooCoo in #5198
- .ai import: placed EPS files in the version 7 form are read by @dotCooCoo in #5187
- Fix #5161: Shape Builder merges across a line under a merged shape's edge by @dotCooCoo in #5215
- Tabs: Above Text keeps the ruler at the zoom when the panel comes out wider by @dotCooCoo in #5207
- Selection: with Real-time Drawing off, the bounding box moves with a move drag by @dotCooCoo in #5208
- Selection: a drag with Real-time Drawing off shows the bounds of a selection too big to outline by @dotCooCoo in #5210
- .ai import: legacy files without layers open through the format reader by @dotCooCoo in #5209
- Type: Tate-chu-yoko Settings move a block up, down, left or right by @dotCooCoo in #5206
- Window: Arrange > Tile shows every open document side by side by @dotCooCoo in #5216
- Toolbars: New Toolbar makes a named toolbar filled from the All Tools drawer
by @dotCooCoo in #5038 - Brushes: Calligraphic and Scatter values follow pen tilt, bearing and rotation
by @dotCooCoo in #5031 - Clipboard: a bitmap pasted from another app is decoded off the UI thread by @dotCooCoo in #4277
- Asset Export: Import Preset and Export Preset read and write preset files
by @dotCooCoo in #5032 - Validate hyphen placement and days in month in parse_date by @Silvertree2010 in #4001
- fix(path): recurse into groups and compound paths for path.average by @WadahBadawi in #4898
- perf(canvas): zero-copy texture upload and progressive worker frame acceptance (#4615) by @el-j in #4961
- Fix #4919: Create Swatch Legend by @mockydevs in #5066
- Units: Preferences › East Asian Type reads, with Q and Ha units (#394) by @Taha-Mahmoodi in #4845
- Type tools: a Type tool that uses the clicked path, pointers that say what a click makes, and an icon per tool by @ham9zah in #4644
- Appearance panel: UI improvements and parity for row editing by @FarmerGeorg in #4154
- Limit the ZIP writer to 65534 files so Archive::open can read it by @Prin-Ing in #5109
- Fix #3296: Effect menu items take keyboard shortcuts of their own by @mockydevs in #5110
- Fix #2898: Up and Down change the corner kind while dragging a widget by @mockydevs in #5090
- Fix #5218: the artboard navigator's buttons are commands Keyboard Shortcuts lists by @ruchirguitar in #5222
- G4: Type orientation menu unchecked for mixed vertical/horizontal selection by @nrq6993-a11y in #4324
- Filter invalid XML characters from SVG Dublin Core metadata by @Prin-Ing in #5075
- Decode DXF surrogate pairs by @TheGalitube in #5107
- Fix #5152: placed-document bitmap test no longer races its worker by @mockydevs in #5154
- Fix #5054: a double-click on a repeat isolates it to edit its source by @mockydevs in #5078
- File formats: .dib and .rle bitmaps, .pdd Photoshop files and .pns PNGs open and place by @dotCooCoo in #5223
- Select: Same › Link Block Series selects every frame of a text thread by @dotCooCoo in #5224
- Variables: art on a locked artboard is not bound or rewritten by a data set by @dotCooCoo in #5118
- Effects: a Transform effect on a fill or stroke honors Scale Strokes & Effects and Transform Patterns by @dotCooCoo in #5221
- Symbols: a scaled instance of a symbol with 9-slice guides keeps its corners and edges unstretched by @dotCooCoo in #5079
- Pathfinder: blends, envelopes and warped objects can be compound shape members by @dotCooCoo in #5226
- Fix #3118: PDF export writes CMYK inks, gray and spot tints as the document holds them by @dotCooCoo in #5080
- Fix #5159: ⌘V from the macOS menu bar pastes a picture another app copied by @Hassan1305 in #5230
- Envelope: Distort Appearance keeps a Transform effect's Scale Strokes & Effects and Transform Patterns by @dotCooCoo in #5232
- File formats: Pixar (.pxr) images open and place by @dotCooCoo in #5231
- .ai import: open the variable library and data sets from the editing data by @dotCooCoo in #5156
- .ai import: type keeps its Distort & Transform effects live by @dotCooCoo in #5139
New Contributors
- @FarmerGeorg made their first contribution in #4154
- @Prin-Ing made their first contribution in #5109
- @ruchirguitar made their first contribution in #5222
Full Changelog: v0.20.0...v0.21.0