1                   ------------------------------
2                   GNU Image Manipulation Program
3                         2.10 Stable Branch
4                   ------------------------------
5
6This is the stable branch of GIMP. Unlike earlier stable branches,
7we do allow some new features here, if they are not too invasive.
8Otherwise, this branch is only for bug-fixes.
9
10
11Overview of Changes from GIMP 2.10.28 to GIMP 2.10.30
12=====================================================
13
14Core:
15
16  - Do not follow subpixel font rendering choice from system settings
17    for text layer rendering. These systems are useful for GUI
18    rendering on a screen of a specific type and pixel order. Yet when
19    rendering an image which can be zoomed in or out, showed on various
20    screens or even printed, subpixel font rendering doesn't make sense.
21  - Rewrite the core selection drawing logics so that it works on macOS
22    Big Sur and over. This is a backport (adapted to GTK+2) of the fix
23    brought in GIMP 2.99.8 for Wayland and macOS.
24  - Ignore MakerNote metadata tag at export and only store the tags that
25    go in it, hence avoiding partial invalid metadata.
26  - Color picking from Colors dockable can now use the Freedesktop
27    portal.
28  - On Windows, move from GetICMProfile() to WcsGetDefaultColorProfile()
29    because the former is broken in Windows 11.
30
31Plug-ins:
32
33  - metadata-viewer: improve how XMP tags with multiple values are
34    handled and shown (now each value on a separate line for better
35    readability).
36  - metadata-editor:
37    * XMP array tags of type BAG and SEQ are now on separate lines.
38    * Comparing XMP tags with equivalent IPTC tags with multiple values,
39      each value is compared individually, instead of comparing the list
40      as a whole.
41  - Many robustness improvements and other fixes to the metadata
42    plug-ins.
43  - AVIF: prefer AOM encoder for export.
44  - PSD:
45    * Skip sanity check for mask of rendered layers as some layer mask
46      have invalid dimensions in such cases. They will now be loaded
47      correctly.
48    * Fixed loading of CMYK PSD files without alpha.
49    * Fixed loading of CMYK images without layers.
50    * Fixed loading of merged image of a 16 bit per channel RGBA PSD
51      file with the alpha channel opaque.
52   - PBM: large file export now always works and does not depend anymore
53     on the platform's long int size.
54   - Screenshot:
55     * GNOME shell implementation dropped because the D-Bus API has been
56       restricted to core components for security reasons, thus our
57       plug-in was failing.
58     * KDE portal moved as last fallback after the X implementation
59       (when running on X) and Freedesktop portal, because KDE is also
60       starting to block API calls for security reasons.
61
62Installer:
63
64  - Extension .avif now associated to GIMP.
65  - Drop codepage conversion, use UTF-8 for language files.
66
67Build:
68
69  - macOS support officially bumped to macOS 10.12 (Sierra). We would
70    usually try to avoid doing this within a stable release but the
71    conditions (lack of contributors) is such that it is hard to avoid.
72
73
74Overview of Changes from GIMP 2.10.26 to GIMP 2.10.28
75=====================================================
76
77Translations:
78
79  - 10 translations were updated: Catalan, Chinese (China), Finnish,
80    Italian, Polish, Russian, Slovenian, Spanish, Swedish and Ukrainian.
81
82Build:
83
84  - Fix uninstalled white-border prelight file.
85
86
87Overview of Changes from GIMP 2.10.24 to GIMP 2.10.26
88=====================================================
89
90Core:
91
92  - Dashboard now has memory support in OpenBSD.
93  - Default shortcuts Shift+[ and ] for tool size changed to { and }.
94  - Performance improvements for GIMP on macOS Big Sur: these
95    improvements were actually already applied in our macOS packages
96    since GIMP 2.10.22, but were applied upstream directly only now.
97
98User Interface:
99
100  - Dark theme: improve accessibility of GtkRadioButton by adding a
101    white border on mouse-hover.
102  - Gray theme: set light background for selected text in Layers and
103    Paths dockable dialogs to make text visible.
104  - Dark, Gray and Light themes: remove 3D shadow box around eye and
105    link toggles in Layers, Channels, and Paths dockable dialog tree
106    views.
107
108Plug-ins:
109
110  - Improved DDS support and fix some red/blue bit swap for RGB10A2 DDS.
111    The plug-in version is incremented so that it is able to catch and
112    correct previously incorrect RGB10A2 images exported by older
113    versions of our plug-in.
114  - DDS files with "L16" - a 16 bit luminance channel - are now loaded
115    in 16-bit.
116  - DICOM images:
117    * Support for planar configuration.
118    * Support for deprecated big endian transfer.
119  - TIFF images:
120    * Thumbnail storing now done by storing the thumbnail as the second
121      page in the file (through Exiv2) and setting metadata
122      "Exif.Thumbnail.NewSubfileType" to 1 (reduced resolution image)
123      instead of storing the thumbnail as a subifd. This was done
124      because of a Windows bug locking TIFF files with thumbnail stored
125      as subfid.
126    * Symmetrically, loading will ignore pages marked as "reduced
127      resolution image" (i.e. it will consider them as thumbnails), as
128      well as try to guess if a page (without subfile type) is a
129      thumbnail when it meets following criteria: second page with YCbCr
130      PhotometricInterpretation, old style jpeg compression while the
131      first page has a different PhotometricInterpretation or
132      compression.
133
134Script-fu:
135
136  - New (dir-make "/dir/name" mode) function to create a directory.
137
138Translations:
139
140  - New translations for the Windows installer: Vietnamese, Lithuanian.
141  - 13 translations were updated: Catalan, Chinese (China), Croatian,
142    Dutch, German, Lithuanian, Polish, Russian, Slovenian, Spanish,
143    Swedish, Ukrainian and Vietnamese.
144
145Build:
146
147  - On Windows, *.rs file extension is not associated with SUN Raster
148    images anymore. The reason is that this file extension is mostly
149    used for Rust code files nowadays. If Windows could detect file
150    formats with "magic numbers" (i.e. byte identifiers), it would not
151    be a problem, but since it relies apparently only the extension,
152    it's better to remove this association.
153  - Oppositely on Linux and other Unix-like systems using desktop files,
154    add the image/x-sun-raster MimeType which was forgotten (there,
155    detection should be fine and not depend on file extension).
156  - gimp30-tips.mo is not installed anymore (only used during the build
157    to generate gimp-tips.xml with multiple language support).
158  - --enable-check-update now has an "auto" value, which is the new
159    default. It is equivalent to "yes" for Windows and macOS and "no" in
160    all other cases.
161  - New unit test to check that localizations listed in the installer
162    script match available po files in po-windows-installer/.
163  - "msys*" host value now detected as Windows builds.
164  - Bumping minimum GEGL to version 0.4.32.
165
166
167Overview of Changes from GIMP 2.10.22 to GIMP 2.10.24
168=====================================================
169
170Core:
171
172  - Ignore Pentax and PentaxDng metadata at export because they are
173    unsupported.
174  - DBus calls (remote file open, typically with double click on file
175    browser; and remote command run) are now processed after all command
176    line files (in case of calls during startup) and in the call order
177    (FIFO) for consistency. Some timeout has also been added to not spam
178    the core process with non-processable DBus calls during startup.
179  - Display profile name in "Color space" field of Image Properties and
180    improve ellipsis & wrap on dialog fields whose contents' size is not
181    controllable together with better dialog size management.
182  - Fix stack overflow when loading very large XCF files on Windows.
183  - Point snapping now works outside the canvas. This is used for snap
184    to guides, grid and vectors. Snap to grid only works off-canvas when
185    "Show All" is enabled because off-canvas grid is not visible
186    otherwise, though snap to guide and vectors will always work
187    off-canvas.
188
189Libgimp:
190
191  - Various metadata improvements:
192    * Improve reading of iptc tags that appear more than once.
193
194Plug-ins:
195
196  - JPEG export will better advertize when metadata export fails,
197    possibly with relevant error message. Image export would not fail,
198    but at least we make the person aware metadata is not properly
199    exported.
200  - More robust TIFF import and export:
201    * Better handling of Exif.Thumbnail.* tags on export.
202    * Import now ignores TIFF pages with invalid directory (rather than
203      freezing and output an error to warn of possible data loss).
204    * Import attempts to count the directories by reading them when the
205      headers does not announce any directory, which allows to salvage
206      images with improper header. Also if reading of a directory fail,
207      we now output a message to warn of possible data loss.
208    * Fixed loading 2 and 4-bit TIFF images in grayscale and indexed.
209    * Improve support of ExtraSamples fields with non-conformant TIFF
210      files.
211    * Improve loading of multi page tiffs with linear TRC.
212    * More safety checks as a result of fuzz-testing.
213    * Improve loading of MinIsWhite and MinIsBlack images.
214  - GeoTIFF tag support added (recognized and stored into image
215    parasites at import, then exported back when TIFF format is used)
216    with appropriate "Save GeoTIFF data" checkbox (checked by default
217    and sensitive only when the metadata parasite is present) to disable
218    GeoTIFF metadata export when not desired.
219  - The metadata viewer and editor got a big cleaning and refactoring
220    pass, as well as various fixes and several improvements:
221    * Fix handling of IPTC tags which can appear more than once (such as
222      "Keywords") in both the viewer and editor.
223    * Always read both the IPTC and XMP equivalent tags in the editor,
224      instead of assuming they are necessarily the same.
225    * More IPTC equivalents of XMP tags added:
226      + Iptc.Application2.LocationName <=> Xmp.iptc.Location
227      + Iptc.Application2.BylineTitle <=> Xmp.photoshop.AuthorsPosition
228      + Iptc.Application2.CountryCode <=> Xmp.iptc.CountryCode
229      + Iptc.Application2.Writer <=> Xmp.photoshop.CaptionWriter
230    * The editor now properly saves IPTC tags.
231    * Improve UTF-8 conversion to avoid double string conversion (hence
232      actually breaking encoding).
233    * Use proper unit abbreviations and proper label casing.
234    * GPS data is now properly formatted with better precision and with
235      translatable string parts and tooltips are added to explain how to
236      correctly edit GPS data (latitude, longitude, altitude).
237      Also seconds part of latitude/longitude is now saved with more
238      precision and altitude details now switch from .1m to .10m.
239    * Better error reporting when the editor fails to write a tag, with
240      proper GUI error, so that such error do not go unseen.
241    * Better error handling when closing the editor or viewer too, and
242      improve error handling when the calendar dialog fails.
243    * Use a logging domain for debugging-only messages which pollutes
244      the output.
245    * Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:* override the shorter
246      forms Xmp.iptc.Ci* if both are present, since the longer form is
247      more common.
248    * Improve saving of XMP metadata.
249    * And more bug fixes and refactoring steps to get rid of duplicate
250      code.
251  - PNG will now prompt only for layer offset different from zero. Some
252    software were always setting an offset of 0 (e.g.: POV-Ray v3.7) so
253    GIMP would unecessarily prompt the user until now for PNG created by
254    such software.
255  - BMP:
256    * allow loading of BMP images with incorrect BI_BITFIELDS
257      compression.
258    * support loading more bit depth such as 24bpp images.
259  - file-darktable:
260    * support updated Lua API of darktable 3.6 and beyond;
261    * Adding environment contents to debugging output when
262      DARKTABLE_DEBUG env variable is set.
263  - PDF import:
264    * New option to reverse order of layer.
265    * Support fractional DPI (allowing accurate page dimensions).
266  - DDS:
267    * Set blue channel of BC5 dds images to 0 instead of 255.
268    * Fix DDS BC5 compression/decompression with Red and Blue swapped.
269      We detect images created by an older GIMP on loading and swap the
270      channels back.
271  - HEIF:
272    * Removes the "HDR" mention on HEIF 10/12-bit export because high
273      bit depth does not necessarily means HDR.
274    * Runtime detection of HEIC and AVIF file formats (depending on
275      available encoders and decoders), which allows afterwards update
276      of the dependency, but also allows usage for a single format (e.g.
277      for distributions which want to support only AVIF).
278    * With libheif 1.10, visually lossless export is possible for
279      10/12 bit depths too
280  - PSD:
281    * More flexible reading of layer mask record size, skipping invalid
282      or unsupported mask info size, hence allowing us to load more PSD
283      files (at least the part of a PSD we support instead of failing
284      the whole import altogether).
285  - G3 fax images:
286    * Improve error handling when loading.
287    * Be more forgiving on bad lines which were quite frequent on older
288      fax images, allowing to salvage some old images.
289
290Build:
291
292  - Some configure fixes for autoconf-2.70 support.
293  - Adwaita's legacy "software-update-available" icon is now bundled
294    with GIMP to handle the possibility of them being absent from your
295    system theme (typically it was missing on our Windows build).
296
297Installer:
298
299  - New Slovak translation.
300
301Translations:
302
303  - Kabyle translation added.
304
305Build:
306
307  - Bumping minimum GEGL to version 0.4.30.
308
309
310Overview of Changes from GIMP 2.10.20 to GIMP 2.10.22
311=====================================================
312
313Core:
314
315  - Verbose version information (`gimp-2.10 -v` on command line, or
316    debug output) now displays Flatpak related information when
317    available. This is especially useful for debugging (such as the
318    exact Flatpak build hash, the runtime version, the installed
319    Flatpak extensions, permissions, etc.).
320  - OpenCL settings has now been moved to the Playground tab in
321    Preferences.
322  - On stable builds, "Playground" tab is now visible in Preferences if
323    any of the experimental features has been enabled, even without the
324    CLI option `--show-playground`.
325
326Tools:
327
328  - "gegl:matting-levin" now the default engine of Foreground Select
329    tool (when present, as it is an optional feature) as it performs a
330    lot better.
331  - GEGL operations now display a "Sample merged" checkbox in Tool
332    Options. This will be used when the operation allows to pick a color
333    (hence one can pick from the edited layer or from visible data).
334  - "Sample merged" now defaults to being activated in Color Picker and
335    GEGL tools as it seems the less confusing for beginners who don't
336    know of the option yet (according to a small poll we ran).
337
338User interface:
339
340  - In GimpSpinButton, don't propagate Enter key-press events if
341    updating the spin-button's value in response changes the entered
342    text. This prevents confirming dialogs when hitting Enter after
343    entering a math expression in size entries, updating their value
344    instead.
345    Likewise, don't propagate Escape key-press events if a new value was
346    entered, and restore the original value instead.
347  - GimpMemSizeEntry improved to show appropriate binary prefixes
348    (kibibyte, mebibyte and gibibyte) instead of decimal ones, to round
349    properly when using higher units, and to not lose accuracy when
350    possible when displaying in higher units.
351  - Several of the biggest pages of the Preferences dialog are now
352    scrollable, allowing the dialog to fit on smaller displays.
353
354Plug-ins:
355
356  - Add a new GIMP_EXPORT_NEEDS_CROP export capability, which causes
357    gimp_export_image() to crop the exported image content to the image
358    bounds; this is useful for formats that support layers, but have no
359    concept of global image bounds, hence cropping is the only way to
360    enforce the image bounds.
361    When showing the export dialog, give an option to either crop the
362    layers to the image bounds, or to resize the image to fit the
363    layers.
364  - Content type `image/webp` is now recognized (and not only
365    `image/x-webp` as both seem to be in used and this format is
366    unfortunately not yet listed in IANA media types (so various content
367    types are in use, no clear standard apparently).
368  - DDS import is now a bit more permissive, allowing to load some files
369    with invalid header flags regarding compression, while we are able
370    to know the right compression from other flags. This allows to
371    recover invalid DDS files exported by other software.
372  - JPEG detection improved to be more generic and reliable.
373  - HEIF support improvements:
374    - AVIF importing and exporting added (requires libheif 1.8.0+)
375    - 10/12-bit importing and exporting now available for HEIC/AVIF
376    - NCLX color profile import (link with LittleCMS)
377    - Metadata support when importing
378    - "Lossless" option is now called "Nearly lossless (YUV420 format)"
379      because this is actually what it is, hence previous naming was
380      misleading.
381  - TIFF support improvements:
382    - Add an option to crop the layers to the image bounds when exporting
383      individual layers (using GIMP_EXPORT_NEEDS_CROP), since TIFF has no
384      concept of global image bounds otherwise. Cropping is enabled
385      by default.
386    - TIFF export will not override "DocumentName" metadata tag anymore.
387    - Stop writing file paths into TIFF DocumentNames as file paths can
388      contain confidential information such as usernames and directory
389      structures, making the previous behaviour a potential privacy and
390      security risk.
391    - Fix a file descriptor leak case which may have prevented a file
392      from being opened on Windows.
393  - Multiple improvements in the PSP import plug-in:
394    - support reading raster layers of PSP version > 6,
395    - support reading 16-bit integer PSP files,
396    - support reading grayscale and indexed PSP files,
397    - support PSP images with zero-length layer names,
398    - fix wrong layer offset of layers,
399    - fix reading layer names with high bit ASCII characters,
400    - fix incorrect loading of PSP images with uncompressed channel data,
401    - fix reading of creator block data of PSP images,
402    - better error messages describing yet unsupported features,
403    - improve reader stability by always using the block/chunk length.
404  - Spyrogimp now works on Grayscale images and clutters less the undo
405    history.
406  - "Orientation" metadata is now reset whether you accepted to rotate
407    the image or not when importing an image.
408  - XPM does not export a "None" (transparent) color when unused.
409  - BMP always include color masks when exporting BMP with color space
410    info, as mandated by BITMAPV5HEADER specification.
411
412Debugging:
413
414  - Add progressive performance logs: progressive logs contain complete
415    information after each recorded sample, by writing partial address
416    maps at each sample, containing all new addresses introduced by the
417    sample.
418    This allows recording complete logs even in cases where they can't
419    be properly terminated, such as when GIMP crashes or freezes in the
420    middle of the log.
421    Progressive logs are disabled by default, since they potentially
422    increase the sampling cost. They can be enabled through a toggle
423    in the log file-dialog, or through GIMP_PERFORMANCE_LOG_PROGRESSIVE
424    environment variable.
425    Performance log viewer can now process progressive performance logs
426    too.
427  - Allow controlling performance-log parameters through the UI.
428
429Build:
430
431  - new `distcheck` step in Continuous Integration.
432
433Bug fixes:
434
435    #2275, #2668, #2874, #3481, #3868, #4061, #4155, #4328, #4505, #4536,
436    #4560, #4816, #5043, #5069, #5208, #5219, #5226, #5232, #5274, #5275,
437    #5357, #5358, #5472, #5530, #5584, #5592, #5623, #5630, #5651
438
439Translation updates:
440
441  - Basque, Catalan, Chinese (China), Croatian, Danish, French, German,
442    Italian, Japanese, Kazakh, Polish, Russian, Spanish, Swedish, Turkish,
443    Ukrainian
444
445Developers/contributors:
446
447  - Daniel a Simona Novomeská, David A. Russo, Elad Shahar, Ell, Jacob Boerema,
448    Jehan Pages, Liam Quin, lillolollo, luz.paz, Michael Natterer, Michael
449    Schumacher, Øyvind Kolås, Peter Oliver, Simon McVittie
450
451Translators:
452
453  - Alan01, Alexandre Prokoudine, Anders Jonsson, Asier Sarasua Garmendia,
454    Baurzhan Muftakhidinov, Boyuan Yang, Christian Kirbach, Daniel Mustieles
455    García, Jordi Mas, Julien Hardelin, Marco Ciampa, milotype, Rodrigo Lledó
456    Milanca, Piotr Drąg, Sabri Ünal, sicklylife, Stephan Woidowski, Tim Sabsch,
457    Yuri Chornoivan
458
459Overview of Changes from GIMP 2.10.18 to GIMP 2.10.20
460=====================================================
461
462Tools:
463
464  - Crop tool now has a "Delete cropped pixels" option active only in
465    image crop mode, allowing to choose whether to crop layers or only
466    the canvas (cropped pixels will be made invisible as out-of-canvas
467    but would still be present). The option is unchecked by default,
468    as it is the non-destructive behavior, which also means the
469    default behavior is changed.
470  - Crop tool in image crop mode will not crop layers with "Lock
471    pixels" on, anymore, even if "Delete cropped pixels" is checked.
472  - Painting tools can now restore opacity and blend mode from
473    presets.
474
475User interface:
476
477  - Image / Precision renamed to Image > Encoding
478  - Tool groups can now display their tool list on hover rather than
479    on click. This can be set in Preferences, in the Toolbox tab.
480  - Improved update notification GUI in About dialog, and now also
481    showing an update comment when one was set in gimp_versions.json.
482  - Palette Editor dockable: the color index in the current palette is
483    now shown in front of the color name.
484
485Plugins:
486
487  - In file-psd, make the data_start and data_len fields of the
488    PSDimageres and PSDlayerres structs unsigned, to avoid potential
489    overflow/sign-extension
490  - file-raw: Canon CR3 files are now properly recognized by GIMP and
491    sent to your raw developer software of choice.
492  - PNG and TIFF export: "Save color values from transparent pixels"
493    defaults now to not saving color values (i.e. channels set to 0)
494    when alpha channel is present and 0 itself.
495  - PDF import: multi-pages are now imported in bottom-first order,
496    similar to animated formats, and also similar to defaults for PDF
497    export. This brings consistency but break existing behavior, hence
498    needs to be noted.
499  - Added support for exporting 16-bit PSDs, read and write channels
500    from/to PSd in the right order
501
502Filters:
503
504  - The 'Vignette' filter now has on-canvas controls
505  - New 'Filters -> Blur -> Focus Blur' filter with on-canvas controls
506    to emulate out-of-focus blurring
507  - New 'Filters -> Blur -> Variable Blur' filter that uses an aux
508    mask input to blur an image with variable intensity
509  - New 'Filters -> Light and Shadow -> Bloom' filter
510
511Updated translations:
512
513  - British English, Catalan, Chinese (Taiwan), Dutch, Finnish,
514    German, Greek, Italian, Korean, Polish, Romanian, Russian,
515    Spanish, Swedish, Turkish, Ukrainian
516
517Icons:
518
519  - Replace fileicon.ico with version contain 24x24, 64x64, 128x128,
520    and 256x256 sizes for Windows icon
521  - Replace wilber.ico with version containing 128x128 size of Windows
522    icon
523
524Bug fixes:
525
526  - #189, #354, #872, #1439, #3405, #3533, #3558, #3777, #3841, #4094,
527    #4328, #4363, #4487, #4618, #4641, #4663, #4696, #4734, #4745,
528    ##4793, 4827, #4846, #4858, #4871, #4895, #4904, #4919, #4967,
529    ##4968, #4992, 4996, #5009, #5010, #5033
530
531Developers:
532
533  - Ell, Jehan, lillolollo, Marco Ciampa, Michael Natterer, Øyvind
534    Kolås, pesder, Salamandar, Sergio Jiménez Herena, Simon Budig, T
535    Collins, woob
536
537Contributors:
538
539  - Nikc, Sabri Ünal, Michael Schumacher, Jernej Simončič, luz.paz
540
541Translators:
542
543  - Alexandre Prokoudine, Anders Jonsson, Bruce Cowan, Cristian
544    Secară, Daniel Korostil, Daniel Șerbănescu, Dimitris Spingos, Jiri
545    Grönroos, Jordi Mas, Nathan Follens, Piotr Drąg, Rodrigo Lledó
546    Milanca, Sabri Ünal, Seong-ho Cho, Tim Sabsch, Yuri Chornoivan,
547    Георгий Тимофеевский
548
549
550Overview of Changes from GIMP 2.10.16 to GIMP 2.10.18
551=====================================================
552
553Core:
554
555  - In gimp:replace, when compositing the same content over itself,
556    i.e., when the input and aux buffers share the same storage and
557    same tile alignment, pass the input buffer directly as output,
558    instead of doing actual processing. In particular, this happens
559    when processing a pass-through group outside of its actual bounds.
560
561User interface:
562
563  - Add new Symbolic-High-Contrast and Symbolic-Inverted-High-Contrast
564    themes, which are automatically-generated high-contrast variants
565    of the (original) Symbolic theme.  The contrast factor is settable
566    in the makefile, and is currently at 1.5 for both themes.
567
568  - Rename tools/invert-svg to tools/svg-contrast, which now takes a
569    contrast-factor argument, and adjusts the input SVG contrast,
570    instead of just inverting it.  Note that we can still use the tool
571    to invert icons, using a contrast of -1.
572
573  - Allow horizontal scrollbars in all the Preferences dialog tree-
574    views, so that they don't limit the minimal width of the dialog
575    (in particular, the UI- and icon-theme tree-views may contain
576    arbitrarily-long paths).
577
578  - Draw a border around the color FG/BG color areas as a pair of
579    black and white rectangles instead of letting GTK do this. This
580    imporoves the legibility of borders, especially in dark themes.
581
582Tools:
583
584  - In GimpPaintTool, when not snapping brush outline to stroke, make
585    sure to properly snap the cursor position to 15-degree angle
586    multiples in line mode, not only when painting the line, but also
587    during motion.
588
589Plug-ins:
590
591  - Add naive support for CMYK 8-bit PSD files
592
593Updated translations:
594
595  - Basque, Catalan, Danish, Polish, Spanish, Swedish, Ukrainian
596
597Bug fixes:
598
599  - #4643, #4634
600
601Developers:
602
603  - Ell, Massimo Valentini
604
605Translators:
606
607  - Alan Mortensen, Anders Jonsson, Asier Sarasua Garmendia, Daniel
608    Korostil, Jordi Mas, Piotr Drąg, Rodrigo Lledó Milanca
609
610
611Overview of Changes from GIMP 2.10.14 to GIMP 2.10.16
612=====================================================
613
614Core:
615
616  - In gimp_gegl_apply_cached_operation(), use gint64 for storing the
617    total and processed pixel counts used for reporting progress, to
618    avoid overflowing when applying an operation to a large image.
619
620  - In GimpFilterTool and gimp_drawable_apply_operation(), use
621    gimp_drawable_filter_set_add_alpha() to add an alpha channel when
622    applying an operation that specifies "needs-alpha" to a drawable
623    that can have alpha.
624
625  - In GimpFilterTool, move all the drawable-filter option setup to a
626    new gimp_filter_tool_update_filter() function, and call it
627    whenever the drawable-filter's options need to be updated. This
628    avoids duplicating logic in various places.
629
630  - Improve the efficiency of decoding RLE data when loading ABR
631    brushes, by reading entire scanlines into a buffer all-at-once,
632    instead of reading the stream byte-by-byte.
633
634  - GIMP now optionally phones home to find out if there's a new
635    version available and then tells the user if there is one
636    indeed. It also keeps track of the installer revision and then
637    warns if there's a newer installer available. This can be disabled
638    in Preferences. In that case, users still have the option to
639    manually check for an update via the About dialog. The feature can
640    be disabled entirely with the '--disable-check-update' configure
641    switch.
642
643Tools:
644
645  - New 3D Transform tool where you can set vanishing point, camera's
646    focal length, and the move and rotate layer, selection, path, or
647    image in 2.5 space. With the "Unified interaction" option enabled,
648    all three interaction modes of the grid (camera, move, and rotate)
649    are available simultaneously. In this mode, the inner and outer
650    regions of the item are used for moving and rotation, respectively,
651    and the vanishing point is controlled through through a handle.
652
653  - Transform tools now respect the Clip option and update the canvas
654    preview accordingly.
655
656  - New "Composited preview" option allows respecting layer's blending
657    mode and position in the layer stack rather than rendering it as
658    an overlay on top of the overall layer stack. This simplifies
659    creating complex layer compositions greatly. The option requires
660    mipmaps to be used and thus is disabled by default. It also comes
661    with an experimental "Synchronous preview" suboption to render the
662    composited preview synchronously. This reduces the lag for
663    painting the preview, but can harm responsiveness for bigger
664    images, where rendering the preview is slow.
665
666  - Add a new "Preview linked items" option to the transform-grid
667    tools. When this option is enabled, together with composited
668    previews, the transform preview includes all linked layers and
669    channels when transforming a layer/channel. Paths are currently
670    unsupported.
671
672  - New widget called GimpPivotSelector, a 3x3 grid of toggle buttons,
673    is now used for selecting a natural pivot position (e.g. for a
674    transform) relative to an item: its center, its corners, and the
675    midpoints of its edges. Currently used in Rotate and 3D Transform
676    tools.
677
678  - Add "Show all" support to the Bucket Fill tool in line-art mode
679
680  - Color picker and sample points now support displaying values in
681    Yu'v' (CIE 1976 UCS) color space.
682
683  - The Symmetry Painting dock now has an "Enable reflection" option
684    that allows painting patterns resembling a kaleidoscope.
685
686  - Transform clipping is temporarily disabled for layer groups. No
687    preview other than 'Adjust' works anyway. This will be fixed later
688    on.
689
690  - Construct a box-filtered mipmap hierarchy for the original brush
691    on-demand, and the closest mipmap is used as the resampling source
692    for downscaled brushes, significantly improving the output
693    quality.
694
695  - Now that painting is done in a separate thread, the display update
696    rate has a far smaller impact on it. Increase the GimpDisplay
697    update rate, which handles image updates, to 60 FPS, and the
698    GimpDrawTool update rate to 120 FPS. In particular, the latter
699    change makes the brush outline motion much smoother.
700
701  - In the Airbrush tool, increase the maximal stamp FPS from 15 to
702    60, and change the corresponding maximal Rate value from 150 to
703    100. This technically affects tool presets, but we'll live.
704
705  - Add a new "Snap brush outline to stroke" toggle to the "Image
706    Windows" preferences page. When enabled, the brush outline in
707    paint tools snaps to the individual dabs while painting, which is
708    how it worked before version 2.10.16. Disable the option by
709    default.  This seems to be what most other programs are doing, and
710    it does give paitning a smoother feel.
711
712  - The Warp Transform tool now respects settings for painting tools:
713    showing the brush outline, snapping to dabs, and showing the paint
714    tool cursor.
715
716UI:
717
718  - Tools are now logically grouped in the toolbox by default. Users
719    can customize the groups to their liking or disable this feature
720    altogether in the Preferences dialog (Interface / Toolbox page).
721
722  - New opt-out compact style for sliders with revamped interaction.
723    The widget uses a narrower layout, and the different
724    upper/lower-half behavior is gone. Instead, the behavior depends
725    on the mouse button and modifier used:
726
727    - left-click is used for absolute adjustment,
728    - Shift + left-click + drag changes value in small increments,
729    - Ctrl + left-click + drag changes value in large increments,
730    - middle-click enables numeric input mode;
731    - right-click enables numeric input mode and selects the value.
732
733  - The "You can drop dockable dialogs here" message is gone from the
734    toolbox for good. Instead, highlight dockable areas when a user
735    starts dragging a dockable dialog, and intensify the highlight as
736    the dialog goes over a dockable area.
737
738  - Consolidate UI for merging down and anchoring layers:
739    As they are both mutually exclusive and serve an almost identical
740    purpose, the "Merge down" and "Anchor Layer" are given mutually
741    exclusive visibility in menus, and the anchor button is replaced
742    with a merge down button in the Layers dockable whenever there is
743    no active floating selection. Modifier keys are available:
744
745    - Shift: merge layer group
746    - Ctrl: merge visible layers
747    - Ctrl + Shift: merge visible layers from last used values
748
749Plugins:
750
751  - In plug_in_compat.pdb, when wrapping an op node inside a graph,
752    set the op node as the graph node's underlying operation. This
753    allows gimp_gegl_apply_operation() to perform certain
754    optimizations.
755
756  - The Spyrogimp plugin now features a Visual tab where the inner
757    mechanics of a spirograph is abstracted away, and you operate on
758    amount of petals etc. The plugin now also allows saving a pattern
759    as a path rather than rendering it to a layer as a bitmap.
760
761  - Improve the loading speed for PSD files, mostly by eliminating
762    excessive copies.
763
764Filters:
765
766  - Don't disable gegl:color-to-alpha (which has "needs-alpha")
767    when the drawable doesn't have an alpha channel, if one can be
768    added.
769
770  - Don't disable color-to-alpha for grayscale drawable, since the
771    operation is applicable to grayscale images (in particular, it
772    doesn't add color where there was none), and since GIMP no longer
773    distinguishes between layers and channels according to the
774    drawable format when updating the filters actions.
775
776Windows:
777
778  - Installer: unofficial languages, ghostscript 9.50.
779  - Installer: skip .debug files when they don't exist.
780  - Installer: properly remove old icons on 32-bit installs and
781    per-user installs.
782
783macOS:
784
785  - Set required variables if it is running from Apple application
786    bundle.
787  - The macOS build now ships with the dashboard dock for displaying
788    performance graphs.
789
790Updated translations:
791
792  - British English, Catalan, Danish, French, German, Hungarian,
793    Icelandic, Italian, Japanese, Polish, Russian, Spanish, Swedish,
794    Turkish, Ukrainian.
795
796Bugfixes:
797
798   - #4172, #4194, #4205, #4218, #2543, #4185, #4246, #2794, #4209,
799     #4278, #4372, #4187, #4392, #2674, #4338, #2862, #4203, #4204,
800     #4354, #1266, #4584, #4174, #4285, #4366, #1975, #4605
801
802Developers:
803
804  - Alex Samorukov, Cyril Richard, Elad Shahar, Ell, Elle Stone,
805    Jehan, Jernej Simončič, lillolollo, Massimo Valentini, Michael
806    Natterer, Pascal Terjan, woob.
807
808Translators:
809
810  - Alan Mortensen, Alexandre Prokoudine, Anders Jonsson, Balázs
811    Meskó, Balázs Úr, Bruce Cowan, Daniel Korostil, Jordi Mas, Julien
812    Hardelin, Marco Ciampa, Piotr Drąg, Rodrigo Lledó Milanca, Ryuta
813    Fujii, Sabri Ünal, sicklylife, Sveinn í Felli, Tim Sabsch, Zander
814    Brown.
815
816
817Overview of Changes from GIMP 2.10.12 to GIMP 2.10.14
818=====================================================
819
820Core:
821
822  - New "Selected areas continue outside the image" toggle option to
823    the "Feather Selection" dialog.
824  - New "Allow editing on non-visible layers" setting in Preferences
825    to allow painting, transforming, and selecting on layers with
826    toggled off visibility.
827  - XCF loading a bit more resilient to corruption: it doesn't stop
828    any more at the first layer or channel error; instead it tries to
829    load more layers/channels to salvage as much data as possible from
830    a corrupted XCF file.
831  - In gimp:gradient, fix dithering to correspond to how we actually
832    round float values to 8-bit. In particular, this avoids
833    introducing noise when a component is fixed at 0 or 1 along a
834    segment.
835  - New "Show All" view mode allowing to show pixels outside the
836    canvas boundary.
837  - New "Show Canvas Boundary" option to render a dotted line around
838    the canvas boundary.
839  - New "Keep Padding in "Show All" Mode" option, also available as a
840    default option via Preferences, to preserve the padding color
841    instead of displaying the checkerboard.
842  - Several features updated to react as expected when run
843    out-of-canvas: color-picking, canvas grid, transform tools, bucket
844    fill, and more.
845  - Loaded images' pixel density will now default to 72 PPI when no
846    explicit resolution information was stored in the imported file.
847    Newly created images' default pixel density will continue to be
848    based on the default image template (with value 300 PPI if it has
849    not be changed), yet not loaded images anymore. 72 PPI is the
850    common default in most software (and in standards such as Exif) so
851    it makes sense we stick to it, only for loaded images.
852
853Tools:
854
855  - Free Select tool: fast copy|cut-paste modifiers (Alt + Ctrl|Shift)
856    are now working even when the selection is not committed. Starting
857    a fast copy|cut-paste will automatically close the polygon and
858    commit the selection, accelerating fast usage of free selections.
859  - Foreground Select tool: new "Grayscale" Preview Mode. Also, a
860    color selector for "Color" preview (original preview mode) now
861    available, to select any color and opacity for the preview.
862  - Add a new "Image" transform type to the transform tools, in
863    addition to the existing "Layer", "Selection", and "Path"
864    transform types.  The "Image" mode transforms the entire image,
865    rather than a single item. In tools with a preview, the preview
866    shows the transformed image projection.  The clipping mode
867    controls how the canvas is clipped during the transform; in
868    particular, the ADJUST clipping mode resizes the canvas to fit its
869    transformed size.
870  - In GimpFilterTool, add a new "clipping" option, which can be
871    either Adjust or Clip.  This option is controllable for layers,
872    when there's no selection mask.
873    When set to Adjust, which is used by default, the filter's output
874    may extent past the drawable's boundary, and the drawable will be
875    resized to match the output when committed.
876  - Gradient tool: offset support in shaped gradients
877
878Plug-ins:
879
880  - Simple 8-bit port of filters to GEGL: nl-filter, film,
881    fractal-explorer, flame, blinds, jigsaw, gradient-flare,
882    checkerboard, tile-small, curve-bend, sample-colorize, map-object,
883    lighting, grid, despeckle, sphere-designer, contrast-retinex, hot,
884    sparkle, cml-explorer, destripe, twain, animation-optimize,
885    depth-merge, warp, imagemap, gimpressionist
886  - Port of filters to GEGL with float support: van-gogh-lic.
887  - Add color profile support for HEIF (only when libheif 1.4.0 is
888    available).
889  - TIFF import will now ask (in interactive mode) how to process
890    unspecified TIFF channels: non-premultiplied (used to be the
891    default) alpha, premultiplied alpha, or just import as generic
892    channel.
893  - HEIF export now improved with same profile logics as JPEG or WebP
894    (it can actually export higher bit-depth data, so profile logics
895    should be the one as in PNG, but we only support 8 bpc HEIF for
896    the time being).
897  - HEIF export dialog now has a "Save color profile" checkbox
898    allowing to not export with a profile when needed (needs libheif
899    1.4.0 or higher).
900  - PDF exporting: text layers in layer groups are now exported as
901    proper text.
902  - Cleaned up the file-dds GUI, removed the "Advanced" expander.
903  - gimptool external tool now install plug-ins into subfolders (this
904    is not mandatory in GIMP 2.10 yet, unlike future GIMP 3, but is
905    already the recommended folder structure for plug-ins).
906  - 3 procedures ("color-decode-ycocg", "color-decode-ycocg-scaled"
907    and "color-decode-alpha-exp") removed from file-dds plug-in
908    because they are hacks which should stay internal to the plug-in
909    and are semantically wrong because colors in drawables are never
910    in such formats.
911
912Filters:
913
914  - New "Normal Map" filter to generate normal maps from height maps
915    in the Generic section.
916  - Replace old filters with GEGL operation counterparts: edge-neon
917    (gegl:edge-neon), contrast-normalize (gegl:stretch-contrast),
918    oilify (gegl:oilify)
919  - Add gegl:bayer-matrix and gegl:linear-sinusoid to Filters ->
920    Render -> Pattern.
921  - Add gegl:newsprint to Filters -> Distorts.
922  - Add gegl:mean-curvature-blur to Filters -> Blur.
923
924Performance:
925
926  - Add an active-thread variable to the dashboard's misc group,
927    showing the number of active worker threads.
928  - Reduce time complexity of layer-group translation. When
929    translating a layer group, avoid separately updating the original
930    area of the child layers before translating them (as per the fix
931    to issue #3484), as this results in quadratic time complexity
932    w.r.t. to the maximal subgroup nesting level. Instead, simply
933    defer the updating of the group's offset until *after* translating
934    the child layers, so that their original area isn't clipped by the
935    parent, while their new area is still properly updated even if the
936    parent's size changes.
937
938User interface:
939
940  - Many mnemonics added in various dialogs.
941  - Add a gimp-rotate-image-arbitrary action, and a corresponding
942    "Image -> Transform -> Arbitrary Rotation..." menu entry, which
943    activates the rotate tool in image mode (similarly to the
944    corresponding action for layers).
945  - On Windows, minimized GIMP window is now deiconified when GIMP is
946    run again (clicking its shortcut or otherwise).
947
948Preferences:
949
950  - New "Swap compression" option: explicit control over the tile-swap
951    compression algorithm in GEGL. "Best performance" is used by
952    default, "Balanced", "Best compression", and "None" (disables
953    compression) are available.
954
955Devel docs:
956
957  - Update the libgimpconfig and libgimpbase docs.
958  - Update docs with missing symbols and types.
959  - New docs for structs and enums.
960
961Installers:
962
963  - Install 64-bit Python on 64-bit Windows (until now, the installer
964    used to install 32-bit Python for all architectures).
965  - Windows installer now supports per-user install.
966
967Debugging:
968
969  - New mnemonic-clashes tool to help looking for mnemonic clashes.
970
971Translations:
972
973  - Basque, Brazilian Portuguese, British English, Catalan, Chinese
974    (Taiwan), Croatian, Danish, Dutch, French, German, Greek,
975    Hungarian, Icelandic, Indonesian, Italian, Latvian, Polish,
976    Russian, Slovenian, Spanish, Swedish, Turkish.
977
978Bugfixes:
979
980   - #3630, #3226, #3610, #1725, #3093, #3599, #3597, #3082, #3553, #3435,
981     #3503, #3532, #3164, #3560, #3500, #3493, #3514, #3512, #2685, #3641,
982     #1002, #360,  #3263, #2221, #3893, #2708, #3100, #2873, #3655, #2206,
983     #3341, #3718, #3763, #3112, #3723, #4049, #4068, #3663, #4119, #4008,
984     #2837, #3994, #3990, #1283, #2561
985
986Code contributors:
987
988   Alexandre Prokoudine, Ell, Federico Mena Quintero, Jehan, Jernej
989   Simončič, Lionel, Massimo Valentini, Michael Natterer, Michael
990   Schumacher, Oleksii Samorukov, Sabri Ünal, Sergio Jiménez Herena,
991   Thomas Manni, lillolollo, sarah, woob, Øyvind Kolås.
992
993Translators:
994
995   Alan Mortensen, Alexandre Prokoudine, Anders Jonsson, Andika
996   Triwidada, Asier Sarasua Garmendia, Balázs Meskó, Balázs Úr, Bruce
997   Cowan, Claude Paroz, Daniel Mustieles García, Dimitris Spingos,
998   Emin Tufan Çetin, Hannie Dumoleyn, Jordi Mas, Julia Dronova, Julien
999   Hardelin, Marco Ciampa, Martin Srebotnjak, Milo Ivir, pesder, Piotr
1000   Drąg, Rafael Fontenelle, Rodrigo Lledó Milanca, Rūdolfs Mazurs,
1001   Sabri Ünal, Sveinn í Felli, Tim Sabsch, Zander Brown.
1002
1003
1004Overview of Changes from GIMP 2.10.10 to GIMP 2.10.12
1005=====================================================
1006
1007Core:
1008
1009  - Add an "Incremental" option to the Dodge/Burn tool, which,
1010    similarly to the Paintbrush, Pencil, and Eraser tools, applies the
1011    effect incrementally as the pointer moves.
1012  - Curves now have a concept of smooth vs corner points: smooth
1013    points produce a smooth curve, while corner points produce a sharp
1014    curve (previously, all points were smooth).
1015  - Search the user font directory path on Windows (since Windows 10,
1016    non-admin users have the ability to install fonts). This is only a
1017    temporary hack until fontconfig adds proper upstream support:
1018    https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/144
1019  - In gimp_brush_core_get_paint_buffer(), when allocating a new paint
1020    buffer, clear the old buffer *before* allocating the new one, to
1021    reduce the amount of simultaneously allocated memory.
1022  - In GimpPaintbrush, avoid refilling the paint buffer at each dab if
1023    the paint color/pixmap hasn't changed, hence allowing faster
1024    painting in some specific cases.
1025  - Add hygon cpu detection and enable MMX/SSE support.
1026  - Add a GimpSymmetry::get_transform() virtual function and a
1027    corresponding gimp_symmetry_get_transform() function which return
1028    the brush transform corresponding to a given symmetry stroke in
1029    terms of the rotation angle and reflection flag (in contrast to
1030    gimp_symmetry_get_operation() which returns the same transforation
1031    in terms of a GeglNode). This allows us to simplify, fix (artifact
1032    bugs, etc.), and improve the painting-code performance for several
1033    symmetry painting cases.
1034  - New gimp-brush-pipe-spacing parasite set by core code to preserve
1035    GIH brush's spacing across reloads.
1036  - Add a new Offset filter tool, as a front-end to gimp:offset. The
1037    tool replaces, and provides the same interface as the drawable-
1038    offset dialog while also providing live preview and on-canvas
1039    interaction.
1040
1041Plug-ins:
1042
1043  - Exported profile and data format strategy updated in several file
1044    plug-ins.
1045
1046    * When not saving a profile, we always export as sRGB data, as most
1047      viewers would not display the image properly otherwise.
1048    * When saving a profile:
1049        * If a profile was manually assigned, we always export to the
1050          assigned format, hence pixel data is converted accordingly,
1051	  whatever the work format.
1052        * If no profile was assigned:
1053            * If the export format support high-bit depth, we export the
1054              work format as-is.
1055            * If the export format is 8-bit max, we convert the work
1056              format to sRGB, except if the work format is 8-bit linear.
1057
1058    The following plug-ins were updated: JPEG, PNG, TIFF and WebP.
1059
1060  - TIFF plug-in now supports layer export.
1061  - Add accelerator on "Save color _profile" item in JPEG export so
1062    that all items in the dialog have keyboard accelerators.
1063  - Add a "Save color profile" checkbox in WebP export and remove the
1064    "Advanced Options" expander (all metadata and profile writing
1065    options are now directly visible).
1066  - Process cases of non-conformant TIFF file with extra channels
1067    while ExtraSamples is not set by assuming the first extra channel
1068    is a non-premultiplied alpha channel and outputting a warning. In
1069    the future, this should be updated further by a dialog asking what
1070    to do with the non-defined dialog (consider as premultiplied or
1071    non-premultiplied alpha channel, or just save as extra channels).
1072
1073Tools:
1074
1075  - Add input/output spin-buttons to the Curves tool, which allow
1076    setting the selected point's coordinates numerically. When the image
1077    precision is greater than 8-bpc, use a 0.00-100.00 range for the
1078    point-coordinate spin-buttons instead of a 0-255 range.
1079  - In the Curves tool, allow changing the curve's point types (cf. new
1080    curve corner points in Core section). Corner points are displayed
1081    with a diamond shape instead of a circle.
1082  - Free Select tool now creates a selection as soon as the polygon is
1083    closed. This selection is updated when the polygon, or the relevant
1084    tool-options, change, similarly to GimpRectangleSelectTool.
1085  - Derive GimpEraser from GimpPaintbrush, instead of directly from
1086    GimpBrushCore.
1087    This allows GimpEraser to reuse the paint-buffer content across
1088    dabs, improving performance.
1089  - Allow moving an intersecting pair of guides with the Move tool.
1090
1091User interface:
1092
1093  - In GimpCurveView, when dragging an existing curve point, don't
1094    immediately move the point to the cursor position upon button
1095    press, but rather move it relative to its current position as the
1096    cursor moves. This allows selecting a point without moving it, and
1097    adjusting its position more easily.
1098  - when the cursor hovers above a point in GimpCurveView, or when
1099    dragging a point, have the coordinate indicator show the point's
1100    position, rather than the cursor's.
1101  - In GimpCurveView, when holding down Ctrl while adding/dragging a
1102    point, snap the y-coordinate to the original curve (at the start
1103    of the drag). This is particularly useful for adding points along
1104    the curve.
1105  - In GimpDashboard, don't show legend for groups with no meter.
1106  - Add a tile-alloc-total variable to the dashboard's memory and misc
1107    groups, showing the total amount of memory used by the tile
1108    allocator.
1109  - Add a "Save Keyboard Shortcuts Now" button to the Configure
1110    Keyboard Shortcuts dialog.
1111
1112Installers:
1113
1114  - Windows: enable InnoSetup "unofficial" translations. Otherwise we
1115    had a bunch of wasted work from our translators of several
1116    languages whose translations were never used in the installer.
1117
1118Translations:
1119
1120   - 12 translations were updated: Catalan, Chinese, French, German,
1121     Hungarian, Indonesian, Italian, Polish, Russian, Spanish, Swedish
1122     and Turkish.
1123
1124
1125Overview of Changes from GIMP 2.10.8 to GIMP 2.10.10
1126====================================================
1127
1128Core:
1129
1130  - Add gimp-scratch allocator, a fast memory allocator (on the order of
1131    magnitude of alloca()), suitable for small (up to a few megabytes),
1132    short-lived (usually, bound to the current stack-frame) allocations.
1133    Unlike alloca(), gimp-scratch doesn't use the stack, and is therefore
1134    safer, and will also serve bigger requests, by falling-back to malloc().
1135  - In gimp_drawable_transform_buffer_affine(), avoid modifying the
1136    clipping mode when transforming layer masks, since this function
1137    is used (among other things) to transform layer masks together with
1138    their layer, in which case they should use the same clipping mode
1139    as the layer. This fixes a regression introduced by commit 2ae823ba,
1140    causing layer masks to be transformed with a mismatched clipping mode
1141    during layer transforms, leading to discrepancies between the
1142    transformed layer and the transformed mask.
1143  - Moved swap/cache and temporary files out the GIMP user config dir and
1144    added new config file substitutions ${gimp_cache_dir} and
1145    ${gimp_temp_dir}.
1146  - Pass the GEGL tile-cache size, swap path, and thread-count to plug-ins
1147    as part of their config, and have libgimp set the plug-in's GeglConfig
1148    accordingly upon initialization.
1149  - Layer groups are now rendered in bigger chunks rather than tile-by-tile
1150    (which used to pretty much eliminate multithreading for groups), which
1151    improves the rendering speed.
1152  - Make saving/exporting files more robust to errors. In particular if
1153    an error occurs during the process (be it a bug, a memory error, or
1154    anything else), GIMP won't overwrite anymore any existing file with
1155    incomplete contents, so that you won't end up with no valid files at
1156    all.
1157  - Fix a regression on support of various graphics tablet.
1158  - Remove the "Edit -> Fade..." feature: it makes GIMP use two buffers
1159    instead of one (east into system resources), it's broken in 2.10, and
1160    we can make the UX better for filters.
1161  - New generic canvas modifier 'Alt + middle click' allowing to pick
1162    layers by clicking on pixels. The available layers will be looped
1163    through (starting from the upper one) while Alt key is hold and the
1164    picked layer name will be temporarily displayed in the status bar.
1165  - When clearing a channel, do nothing if the channel is already empty;
1166    otherwise, align the cleared rectangle to the channel buffer's tile
1167    grid, so that all affected tiles are dropped, rather than zeroed.
1168    Furthermore, only update the affected region of the channel.
1169  - Brush and pattern saving logics has been moved to core code (instead
1170    of plug-in).
1171  - Clipboard brushes and pattern can now be duplicated.
1172  - Parametric brushes are now 32-bit float to avoid posterization on
1173    large brushes.
1174    Note: raster brushes are still 8-bit and plug-ins only have access
1175    to 8-bit versions of high-precision brushes/patterns. New API will
1176    be required to handle high-precision data.
1177  - On-canvas preview while editing a color in the colormap of an
1178    indexed image.
1179
1180User interface:
1181
1182  - Enabled HiDPI/Retina support for the GTK2/OSX build, fixes blurry icons.
1183  - Add a tooltip to the "better compression" checkbox in save dialog to
1184    make it clearer it does not mean that the file size is necessarily
1185    smaller in every cases. In particular some best/worst case are
1186    possible when an algorithm less efficient in general may end up
1187    better on a particular image.
1188  - Add basic support for cursors with a scale factor of 2 for HiDPI
1189    (artwork to be updated).
1190  - Foreground and background color icons, as well as color history will
1191    now display out-of-gamut warning on indexed images for colors
1192    outside of the palette, as well as on grayscale images, for non-gray
1193    colors.
1194  - Pack color picker and hexadecimal entry on same line in Color dock.
1195  - Add an "Open as Image" button to the brushes dialog.
1196
1197Usability:
1198
1199  - Attempting to transform locked layers or paint on them now results in
1200    blinking around the status bar (where the warning message is displayed)
1201    and around the toolbar where lock toggles are. The same applies to
1202    attempting to move a selection where there is none — GIMP will blink
1203    around the toolbar where the moving target (layer, selection, path)
1204    is chosen.
1205  - GIMP now allows selecting default export file type for new projects.
1206    The choice is limited to PNG, JPEG, WebP, PSD, ORA, TIFF, BMP.
1207  - GimpSpinScale widget now has an optional feature to constrain the
1208    value to integer when dragging with a pointer (even if the scale
1209    allows for fractional numbers), set with new function
1210    gimp_spin_scale_set_constrain_drag().
1211    This is useful for settings where fractional numbers are technically
1212    possible, yet most common use case are with integers (such as pixel
1213    sizes, angles in degrees, etc.) so you want the easy interface to be
1214    constrained. Fractional numbers are still settable, for instance by
1215    keyboard edit; and arrow incrementation won't drop fraction parts.
1216    This is currently only activated for brush options in paint tools.
1217
1218Tools:
1219
1220  - In scale tool, scale around center even when using numeric input.
1221  - New algorithm in the Bucket Fill tool when selecting the affected
1222    area "Fill by line art detection", based off the G'Mic algorithm for
1223    "smart colorization": https://hal.archives-ouvertes.fr/hal-01891876
1224    In a few words, it identifies painted pixels (either based on
1225    grayscale or opacity values) and tries to close line arts to allow
1226    filling even with not perfectly closed zones; the second step of the
1227    algorithm will flood the colors under line art pixels to prevent
1228    "holes" in the filling.
1229    It is possible to control a max size (in pixels) for the flooding,
1230    as well as max length of closing segments and splines.
1231  - The Bucket Fill tool got new interaction allowing to hold the click
1232    and move the mouse to fill based on several seed zones (for "Fill
1233    by line art detection" as well as "Fill similar colors"). You can
1234    now cancel the fill in progress with right click as in other tools.
1235  - The Bucket Fill tool now allows color picking with ctrl-click, same
1236    as every painting tool. It will pick either the foreground or
1237    background color depending on the selected Fill Type. The ctrl-alt
1238    modifier combination is also possible to pick the non-Fill Type
1239    color.
1240  - In the Bucket Fill tool, the Alt modifier will now switch to
1241    "FG color fill" when "Pattern fill" was set (instead of doing
1242    nothing).
1243  - In the Unified Transform tool, default to preserving aspect ratio
1244    when scaling up or down.
1245  - In the Healing tool, "Sample merged" now also work for the target
1246    pixels, allowing to draw in empty layers.
1247  - Selection by color is now parallelized, hence improving speed of the
1248    Select by Color tool (and any other processing which may share this
1249    piece of code now or in the future).
1250  - Add "Constrain handles" and "Around center" options to the
1251    perspective-transform tool's GUI, which are similar to the
1252    corresponding options of the unified-transform tool.
1253  - Improve color picking on indexed image to always select an indexed
1254    color corresponding to the picked pixel in the colormap.
1255
1256Plug-ins:
1257
1258  - file-pdf-save GUI now clearly indicates the order the layers will be
1259    used to make multi-page PDFs.
1260  - Add DDS loading/exporting plug-in originally developed by Shawn Kirst
1261    and Arne Reuter.
1262  - Rename the Guillotine plug-in to Slice Using Guides.
1263  - Add a new option saving a color profile when exporting PNG, JPEG, TIFF.
1264    Always save it when exporting to PSD.
1265  - Remove the "Advanced" expanders from the PNG and TIFF export dialogs.
1266  - Full rewrite of the Spyrogimp plug-in with much more options and
1267    better interaction.
1268  - Indexed TIFF with alpha channel now supported.
1269
1270Filters:
1271
1272  - Add on-canvas GUI (simple lines) for circular, linear, and zoom motion
1273    blur.
1274
1275Help:
1276
1277  - Link to the bugtracker directly from the Help menu, also link to the
1278    wiki and the roadmap. Remove the link to currently disabled
1279    registry.gimp.org.
1280
1281Installers:
1282
1283  - Windows: proper fix for libthai to stop GIMP from crashing in the
1284    Thai locale.
1285
1286Translations:
1287
1288  - Czech, Danish, French, Italian, Japanese, Marathi, Polish, Russian,
1289    Spanish, Swedish, Ukrainian.
1290
1291Build:
1292
1293  - Bumping GTK+ dependency to the micro update GTK+ 2.24.32 to handle
1294    several bugs on Windows (broken shortcuts on non-latin layouts and
1295    broken vector icons).
1296
1297
1298Overview of Changes from GIMP 2.10.6 to GIMP 2.10.8
1299===================================================
1300
1301Core:
1302
1303  - Use adaptive chunk size in GimpProjection when rendering the
1304    projection asynchronously, rather than using a fixed chunk size.
1305    This provides a better trade-off between throughput and
1306    responsiveness dynamically, based on how fast the processing is.
1307  - Add xyY color space to the color spaces for sampling colors.
1308
1309Tools:
1310
1311  - In all selection tools, show error on attempt to
1312    subtract-from/intersect-with empty selection.
1313  - Fix text along path not working with vertical text.
1314  - Fix Text tool's frame position when undoing a move operation.
1315  - Streamline Text tool's drawing blocking/unblocking logic.
1316  - When moving a text layer using the text tool (through alt+drag),
1317    don't change the layer's box mode to "fixed", which is unnecessary,
1318    since the layer's size isn't affected.
1319  - Transform and deformation operations now maintain color for fully
1320    transparent pixels, making unerase and curves manipulation of alpha
1321    channel more reliable.
1322  - All transform tools now apply changes when you save or export/overwrite
1323    an image without pressing Enter first to confirm changes.
1324  - Heal, Dodge/Burn, Smudge, and Convolve tools now adjust the processed
1325    buffer and mask_buffer regions according to the changes made to the
1326    application region, as calculated by intersecting it with the
1327    drawable and mask extents. This fixes wrong application position
1328    when painting on a drawable whose origin is above/to the left of the
1329    image's origin, and there's a selection active.
1330  - New type of gradient interpolation called 'Step' for making multi-color
1331    hard-edge gradient fills.
1332
1333Plug-ins:
1334
1335  - Port all plug-ins to the new iterator API in GEGL.
1336  - Improve automatic detection of HEIC/HEIF files.
1337  - Improve RawTherapee discovery by looking up registry key (should
1338    become useful with RawTherapee 5.5 and more).
1339
1340Usability and UI:
1341
1342  - Compatibility information in the Save dialog is now more understandable.
1343    The minimum GIMP version for the XCF file is always written down when it
1344    is GIMP 2.8 or over. The list of features warranting the minimum version
1345    is now listed in an expander container rather than as tooltip, which
1346    makes it more discoverable. The warning on compression is now displayed
1347    as its own text under the checkbox and not as additional text to the
1348    minimum GIMP version label.
1349  - In all themes, fix the color of selected text, while editing a tree-view's
1350    item text (such as when renaming a layer), by overriding tree-view
1351    specific styling with the global text-entry style, for nested text entries
1352    inside tree-views. The text would previously use the same color as the
1353    selection background, making it unreadable.
1354  - Add option in the Windows menu to hide the image tab bar.
1355
1356CLI:
1357
1358  - New self-explanatory --enable-win32-debug-console CLI option
1359
1360Debugging:
1361
1362  - New GimpBacktrace API provides an interface for creating and
1363    traversing multi-threaded backtraces, as well as querying symbol
1364    information. Backends are available for Linux and Windows.
1365  - Performance log recording now available in the Dashboard dock.
1366    The log contains a series of samples of the dashboard variables,
1367    as well as the full program backtrace, when available. As such,
1368    it essentially acts as a built-in profiler, which allows us to
1369    correlate program execution with the information available
1370    through the Dashboard.
1371  - New performance-log-expand.py tool decodes a delta-encoded
1372    performance log by expanding the deltas, producing a log where
1373    each sample (and other relevant elements) contain complete
1374    information. The structure of expanded logs is identical to that
1375    of delta-encoded logs, the expanded log simply has no deltas.
1376  - New performance-log-resolve.py tool resolves symbol information
1377    in backtraces. The logs produced by GIMP only specify the program
1378    counter at each stack frame, providing an address-map to map
1379    program-counter addresses to actual symbols separately. This tool
1380    looks up each program-counter address in the address map,
1381    incorporating the relevant symbol information directly into the
1382    backtrace.
1383  - New performance-log-deduce.py tool that statistically deduces the
1384    correct thread states based on backtrace address frequency, fixing
1385    local inaccuracies.
1386  - New performance-log-viewer.py tool that is a viewer for GIMP
1387    performance logs, with a sample-selection area at the top and an
1388    information area at the bottom. The sample-selection area visualizes
1389    the sampled variables and markers using a simultaneous set of plots,
1390    and displays the currently selected samples. The information area
1391    shows global information stored in the log, as well as information
1392    specific to the currently selected samples, including variable listing
1393    and statistics, full backtrace, and profile/call-graph information.
1394
1395Translations:
1396
1397  - Updated translations: Danish, Dutch, Finnish, German, Hungarian,
1398    Italian, Marathi, Polish, Portuguese (Brazil), Russian, Spanish,
1399    Swedish, Ukrainian.
1400
1401
1402Overview of Changes from GIMP 2.10.4 to GIMP 2.10.6
1403===================================================
1404
1405Core:
1406
1407  - Render drawable previews asynchronously.
1408  - Merge the file view filter and file format lists in GimpFileDialog.
1409    The presence of 2 lists was very confusing.
1410  - DLL search priority is now updated before running a plug-in on
1411    Windows, depending on the executable bitness. This gets rid of one
1412    of the last remnant of DLL hell in GIMP, which was when running
1413    32-bit plug-ins from a 64-bit build of GIMP.
1414
1415Filters:
1416
1417  - New "Little Planet" (gegl:stereographic-projection) filter.
1418  - New "Long Shadow" (gegl:long-shadow) filter.
1419
1420Tools:
1421
1422  - Halt the Measure tool after straightening.
1423  - Add an "orientation" option to the measure tool, corresponding to
1424    the "orientation" property of GimpToolCompass (i.e., it controls the
1425    orientation against which the angle is measured, when not in 3-
1426    point mode.)  The orientation is "auto" by default, so that the
1427    angle is always <= 45 deg.  Note that the "orientation" option
1428    affects the tool's "straighten" function, so that the layer is
1429    rotated toward the current orientation.
1430  - Text layers can now represent vertical texts, with 4 variants:
1431    left-to-right and right-to-left lines, and forcing all characters to
1432    be upright or following Unicode's vertical orientation property.
1433    See also:
1434    * https://www.unicode.org/reports/tr50/
1435    * http://www.unicode.org/Public/UCD/latest/ucd/VerticalOrientation.txt
1436
1437User Interface:
1438
1439  - The Dashboard dockable dialog now has an "async" field to the
1440    dashboard's "misc" group, showing the number of async operations
1441    currently in the "running" state.
1442  - New Preferences option to enable/disable layer-group previews, since
1443    these can get quite time-expensive.
1444
1445Translations:
1446
1447  - New language: Marathi
1448  - 12 translations were updated: Brazilian Portuguese, Dutch, French,
1449    German, Greek, Italian, Latvian, Polish, Romanian, Slovenian,
1450    Spanish, Swedish.
1451
1452Build:
1453
1454  - Add --with-win32-32bit-dll-folder configuration option to override
1455    the folder where 32-bit versions of DLL will be installed (default:
1456    32/bin/).
1457  - Install all plug-ins in their own directories. Unlike on master,
1458    this is not mandatory to do so, but it would protect our core
1459    plug-ins against any DLL installed directly under plug-ins/ by
1460    third-party plug-ins (cf. Windows DLL hell).
1461
1462
1463Overview of Changes from GIMP 2.10.2 to GIMP 2.10.4
1464===================================================
1465
1466Core:
1467
1468  - Remove gimp_display_shell_draw_background() and all clipping hacks
1469    for drawing the canvas background. This optimizes away one entire
1470    step of drawing of image size, for each expose.
1471  - Font loading does not block startup anymore. Only consequence is
1472    that the Text tool may not be usable immediately if fonts are not
1473    fully loaded yet (and will output an appropriate error if you do
1474    so). All non-text related activities can be performed right away.
1475  - Change of the URL from bugzilla to gitlab where appropriate.
1476  - New tool option manager to better keep track of user context and
1477    paint options in a consistent manner.
1478
1479User Interface:
1480
1481  - The Dashboard dockable dialog now has a 'Memory' group that shows
1482    memory-usage information: the currently used memory size, the
1483    available physical memory size, and the total physical memory
1484    size.  It can also show the tile-cache size, for comparison
1485    against the other memory stats. Note that the upper-bound of the
1486    meter is the physical memory size, so the memory usage may be over
1487    100% when GIMP uses the swap.
1488  - The Dashboard dockable dialog now has "read" and "written" fields in
1489    the dashboard swap group, which report the total amount of data
1490    read-from/written-to the tile swap, respetively. Additionally, the
1491    swap busy indicator (used as the meter's LED) has been improved,
1492    so that it's active whenever data has been read-from/written-to
1493    the swap during the last sampling interval, rather than at the
1494    point of sampling.
1495  - Fonts can now be tagged. The user interface is the same as for
1496    brushes, patterns etc.
1497  - Some icons fixed: larger spacing between broken chains and
1498    gimp-tool-ellipse-select made symmetrical.
1499
1500Usability:
1501
1502  - When a plug-in cannot be applied to an image because of mismatch
1503    in image types (e.g. layer has no alpha or image is greyscale),
1504    GIMP now displays a message listing supported image types for this
1505    plug-in.
1506
1507Tools:
1508
1509  - The Measurement tool now has an "Auto straighten" option allowing
1510    to rotate the active drawable (layer, channel…) so that the
1511    measurement line is used as horizon. As other transform tools, the
1512    feature will work on linked drawables as well.
1513  - The Smudge tool now paints correctly on images with a color
1514    profile other than the GIMP's built-in one.
1515
1516Build:
1517
1518  - Installer: set compatibility options to run Python plugins in
1519    HiDPI-aware mode.
1520  - Put back compatibility DLLs for really old plugins.
1521  - Install binary tool `gimp-test-clipboard` on the system to allow
1522    people to help us debug clipboard bugs.
1523  - --enable-bundled-mypaint-brushes renamed
1524    --enable-relocatable-bundle and also make WMF fonts looked up on
1525    the runtime prefix of GIMP (instead of the build-time path) when
1526    this build option was set.
1527
1528Plug-ins:
1529
1530  - gimptool-2.0 binary now accepts source files with non-standard
1531    extensions if it can try to guess appropriate language from the
1532    compiler being used. It will also properly quote arguments for
1533    shell usage.
1534  - Run explicitly Python 2 as Python plug-in interpreter to prevent
1535    breakage on systems where Python 3 is the default.
1536  - raw_input()'s argument in Python console is now optional, and
1537    input() support has been added.
1538
1539File Formats:
1540
1541  - The PSD loader now provides an option to load "merged",
1542    pre-composited version of the images that becomes available when a
1543    PSD file was saved with "Maximize Compatibility" option enabled in
1544    Photoshop. This is useful when loading PSD files that use features
1545    that GIMP doesn't currently support, and therefore can't render
1546    correctly, such as adjustment layers. When loading the merged
1547    image version, we avoid loading certain additional data from the
1548    file, such as channels, paths, and guides, while still loading
1549    metadata. This option is currently exposed as an additional file
1550    type ("Photoshop image (merged)"), which has to be explicitly
1551    selected from the file-type list when opening the image.
1552  - Embedding GIMP's built-in sRGB color profile to exported files is
1553    now optional. The default choice can be set in the Preferences
1554    dialog.
1555
1556Translations:
1557
1558  - Updated translations: Catalan, Czech, Danish, Dutch, Finnish,
1559    Greek, Hungarian, Italian, Latvian, Polish, Romanian, Russian,
1560    Spanish, Swedish, Ukrainian.
1561
1562
1563Overview of Changes from GIMP 2.10.0 to GIMP 2.10.2
1564===================================================
1565
1566Core:
1567
1568  - Discard fonts which fail to load and popup an info dialog to allow
1569    people debug their fonts.
1570  - New API to suppress updates in UI until plug-ins are done
1571    introducing changes.
1572  - New API to calculate histograms in separate threads, with possible further
1573    extension to handle similar cases elsewhere in GIMP.
1574  - Tool options are now properly saved and reloaded per-device at
1575    startup.
1576
1577Plug-ins:
1578
1579  - New plug-in for importing and exporting HEIF images.
1580  - Enable visibility of rasterized vector layer from PSD.
1581  - Single-window screenshots in Windows fixed to correctly snap a
1582    window even when it is partly off-screen or covered by another
1583    window or when display scaling is not set to 100%.
1584
1585Filters:
1586
1587  - New Spherize filter to wrap an image around a spherical cap
1588  - New Recursive Transform filter to create Droste effect.
1589
1590Usability:
1591
1592  - Warn users, when alpha-only painting has no effect. E.g. when target
1593    drawable doesn't have an alpha channel, or the alpha channel is locked.
1594  - Make the splash texts dynamic, so they are larger on larger splashes.
1595  - Mention pressing Enter to complete Foreground selection in the status bar.
1596  - Make sure that clicking outside any selection prevents Rectangle Select
1597    and Ellipse Select tools from creating empty selections.
1598  - Improve mouse wheel zooming behavior to keep the same point
1599    centered under the pointer even if the image is completely visible
1600    in the canvas.
1601  - Add "View -> Center Image in Window" (Shift+J) as a quick way to
1602    center the image at any zoom level.
1603
1604Translations:
1605
1606  - Updated translations: Catalan, Danish, Dutch, French, German, Greek,
1607    Hungarian, Icelandic, Italian, Latvian, Polish, Russian, Spanish,
1608    Swedish, Ukrainian.
1609  - New translation of Windows installer: Chinese (Taiwan)
1610
1611Build:
1612
1613  - Add a --with-bug-report-url configure option allowing packagers to
1614    set the address of their own bug tracker. This address will be the
1615    one opened by the debug dialog for reporting bugs.
1616  - Add a flatpak manifest for the gtk3-port branch.
1617  - Remove the possibility to disable script-fu.
1618  - Add a --with-icc-directory configure option to customize the color
1619    profile directory. By default, it is set to the common path
1620    /usr/share/color/icc.
1621
1622Documentation:
1623
1624  - Updating the description of the XCF format "devel-docs/xcf.txt", for
1625    third-party readers wishing to support GIMP 2.10 XCF files.
1626  - Add documentation skeletons for all enums in libgimpbase/, there is
1627    much room for improvement.
1628