app: s/sprintf/g_snprintf/ in xcf_save_image()
[gimp.git] / NEWS.pre-2-10
blobd8b838499bf365b9989f74d3a20de85b1a192a7e
1                    ------------------------------
2                    GNU Image Manipulation Program
3                       2.10 Development Branch
4                    ------------------------------
6 This used to be the development branch that lead to GIMP 2.10.
9 Overview of Changes from GIMP 2.10.0 RC2 to GIMP 2.10.0
10 =======================================================
12 Core:
14   - CLI option --show-playground visible in --help.
15   - Sample point dockable now works with more than 4 sample points.
16   - Various warnings removed, multi-threading officially not
17     "experimental" anymore…
18   - Various fill and fade operations now use the current paint composite
19     mode, allowing for instance filling to paint over transparent areas.
20   - Default layer and paint modes are now Normal (instead of Legacy).
21   - Be smarter about layer modes for new layers.
22   - Get rid of the remaining places that were using the NORMAL_LEGACY
23     mode by default (painting, some more).
24   - Improve painting speed even more by even more evil C++.
25   - Flipping drawables is much faster because it's now working
26     tile-by-tile.
27   - Gradient rendering is now much faster, using a cache.
29 Plug-ins:
31   - Ripple plugin removed, compat PDB-API "plug-in-ripple" added
32     instead.
34 PDB:
36   - New procedure: gimp-item-transform-translate.
37   - Make gimp-item-transform-* transform linked items too.
38   - Deprecate gimp-color-balance and gimp-layer-translate.
40 Assets / Resources:
42   - New "Fun" category for brushes (moving the "Pepper" there, which
43     also gets improved resolution), and adding Wilber and GEGL brushes.
44   - "Structure" brush obsoleted.
45   - 5 new and more serious brushes.
47 Translations:
49   - 6 translations were updated: Catalan, Danish, Finnish, Korean,
50     Polish, Swedish.
53 Overview of Changes from GIMP 2.10.0 RC1 to GIMP 2.10.0 RC2
54 ===========================================================
56 Core:
58   - Symmetries are now preserved in XCF files (saved as image parasites).
59   - New runtime option --show-debug-menu in order to make the File >
60     Debug menu visible.
61   - Do not show invisible actions in search dialog.
62   - Do not dither image mask and channels for imported images.
63   - Various optimizations for painting and display (WIP), including
64     parallelized painting code.
65   - New "Misc" group to the Dashboard dock, with currently only a
66     "Mipmapped" field showing the total size of processed mipmapped
67     data.
68   - Plug-ins debugging on crashes through --stack-trace-mode CLI option
69     improved to handle more case.
70   - Fix selection -> channel -> selection roundtrips by never doing
71     any gamma conversion when converting between an image's selection,
72     channels, masks. Also, make all channels linear in all images with
73     >8bit.
75 Libgimp:
77   - New group "drawable_edit" which contains all functions from "edit"
78     that are not cut/copy/paste. The new functions have much less
79     arguments and take them from the context instead. The respective
80     functions in "edit" have been deprecated.
81   - New functions in "context" to configure aspects of gradient
82     drawing, and to set the built-in gradients (the new gradient
83     function in "drawable_edit" doesn't have a parameter for the
84     gradient type any longer).
86 User interface:
88   - Lighter and Darker themes removed for now, Light and Dark themes
89     rewritten from scratch to get rid of various usability issues and
90     glitches. Only Gray theme from previous set kept as-is.
91   - New GimpToolGyroscope on-canvas control, currently used for
92     the Panorama Projection filter. The widget provides on-canvas
93     interaction for 3D rotation (yaw, pitch, roll).
95 Configurability:
97   - In Preferences > Dialog Defaults, new section "Filter Dialogs"
98     created to customize various common features of filters, such as
99     recent settings and advanced color options.
100   - Do not default to last used filter settings, but allow this behavior
101     in Preferences > Dialog Defaults, with checkbox "Default to the last
102     used settings".
104 Tools:
106   - Color used in the Smudge tool is now added to the color history.
107   - "Blend" tool renamed to much more consistent "Gradient" tool.
108     Also it can now work in linear RGB matching capabilities CSS/SVG
109     specification without gamma-errors in color blending and CIE Lab
110     which in addition keeps a perceptual graylevel.
112 Assets / Resources:
114   - Adding 4K UHD in document templates (and fixing 4K DCI).
116 Building:
118   - New --enable-bundled-mypaint-brushes option in configure to decide
119     whether to use the configure-time installation path of MyPaint
120     brushes, or use a path relative to GIMP installation prefix
121     (typically for bundled binaries, such as on Windows or macOS).
122   - Detect freetype2 using pkg-config (`freetype-config` is on its way
123     out in various distributions apparently).
124   - Appdata now installed to $PREFIX/share/metainfo/
126 Translations:
128   - 8 translations were updated: Arabic, Catalan, Chinese, French, Italian,
129     Polish, Russian, Swedish.
132 Overview of Changes from GIMP 2.9.8 to GIMP 2.10.0 RC1
133 ======================================================
135 Core:
137   - New dashboard dockable: shows the current GEGL cache and swap sizes
138     and CPU usage and active time, and their recent history. It has
139     options to control the update rate and history duration of the data,
140     and an option to warn (by raising/blinking the dialog) when the swap
141     size approaches its limit.
142   - Make the selection boundary detection the same as 2.8.
143   - The environment variable GIMP_DEBUG can now be set to "list-all" to
144     display available debug domains. Non-recognized flags will also
145     trigger the debug flag list output.
146   - Improve migration from 2.8 to 2.10 by recursively migrating
147     configuration files (up to 5 levels, to protect from recursive
148     symbolic links).
149   - Mark legacy plug-ins and scripts in menus.
150   - Enable "save-tool-options" and "save-device-status" by default,
151     it's the expected behavior these days.
152   - GIMP doesn't warn any more for unknown darktable XMP metadata. We now
153     register the corresponding namespace.
154   - Adding settings for metadata export handling in "Image Import &
155     Export" page of Preferences. By default, the settings are checked,
156     but you can uncheck them (in particular since metadata can often
157     contain a lot of sensitive information).
158   - Splash image now scaled down to maximum 1/2 of the screen area. This
159     will allow to ship a big splash image which will be visible on all
160     type of screens, whichever low or high resolution. Vector splash
161     images are scaled both up or down to have them always at ideal size.
162   - Brightness-Contrast, Curves, Levels and Threshold are now available
163     in "Repeat last" history.
164   - Improve action history to not show newly excluded actions (which
165     were already in our history from before the exclusion).
166   - Use GEGL for transform-tools preview, allowing faster and more
167     accurate previews.
168   - Re-arrange color models in the Color dock (WIP).
169   - New debug tool and infrastructure to handle WARNING and CRITICAL
170     errors, as well as fatal errors (crashes), raising a pop-up with all
171     version information on GIMP and its main dependencies, as well as
172     the error message and backtraces, and encouraging people to make bug
173     reports.
174   - Support layer masks on layer groups.
175   - GIMP now attempts to backup unsaved images when it crashes. Then at
176     next startup, it will suggest to recover the salvaged images. Image
177     recovery is not 100% guaranteed.
178   - New gimp_spawn_async() function uses vfork() to help avoid hanging
179     during a fork process, currently used for plug-ins.
180   - Dock color picker is now color-managed on macOS.
182 Libgimp:
184    - New gimp_export_exif(), gimp_export_xmp() and gimp_export_iptc()
185      functions returning the creator choice regarding default handling
186      for metadata export (as set in the Preferences).
187    - GIMP Protocol version incremented.
188    - New gimp_get_pdb_status() to return the status of the last PDB
189      call. This is needed for plug-ins which depend on other plug-ins'
190      procedures. If for instance, a second-level plug-in is interrupted
191      interactively, we don't want to process this as an error but as a
192      cancellation.
193    - New gimp_stack_trace_available(), gimp_stack_trace_print() and
194      gimp_stack_trace_query() for debugging.
195    - Use gegl:distance-transform in gimp_edit_blend() implementation
196      making it much faster for all GRADIENT_SHAPEBURST_* gradient types.
197      Legacy gimp:shapeburst operation has been deleted.
198    - New gimp_context_get_distance_metric() and
199      gimp_context_set_distance_metric() for distance metric used in
200      gimp_edit_blend() (and future usage).
202 GUI and Usability:
204   - New icons: "gimp-attach", "gimp-color-space-linear",
205     "gimp-color-space-perceptual", "gimp-color-temperature",
206     "gimp-dashboard", "gimp-detach", "gimp-tool-desaturate",
207     "gimp-tool-exposure", "gimp-tool-shadows-highlights".
208   - Switching between linear and perceptual (gamma-corrected) spaces
209     in the Histogram dialog is easier now: two buttons instead of one
210     two-way button where current state was difficult to understand.
211   - Shorten color channel labels in the color frame (color picker tool,
212     sample point editor…) with conventional 1 or 2-letter abbreviations,
213     and split coordinates on 2 lines.
214   - We now switch to "Huge" icons by default when the display pixel
215     density is over 250 PPI (used to be 300 PPI).
216   - Improve action history sorting: items climb up the list faster,
217     while top items retain their relative position longer.
218   - Extend action search "initialism": Extend initialism-based search
219     (e.g.: "gb" for "Gaussian Blur"), by matching arbitrarily-long
220     initialisms, and by allowing partial matches (with lesser priority).
221   - Values in the GimpNumberPairEntry widgets can now be cleared by clicking
222     an icon.
223   - Transform Grid controller is now available for custom UIs of GEGL
224     operations (currently used for Recursive Transform op).
225   - New GimpHighlightableButton widget is used to draw attention to buttons
226     in certain cases. Currently used for anchoring and removing floating
227     selections.
228   - Composite modes were renamed to be more descriptive, as follows:
229     Source Over       =>  Union
230     Source Atop       =>  Clip to Backdrop
231     Destination Atop  =>  Clip to Layer
232     Source In         =>  Intersection
234 Configurability:
236   - Wilber logo in the toolbox can now be disabled via Preferences
237     (the Toolbox page).
239 Tools:
241   - "Link brush size with canvas zoom" paint option becomes "Lock brush
242     to view" to make a brush invariant in display space whichever
243     scaling, rotation, and reflection.
244   - Blend tool now displays the line length (in current shell unit and
245     with ideal digit accuracy) and angle in the status bar.
246   - Constrain line angles in display space: all tools which have a line
247     constraint feature (for instance blend tool, paint tools in line
248     mode, etc.) will now do so relatively to the display, allowing you
249     to rotate the canvas in order to constrain to any arbitrary angle.
250   - Levels and Curves can now work on linear light data, the toggles are
251     at the top of respective dialogs, right next to linear/log toggles
252     for the histogram.
253   - Blend tool now has a distance metric option to determine how
254     distances are computed (Euclidean, Manhattan or Chebyshev
255     distances).
257 Filters:
259   - New GEGL-based Shadows-Highlights filter now available in the Colors
260     menu. The implementation is based on the code from darktable.
262 Plug-ins:
264   - Screenshot with the generic Freedesktop API has been implemented. It
265     is meant to replace all desktop environment specific APIs eventually
266     but needs to get reasonable features first. Therefore currently
267     GNOME/KDE and X11 implementations still have priority.
268   - qbist ported to GEGL and float.
269   - Colors for the standard output and standard error texts in the
270     Python console are now themeable, mapping respectively to normal
271     text and insensitive text colors for the "python-fu-console" widget.
272     We updated the default colors a bit for our themes. If this is not
273     good enough (for instance, if one has a specific type of color
274     blindness), at least it is now possible to create a custom theme
275     adapted to one's needs.
276   - PSD export now happens with progress bar update for feedback.
277   - Win32 Screenshot improved to handle hardware-rendered software and
278     multi-monitor displays.
280 File formats:
282   - Fix various vulnerabilities in file plug-ins: GBR (CVE-2017-17784),
283     PSP (CVE-2017-17787 and CVE-2017-17789), TGA (CVE-2017-17786) and
284     FLI (CVE-2017-17785).
285   - Fix WebP export under Windows.
286   - No more max dimension limitation for X cursors. We still warn when
287     cursor size is over a max limit for X bitmap cursors, but we don't
288     clamp anymore on export.
289   - JPEG, PNG, TIFF and WebP export plug-ins updated to honor creator's
290     default choice regarding metadata handling.
291   - Fix GIH brushes using different-sized layers.
292   - RGBE (Radiance HDR) format files can now be imported and exported.
293   - JPEG2000 loading now done via OpenJPEG library and supports any bit
294     depth (over 32-bit per channel will be clamped to 32-bit and
295     non-multiple of 8-bit will be promoted, for instance 12-bit will end
296     up as 16-bit per channel in GIMP). JPEG 2000 codestream also
297     supported and displays a dialog asking for the color space (whereas
298     JPEG 2000 image color space are auto-detected).
299     JPEG 2000 images or codestream in YCbCr, xvYCC and CMYK color spaces
300     are converted to sRGB images upon loading.
302 Building:
304   - poppler and poppler-data now hard dependencies. PDF import is
305     considered a granted feature nowadays and fallbacking to the
306     Postscript plug-in was bad experience.
307   - move PDB generation and sources to toplevel/pdb.
308   - New configure option `--enable-windows-installer` to generate the
309     necessary files for the installer translations during the build.
310   - Improve POTFILES generation for po-*/ directories.
311   - Require glib >= 2.54.2.
312   - New dependency to mypaint-brushes-1.0 for stable MyPaint brushes
313     available at installation.
314   - AppStream ID renamed from gimp.desktop to org.gimp.GIMP following
315     current convention.
316   - Require fontconfig >= 2.12.4. Lower versions are particularly a
317     problem on Win32, where many cache update failure were reported to
318     us, resulting in very slow startup and close-up (and not only the
319     first time, but every time).
321 Translations:
323   - Windows installer now localized with gettext.
324   - String freeze has started and GIMP received updates from:
325     Basque, Brazilian Portuguese, Catalan, Chinese (Taiwan), Danish,
326     Esperanto, French, German, Greek, Hungarian, Icelandic, Italian,
327     Japanese, Latvian, Polish, Russian, Serbian, Slovenian, Spanish,
328     Swedish, Turkish.
331 Overview of Changes from GIMP 2.9.6 to GIMP 2.9.8
332 =================================================
334 Core:
336   - The default brush is now "Hardness 050".
337   - Verbose version (command line: gimp -v) now displays C compiler
338     information.
339   - Transform tools don't commit identity transformation anymore.
340   - Manual language can now be selected amongst all installed manuals,
341     which is particularly interesting when no GIMP manuals are available
342     in your GUI language. This will be proposed by default when a manual
343     is not installed for the GUI language (alongside the possibility to
344     read online) and the choice can be edited in preferences.
345   - The statusbar now blinks on warnings and errors.
346   - Paste in Place, available for regular clipboard and named buffers,
347     allows pasting contents of either the clipboard a named buffer at the
348     exact coordinates it was copied from.
349   - Color Picker should now work on KDE/Wayland.
350   - Color Picker now reads values under cursor in local windows making
351     it work at least inside GIMP Windows on Wayland platforms with no
352     color-picking capabilities (for instance GNOME/Wayland) yet.
353   - OpenCL is now disabled by default. Depending on graphics cards and
354     drivers, OpenCL acceleration is often slower than multi-threaded
355     implementation, and can also sometimes be "glitchy".
356   - Now possible to open a locally-installed manual different from the
357     GUI localization. The manual language choice can be customized
358     through preferences when several manuals are installed. If no manual
359     language has been selected already and no manual for current GUI
360     localization is available, choice of help language will be proposed
361     at first call to the manual.
363 Configurability:
365   - Keybindings now possible for previous/next/top/bottom channel.
367 Usability:
369   - The spinscale widget now highlights vertical parts of the slider
370     section differently to hint that position of cursor above the widget
371     matters. When changing values in the lower step section, the pointer
372     will be wrapped around the screen so that you could continue adjusting
373     the value without interruptions.
374   - Canvas rotation and flip information is now visible in the status
375     bar (as angle value and flip icon). Clicking on these canvas status
376     will respectively raise the "Select Rotation Angle" dialog or unflip
377     the canvas.
378   - Use abbreviated versions for long layer mode names. In particular,
379     replace the "(legacy)" suffixes with "(l)" in the abbreviated
380     versions, still showing the unabbreviated names in the full list.
382 Tools:
384   - Blend tool now features on-canvas gradient editing: adding, shifting,
385     removing color stops, shifting midpoints and converting them to color
386     stops, assignging colors to color stops, changing blending type
387     for midpoints. Additional options: 'Instant mode' (active before you
388     start blending) to support the old workflow where you can't edit color
389     stops before applying the gradient fill, and 'Modify active gradient'
390     which allows changing user-writable gradients directly rather than
391     creating copies of them. Moreover, custom gradient is now saved
392     and restored across sessions.
393   - All transform tools: it makes no difference now whether a modifier is
394     pressed before of after mouse button press/release.
395   - Free Select tool selection can now be committed with double click as
396     well (only through Enter key before). This allows smoother workflows
397     on some setups, and in particular when no keyboard is available
398     (e.g. tablet-like computers).
399   - Layer group children now inherit the color tags of the parent by
400     default, unless specific color tags are assigned. Inherited color
401     tags show in a less saturated color than assigned ones.
403 Painting:
405   - When copying a generated brush, GIMP now copies its 'Spacing' property.
406   - Rename "Wheel" dynamics labels as "Wheel/Rotation". It turns out
407     that Wacom Art Pen and Airbrush pen use the same axis for barrel rotation
408     and wheel scrolling respectively. Therefore they already work in GIMP.
409     "Unhide" the feature with more obvious labels.
411 Color management:
413   - Use babl to convert between profiles if possible.
415 Display filters:
417   - New 'Clip Warning' display filter to show underexposed and overexposed
418     values. Target values below 0 and above 1.0, hence it only works on
419     16/32 bit per channel float images (such as EXR and TIFF).
420   - Display filters now operate in unbounded sRGB rather than in monitor
421     color space.
423 Plug-ins:
425   - Fix finding raw loaders on Windows/macOS.
426   - Screenshot for KDE/Wayland has been implemented (full-screen and
427     window screenshots only; rectangular area screenshots need
428     implementation on the KDE side).
429   - Screenshot can now add a delay between window pick/rectangular
430     area selection and the actual shot, but only in platforms supporting
431     the feature.
433 File formats:
435   - PSD:
436     - Fix mask position when opening/exporting.
437     - Fix active layer selection during loading.
438     - Fix potential group-layer naming conflict during loading.
439     - Fix missing some attributes loading empty layers.
440     - Fix reading files with deeply nested layer groups.
441     - Load and save layer group expanded state.
442     - Improve layer opacity loading/saving.
443   - PDF: password-protected files can now be imported.
444   - HGT: Digital Elevation Model data from NASA/NIMA can now be loaded,
445     both SRTM-1 (1 arc-second) and SRTM-3 (3 arc-seconds).
447 Filters:
449   - Update GEGL-based filter Wavelet Decompose:
450     - Add an option to keep the decomposition in a layer group.
451     - Add an option to add layer mask to each scales layers.
452     - Do not use 'New from visible' because it produces unexpected
453       results; replaced by succession of layer copy and merge down.
455 PDB:
457   - Add file-pdf-load2 API to load password-protected and/or multi-page
458     PDF files.
459   - Add file-hgt-load to load HGT files, with an argument to select between
460     SRTM-1 and SRTM-3 types.
462 Translations:
464   - Updated: Catalan, Croatian, Galician, German, Greek, Hungarian,
465     Icelandic, Indonesian, Italian, Polish, Russian, Spanish.
467 Building:
469   - Require LittleCMS >= 2.8.
470   - Initial docker-based build environment for GIMP now available.
471   - Warn against use of GCC 7.2 which has a bug breaking GIMP.
472   - An official flatpak stable package is now available on flathub.
474 Contributors:
476 Mario Blättermann, Hanno Boeck, Joao S O Bueno, Marco Ciampa,
477 Fran Dieguez, Piotr Drąg, Tobias Ellinghaus, Ell, Sveinn í Felli,
478 gogo, Luis Angel Gonzo, Anders Jonsson, Christian Kirbach,
479 Øyvind Kolås, Thomas Manni, Jordi Mas, Balázs Meskó, Lionel N,
480 Michael Natterer, Jehan Pagès, Juan Palacios, Alexandre Prokoudine,
481 Christopher Rogers, Michael Schumacher, shark0r, Dimitris Spingos,
482 Tobias Stoeckmann, Andika Triwidada, Massimo Valentini.
485 Overview of Changes from GIMP 2.9.4 to GIMP 2.9.6
486 =================================================
488 Core:
490   - Make it possible to use multithreading in GEGL and raise max amount
491     of threads to 64. Given how unstable this feature is, any value
492     above 1 should be currently treated as a step inside an industrial
493     microwave oven with the on/off switch on the outside.
494   - New clipboard implementation allows copying/pasting layers and
495     layer groups.
496   - Color tags simplify managing large projects with a lot of layers
497     and layer groups.
498   - The Mouse Pointer dialog and colors applied to images are now
499     color-managed.
500   - Gamma and precision selectors for newly created images.
501   - Never dither when converting to a higher bit depth, or to anything
502     more than 16 bits; don't offer dithering options in these cases.
503   - Default to linear TRC when converting to 16-bit float.
504   - Pre-initialize some babl-based pixel format conversion routines
505     at start-up to decrease the initial lazy intialization cost for
506     some interactions.
507   - Remove max size limitation of 4GB for XCF files.
508   - Support clipboard images in the clipboard brush and pattern.
509   - libgimp calls are now thread-safe.
511 Layers and compositing:
513   - Layer modes' code is now refactored to separate gamma-corrected
514     variations from the linear light ones, legacy modes have been
515     preserved to support older XCF files. UI to switch between the two
516     is experimental and should be treated as a temporary design.
517   - Blending and compositing of layers are configurable separately for
518     more flexibility now, compositing can be linear TRC, perceptual TRC
519     or CIE LAB.
520   - Layer blending color space and compositing color space are
521     configurable now.
522   - Layers created from the GUI and from plug-ins now default to
523     normal mode (not normal-legacy), unless all the existing layers
524     in the image are also in legacy mode.
525   - New layer modes: linear burn, vivid light, linear light, pin light,
526     hard mix, exclusion, merge, split, luminance (rgb), pass-through
527     (for layer groups only).
528   - Make erase mode an ordinary layer/paint mode.
529   - Better performance of HSV-based layer modes.
530   - Rename "Color (HSV)" mode to "Color (HSL)" to indicate the actual
531     color space being used.
533 On-canvas interaction changes:
535   - Refactor on-canvas interaction code out of some of the tools and
536     make it reusable.
537   - Update tools accordingly.
538   - Make on-canvas interaction accessible to GEGL-based filters and
539     use it in the Spiral and Supernova filters as a test case.
541 GUI and usability:
543   - Easily add or remove layer masks by clicking either the layer
544     preview or a new button in the Layers dialog.
545   - Enhance the Layer Attributes dialog to provide the single UI for
546     setting layer's name, blending mode, opacity, and offset,
547     toggling visibility, link status, various locks, color tags.
548   - Add a Save As button to the “Quit GIMP” dialog and raise images
549     on click for easy checks.
550   - Allow to choose fill color when resizing layers and images.
551   - Quick Mask and Channel Attributes dialogs use the new spinscale
552     widget for the  mask opacity slider.
553   - Enable grid views of dynamics and tool presets.
554   - Allow to zoom with middle mouse button + control + drag up/down.
555   - For all paint tools, when switching to the color picker mode,
556     don't rely on the exact modifier being pressed or released. Instead,
557     check if only the right modifier is pressed after *each* modifier
558     change, and switch to color picking if it is.
559   - On startup, GIMP checks for duplicate accelerators in menus, and
560     removes duplicates.
561   - Standard (Freedesktop) and GTK+ icons can now be set by the icon
562     theme for a fully consistent style.
563   - Many new icons.
564   - Toolbox buttons do not grab focus anymore, which used to break
565     usage of the Tab key and other canvas-related shortcuts after
566     changing tools with a pointing device click.
567   - Delete Layer/Channel/Path are consistently the last option in
568     respective dialogs now.
569   - Extend the text along the tangent of the last path stroke, when
570     the length of the path is shorter than the width of the text to be
571     warped.
572   - Allow to toggle the histogram dialog between gamma and linear.
573   - New 'Colors -> Linear Invert' command to provide radiometrically
574     correct color inversion.
575   - Quit dialog now exits when all the images in the list have been
576     saved.
577   - The built-in error dialog now displays errors outputted by GEGL.
578   - Shift-clicking the visibility icon of a layer in a layer group now
579     toggles its exclusive visibility within this layer group.
581 Color selection and management:
583   - Add the profile import policy to Preferences -> Import.
584   - Color management for GEGL-based filters is expensive, so it's off
585     by default for now, and options are hidden by default too.
586   - Add LCH color selector, with support for gamut checking.
587   - Default to magenta for out-of-gamut color.
588   - Make all script-fu color buttons color-managed.
590 Configurability:
592   - Remember settings of many dialogs across sessions.
593   - New Interface / Dialog Defaults page in the Preferences dialog to
594     control defaults values of various dialogs.
595   - Settings on some individual pages of the Preferences dialog can be
596     reset separately now.
597   - Vertical scrollbar added to keep the height of the Preferences
598     dialog fitting small displays.
599   - Allow mouse to optionally configure tablet devices
600   - Allow creating shortcuts containing the Cmd key + mouse wheel events.
601   - Default to 300ppi and 1920x1080px for new documents.
602   - Default to 62px font size.
603   - Do not allow Alt+[0-9] shortcuts, they are typically reserved for
604     display switching.
605   - Icons size is now a configurable option, not a theme feature.
606     The icon size is also auto-guessed from monitor resolution now.
607   - It is now possible to have keybindings for previous/next/top/bottom
608     vectors.
610 Tools:
612   - Complete the Handle Transform tool and make it available by default.
613   - Add Hue-Chroma operation/tool that operates in CIE LCH color space.
614   - Replace Color Balance, Colorize and Hue-Saturation with GEGL-based
615     filters with a custom user interface to ease future transition to
616     non-destructive editing planned for v3.2. Remove the "Image -> 
617     Tools -> Color Tools" submenu.
618   - The Move tool now shows relative coordinates when moving guides
619     and sample points.
620   - The Measure tool has better digit precision now (before that, at
621     4000 PPI, up to 7 pixels would show up as 0 mm, then at 0.1 mm from
622     the 8th pixel etc.).
623   - All paint tools now display the angle (relatively to the horizontal
624     line, centered on previously drawn position) alongside distance in
625     status bar when straight line constraining (holding shift when
626     painting).
627   - Performance of the Fuzzy Select and the Bucket Fill tool has been
628     improved.
629   - The Fuzzy Select and the Bucket Fill tool now can select colors by
630     CIE L, C, and H.
631   - Unclutter transform tools: default to "no grid", hide the original
632     layer during the interactive transform (except for the Flip tool).
633   - Make the Warp Transform tool faster, add more options, use
634     the linear sampler to ensure crisp lines after an erase.
635   - Select by Color and Color Picker tools work now correctly in color
636     spaces other than sRGB.
637   - Free Select tool now waits for Enter being pressed to confirm
638     selection, which enables you to tweak positions of polygonal selection.
639   - Color Picker doesn't snap to anything when picking colors anymore,
640     always draws the outline of the averaged region (not only while the
641     mouse is being pressed), and supports arbitrary range of values
642     regardless of the actual image color precision.
643   - Color Picker now displays pick position (also visible in the
644     Sample Points dialog now), as well as values in CIE LAB and CIE LCH.
645   - Uncommitted selection by the Intelligent Scissors tool is not
646     discarded on tool change anymore.
647   - For Intelligent Scissors, GIMP now checks whether the first and the
648     last isegments are distinct before closing the curve.
649   - Flip tool: add Clipping option to the flip tool. Add support for
650     reflecting across guides: when clicking on a guide while using the
651     Flip tool, reflect the active item across the guide, rather than
652     around its center.
654 Painting:
656   - The Smudge tool now has a Flow control that allows mixing in both
657     constant and gradient color while smudging. There's another new
658     option to never decrease alpha of existing pixels while smudging
659     in the tools options now as well.
660   - Rulers, scrollbars, and the Navigation dialog follow canvas
661     rotation now.
662   - Canvas rotation is now snappier in certain cases.
663   - For bitmap brushes, GIMP now caches hardness and disables dynamic
664     change of hardness to improve painting performance. Bitmap brushes
665     also don't get clipped anymore, when hardness is less than 100.
666   - Allow painting on transparent layers with modes other than normal.
667   - Add a specialized convolution algorithm for the hardness blur
668     to make it faster.
669   - Make the Force option insensitive for the Pencil tool.
670   - Add new "Pressure Size" dynamics.
672 File Formats:
674   - Make the default raw (DSLR) image importer configurable.
675   - Add RawTherapee plug-in to pre-process various raw (DSLR) images,
676     RawTherapee v5.2 is the minimum requirement.
677   - Add new file-raw-placeholder plug-in that registers itself for
678     loading all raw formats from file-raw/file-formats.h, but does
679     nothing except returning an error message pointing to darktable
680     and RawTherapee.
681   - Add native WebP loader/exporter with support for ICC profiles,
682     animation, metadata.
683   - The TIFF loader will not generate warnings about private tags
684     anymore.
685   - Handle linear gamma PNG files correctly, provide a combo box for
686     specifying PNG bit depth / variant at exporting time.
687   - Add support for linear burn, linear light, vivid light, pin light,
688     and hard mix layer modes in PSD (importing and exporting).
689   - Load PSD files with layers which contain additional information
690     with a length that is not divisible by 4.
691   - Add support to import/export layer color tags from/to PSD files.
692   - Optionally convert all imported (not XCF) images to 32-bit linear
693     floating point, and optionally add a little noise in order to
694     distribute the colors minimally.
695   - Optionally add alpha channel to layers of imported images
696     (configurable in Preferences > Import).
697   - Support writing PNM files with 16-bit image precision.
698   - Improve support for PCX files:
699     * saving 1bpp and 4bpp images (according to palette size).
700     * loading 2bpp, 2 planes/1bpp, 3 planes/1bpp and 4bpp images.
701     * non-Black&White monochrome PCX files (any 2 colors according to
702       the palette).
703   - Add support for exporting multi-page PDF from image layers, with
704     optional reversed order.
705   - Add RLE support for RGB565 in file-csource.
707 Metadata:
709   - Add new metadata viewer that uses Exiv2 to display Exif, XMP, IPTC,
710     and DICOM metadata (the latter is displayed on the XMP tab).
711   - Add metadata editor that supports adding/editing writing XMP, IPTC,
712     DICOM, and GPS/Exif metadata, as well as loading/exporting metadata
713     from/to XMP files.
715 Printing:
717   - Print resolution can now be reset to defaults, new values for the
718     same image is actually used now without reloading the image.
720 Plug-ins:
722   - The Screenshot plug-in now assigns either monitors profile or
723     converts to sRGB.
724   - The Screenshot plug-in can now take screenshots of a single window
725     and include the mouse pointer in the same time (if the desktop/OS
726     allows it).
727   - Port smooth-palette to GEGL.
728   - Enhance the raw (not the digital negative) files plugin:
729     introduce exporting settings and remember them across sessions,
730     make the plugin invokable non-interactively, and more.
731   - Plug-ins can now be installed into first level directories of a
732     plug-ins/ folder. This is in particular to avoid the "DLL hell"
733     with shared libraries installed by a plug-in, interfering with other
734     unrelated plug-ins. The entry point file has to be named the same as
735     the directory (minus extension).
737 Filters:
739   - Add GEGL-based filters: Neon (Edge detection), Wavelet Decompose,
740     Image Gradient, Symmetric Nearest Neighbor, Extract Component,
741     RGB Clip, Simple Linear Iterative Clustering, Waterpixels, Spiral.
742   - Add rotate/flip buttons to the Convolution Matrix filter's GUI
743     to rotate/flip the matrix.
744   - For GEGL-based filters, use a new metadata language to dynamically
745     control UI attributes based on context (e.g. auto-disable
746     unapplicable options).
747   - Allow filter actions to have hardcoded default operation settings
748     by encoding them directly in the string attached to all filter
749     actions.
751 Color Palettes:
753   - Merge Palettes command is available for multiple selected color
754     palettes now.
756 Assets / Resources:
758   - Some basic presets are available for the Crop tool now: 2x3,
759     3x4, 16:10, 16x9, and square.
760   - Documents templates have been updated and now feature popular,
761     contemporary document presets for both print and digital media.
763 PDB:
765   - Rename *-paste-as-new to *-paste-as-new-image.
766   - Add PDB API for layer blend space, compositing space, and
767     compositing mode.
769 Build:
771   - Depend on LCMS2.7+ now, because earlier LCMS2 releases caused
772     problems with certain GIMP blend modes.
773   - Depend on libpng 1.6.25+ to avoid warnings about known incorrect
774     sRGB profiles, also avoid various vulnerabilities.
775   - Depend on glib-networking now for HTTPS support.
776   - Depend on librsvg 2.40.6 which fixes rendering bugs.
777   - Add a flatpak-builder manifest.
779 OS-specific changes:
781   - Help browser launches on macOS now.
783 Bugs:
785   - Overall 204 bugs have been fixed or partially addressed since
786     GIMP 2.9.4.
788 Translations:
790   - Updated: Catalan, Chinese (Taiwan), Croatian, Czech, Danish,
791     Finnish, French, German, Greek, Hungarian, Icelandic, Italian,
792     Kazakh, Occitan, Polish, Portuguese, Russian, Scottish Gaelic,
793     Serbian, Slovak, Slovenian, Spanish, Swedish.
796 Overview of Changes from GIMP 2.9.2 to GIMP 2.9.4
797 =================================================
799 Core:
801   Color Management:
802   - add new GimpColorTransform object to create abstraction from LittleCMS
803   - now color-managed:
804     - layer/image/color palette/gradient/pattern previews
805     - Color Picker tool
806     - color buttons of GimpColorHistory
807     - GimpFgBgEditor, as used e.g. in the toolbox
808     - color selectors
809     - DND widget
810     - painting tools
811     - copying layers/paste buffer between images
812     - Colors applied to images
813     - GimpColorPanel and its color dialog (color widgets in dialogs)
814     - color areas created from menu actions
815   - color management for grayscale images, including setting preferred
816     ICC profile
817   - add fast switching between color managed display and soft-proofing
818   - add a per-image "is color managed" switch and show the image's
819     "is color managed" state in the window title string
820   - add basic support for creating images with color profiles
821   - add "Optimize" options for display and soft-proofing to optionally
822     speed-up rendering at the cost of color fidelity
823   - add Image -> Color Management -> Save Color Profile to File...
824   - improve the naming of generated ICC profiles
825   - add a shortcut to the profile chooser dialog on OS X too
826   - don't let display color management settings affect file import
827   - enable color management when a profile is assigned to the image
828   - enable color management when the image is converted from/to grayscale
829   - pass the right color profile around in gimp_selection_float()
830   - hardcode the CMYK selector's conversion parameters, as well as NTSC
831     parameters in babl/GEGL/GIMP
832   - have all previews track the monitor they are on
834   Core:
835   - add "Select -> Flood" select action
836   - add "Select -> Remove Holes" action
837   - add "Border style" combo to the "Select -> Border..." dialog
838   - do not request xcf compat mode when compat_toggle not sensitive
839   - initialize fontconfig in the background to be able to show a pulsing
840     progress bar when rebuilding the list of fonts (typically, the first
841     time GIMP runs)
842   - fix the Behind blending mode
843   - make Burn mode output match Gimp 2.8 (partial revert of bug 744265)
844   - improve file magic matching
845   - add a custom guide concept
846   - improve updating the statusbar messages and icons
849 GUI:
851   Menus:
852   - move the image-duplicate action next to image-new
853   - add Image -> Color Management -> Color Management Enabled
854   - change "Select _Custom Color..." to "_Custom Color..."
855   - change "Export" to "Export..." in the File menu
857   Dialogs:
858   - include recently used colors in the Dockable Colors dialog
859   - add RGB-based Luminance channel to the Histogram dialog
860   - fix remembering the order of dockable dialogs
862   Preferences:
863   - reorder the prefs categories tree and rename some pages
864   - move "Snap Distance" to the prefs dialog's "Snapping" page
865   - add configuration for undo preview size
866   - clean-up Preferences -> Color Management
867   - add "Shortcut [some modifier] + Mousewheel" for changing pen size
869   Themes:
870   - rename theme "Default" into "System"
871   - add new GUI themes: Lighter, Light, Gray, Dark, Darker
873   Icons:
874   - add icon theme selection and make the icon theme path configurable in prefs
875   - preserve 2.8 pixel-perfect icon theme under the name "Legacy"
876   - add new symbolic icon theme for GIMP
877   - add a scalable icon theme and a configure option --enable-vector-icons
879   Widgets:
880   - add new GimpBufferSourceBox widget and use it in GimpOperationTool
882   View/Display:
883   - fix various bugs related to rotated canvas
884   - make GIMP not ignore 'Maximized' hints on startup in Windows
885   - enable a pulsing progress bar in the splash
886   - make new images jump around much less
887   - fix image position when entering/leaving fullscreen mode
888   - make layer boundary re-drawn correctly on scrolling
889   - make images not appear completely black when images dockable is visible
890   - have all previews track the monitor they are on
893 Tools:
895   Fuzzy Select:
896   - add "Diagonal neighbors" option
898   Foreground Select:
899   - fix ghost brush outline
901   Bucket Fill:
902   - add "Diagonal neighbors" option
904   Posterize:
905   - turn the posterize tool into an ordinary GEGL filter
906   - remove posterize from Tools -> Colors
908   Desaturate:
909   - turn the Desaturate tool into a normal GEGL filter
910   - move "Desaturate" to Colors -> Desaturate
912   Align:
913   - add vertical offset to distribution options
915   Paths:
916   - improve performance
918   Flip:
919   - rename options to "Transform" and "Direction"
921   Cage Transform:
922   - fix a few performance issue
924   Unified Transform:
925   - make the tool not fail when currently selected layer is hidden
927   Text:
928   - fix text input methods to work in-place (not in an overlayed box)
929   - add background colors setting, only exposed for advanced input methods
931   Blend:
932   - use gegl:distance-transform in the blend tool, it has a progress now
933   - make shapeburst work with the new interactive gradient code
935   All Painting Tools:
936   - add mirror symmetry
937   - remove artifacts from painting tools in Burn blending mode
938   - add shortcut actions for changing spacing, hardness, and force
940   MyPaint:
941   - dramatically improve performance of the tool and enable it by default
942   - add Colorize mode
943   - add a toggle to change between erase & paint mode
944   - add a brush selector to the MyPaint brush options
945   - add a dockable dialog to choose a brush, with tagging
946   - read tags from MyPaint brushes
947   - improve blend math
948   - allow plug-ins to register procedures in the <MyPaintBrushes> menu
950   Smudge:
951   - fix the clipping of out-of-gamut channel values
952   - fix the handling of layers with alpha channels
954   Ink:
955   - the range of angle is now [-PI..PI]
958 Plug-ins/GEGL Filters:
960   Preview:
961   - add a "split preview" feature to GEGL ops
962   - allow to switch the split preview between horizontal and vertical
963   - allow to swap the before/after position
965   Filters:
966   - update the "Recently used" menu with GEGL filters
967   - replace Selective Gaussian Blur with the GEGL version
968   - add gegl:saturation as Colors -> Saturation
969   - add gegl:high-pass as Filters > Enhance > High Pass
970   - add new gegl:gegl filter that executes a custom processing chain
971   - port Tile and Pagecurl plug-ins to GEGL
972   - refactor the screenshot plug-in into backend and front-ends, one
973     per X.org, Wayland, Windows, OS X
974   - add Monochrome option to the GEGL version of Channel Mixer
975   - bring dialog titles and help IDs to GEGL filter dialogs
977   File Plug-Ins:
978   - add darktable plug-in to pre-process various raw images
979   - port file-gif-save and file-tiff to GIO
980   - TIFF support:
981     - make libtiff a hard dependency
982     - merge the file-tiff-load and file-tiff-save plug-ins
983     - fix various tiff exporting bugs
984   - EXR support:
985     - read comment, Exif, and XMP data from EXR files
986     - use GIMP's internal profile when loading EXR
987   - PSD support:
988     - fix the loading of files with adjustment or fill layers
989     - fix the reading of layer group structure
990   - fix the raw image loader
991   - fix the layer groups support in OpenRaster
992   - code cleanup in file-bmp
993   - fix the exporting of KISS - CELL (*.cel) images
994   - resurrect the email plugin
995   - use GIO to figure if a file is hidden
997   PyGimp:
998   - update pyconsole code
999   - add binding for GimpImageType
1000   - add GimpColorConfig object
1001   - add type definition for GimpColorManaged
1002   - make GimpParasite type known to the code generator
1003   - require Pycairo in configure, link gimpui against pycairo
1004   - fix the application of paintbrush size in Python scripts
1006   Script-Fu:
1007   - make regex matching return character indexes
1008   - fix the hanging of Script-fu on machines with 64-bit longs
1009   - update tinyscheme code from upstream
1012 PDB:
1014   - Bug 759104 - Allow coordinates of sample points to be accessed from scripts
1017 Build:
1019   build/win:
1020   - Start building libmypaint.
1021   - Add pcre and upgrade glib2 to 2.48.1
1022   - Upgrade exiv2 to 0.25
1023   - Clear DISPLAY before building
1024   - Disable webkitgtk
1027 OS-specific changes:
1029   Windows:
1030   - Add support for generating crash backtraces using Dr. MingW
1033 Overview of Changes from GIMP 2.8.0 to GIMP 2.9.2
1034 =================================================
1037 Core:
1039   The core got completely ported to GEGL, listing all changes involved
1040   would be too much, therefore we summarize the changes in app/ per
1041   source subdirectory:
1043   base
1044   composite
1045   paint-funcs:
1046   - Remove these directories, they contained the old pixel
1047     manipulation functions
1049   config:
1050   - Remove GimpBaseConfig, add GimpGeglConfig
1051   - Add config options for new features
1053   core:
1054   - Add some things that used to live in base/, like the temp-buf,
1055     boundary and histogram code
1056   - Port all functions to GEGL and higher bit depths
1057   - Keep the image around as GEGL graph, all other compositing is gone
1058   - Add non-destructive drawable filters, but use them only for previews
1059   - Implement the floating selection as drawable filter
1060   - Implement GimpImageMap using drawable filters
1061   - Move batch processing to gimp-batch.[ch]
1062   - Run batch commands in an already running GIMP instance
1063   - Ported almost everything from filenames/FILE/fd to GFile/GIO
1064   - Be smarter about migrating old user config files
1065   - Move many object struct members to private structs
1067   file:
1068   - Support GIO-ported file load/save procs, handle remote files generically
1070   - Add content locking to items to prevent them from being edited
1071   - Add position locking to items to prevent them from being translated
1072   - Implement all color management in the core
1073   - Add an automatic palette of recently used colors
1074   - Implement metadata handling in the core
1076   gegl:
1077   - Now contains utility functions and abstractions to work with
1078     GEGL more easily
1079   - Move all operations to the new operations/ directory
1081   operations:
1082   - New directory containing all GIMP-internal GEGL operations
1083     and their config objects (if any)
1084   - Add a correct version of the overlay layer mode
1085   - Add LCH layer modes
1087   paint:
1088   - Port all paint cores to Gegl
1089   - Add MyPaint brush paint core
1091   pdb:
1092   - Add compat procedures that work like the removed plug-ins
1093   - Use the new GimpValueArray, GValueArray got deprecated
1095   plug-in:
1096   - Allow plug-ins to access image data at full bit depth
1097   - Add a compat mode so unported plug-ins always get 8-bit data
1099   text:
1100   - Port text rendering to GEGL
1101   - Use HarfBuzz to inspect fonts for creating an example string
1103   xcf:
1104   - Add zlib compression to XCF loading/saving
1107 GUI:
1109   - Add GUI to handle the new high bit depths and conversion between them
1110   - Add new action group "filters" which can run arbitrary GEGL ops
1111   - Add lots of actions invoking GEGL ops that replace removed plug-ins
1112   - Preview all GEGL ops live on the canvas, using drawable filters
1113   - Mostly switch from using stock-ids to icon-names
1114   - Turn all stock icons into named icons and add an icon theme
1115   - Allow selecting colors from an image's colormap
1116   - Add "Show in file manager" to everything that has a filename
1117   - Add an action search dialog to find actions by keyword and execute them
1118   - Split the save dialog into subclasses for load, save and export
1119   - Implement various color management dialogs that were in the lcms plug-in
1120   - Make sure windows appear on the correct monitor
1121   - Simplify and reduce the actions that modify paint tool behavior
1122   - Add canvas rotation and flipping
1123   - Allow zooming to the selection
1124   - Make the image tab position configurable in single window mode
1125   - Add separate snapping settings for fullscreen mode
1126   - Remove bitmaps cursors and only support RGBA cursors
1127   - Color manage drawable and image thumbnails
1128   - Add more format string options for the image title
1129   - Use the external gtkosxapplication package instead of included code
1130   - Add a generic GimpPopup class and use it instead of duplicating code
1131   - Make the generated GUI of GEGL ops much better
1132   - Allow to implement custom GUI for gegl ops, and do that in some cases
1133   - Add GimpDial, GimpPolar and GimpCircle to be used for angle and hue picking
1136 Tools:
1138   - Add an "experimental playground" for unfinished tools
1139   - (experimental) Add a tool that paints with MyPaint brushes
1140   - (experimental) Add an n-point deformation tool
1141   - (experimental) Add a transform tool with a variable # of handles
1142   - (experimental) Add a seamless clone tool
1143   - Add a unified transform tool that allows rotating, scaling, perspective
1144   - Add a warp tool as replacement for the IWarp plug-in
1145   - Allow tool dialogs to be embedded on the canvas generically
1146   - Add much more options to painting, like the ability to lock
1147     tool options to brush defaults, and to zoom the brush with the canvas
1148   - Make the blend tool work interactively in realtime
1149   - Add undo/redo to many tools (using the normal shortcuts)
1152 Libgimp:
1154   - Deprecate the entire old pixel manipulation API
1155   - Add API to get a drawable's buffer, the rest can be done with GEGL
1156   - Add high bit depth support when using the new buffer API
1157   - Make many enum value names sane and deprecate the old names
1158   - Many core enums moved here instead of proxying them via PDB generation
1159   - Add API to stroke vector outlines, with all core properties
1160   - Add more context API that affects other procedures
1161   - Deprecate API with weird names, and add new API with less arguments
1162   - Add metadata and color management API, utility functions and widgets
1163   - Split GimpPickButton into per-platform backends and fix it on OS X
1166 Plug-ins:
1168   - Remove lots of plug-ins that are now implemented as GEGL ops
1169   - Remove the lcms plug-in, this is now done in the core/libgimp
1170   - Remove the metadata plug-ins, this is now done in the core/libgimp
1171   - Remove the file-uri plug-in, this is now done in the core using GIO
1172   - Port many file plug-ins to GIO
1173   - Port many plug-ins that are not strictly filters to GEGL
1176 Source and build system:
1178   - Don't use INCLUDES in Makefile.am, use AM_CPPFLAGS instead
1181 General:
1183   - Lots and lots of bug fixes
1184   - Translation updates