diff --git a/NEWS b/NEWS index 368e150ba0..de14a0e695 100644 --- a/NEWS +++ b/NEWS @@ -1,1128 +1,40 @@ ------------------------------ GNU Image Manipulation Program - Development Branch + Stable Branch ------------------------------ -This is the development branch of GIMP. +This is the stable branch of GIMP. -Overview of Changes from GIMP 3.2.0 RC3 to GIMP 3.2.0 -===================================================== - -Core: - - - Operation "gimp:curves" set to Perceptual "trc" by default. The - "linear" (unused, and only kept for compatibility) arg has been - removed since the op could not have been used during 3.0 series. - - Levels dialog now initializes to Perceptual (even though the - "gimp:levels" op still defaults to Linear "trc", for - backward-compatibility reasons). - - Improve clipboard shutdown on Windows (speeds up shutdown). - - Dragging a color or pattern on a vector layer in the Layers dock - will set its fill instead of rasterizing it (a similar flow had been - implemented in RC3, but it was working when dragging on canvas - only). - -Tools: - - - Text tool: make sure the on-canvas UI is always fully visible on - canvas. - - Selection tools: fix ordering of selection modes in tool options. - -Graphical User Interface: - - - Further theme fixes (in particular in the Python console). - - Individual per-project save buttons in the Quit dialog are now sized - according to the theme. - -Plug-Ins: - - - Screenshot: when "Include mouse pointer" is checked on Windows, - it used to show a generic cursor rather than the actual currently - used one. We now show the correct cursor. - - Fixed ZDI-CAN-28813 vulnerability in ANI loading. - - Fixed ZDI-CAN-28901 vulnerability in XPM loading. - - Fixed ZDI-CAN-28807 vulnerability in PSD loading. - - Fixed ZDI-CAN-28874 vulnerability in PSP loading. - - Fixed ZDI-CAN-28405 vulnerability in IFF loading. - - Fixed ZDI-CAN-28863 vulnerability in JPEG 2000 loading. - - Filters Browser: now shows default value for enum and GimpChoice - arguments of filters. - - JPEG: - * the color profile is now always stored in JPEG files exported as - CMYK. - * DCT options are shown again as a combo box (instead of a radio - frame), just like they were during the 2.10 series. - * fix loading of photoshop path split across multiple segments. - - TIFF: only show the "Show reduced images" toggle when there are - actually several images in the file. - - PSD: various fixes on loading code. - -API: - - - libgimp/PDB: gimp_image_convert_color_profile() allows a NULL - profile, which will convert the image to a built-in profile, as was - already documented (yet not properly implemented). - - libgimpwidgets: GimpUnitComboBox better interacting with pointer - events. - -Translations: - - - New Kazakh translation of the Windows installer, as well as for - Python and Script-Fu plug-ins, tags and tips. - -Build: - - - The Snap package will now migrate from ~/snap/ if the 3.0 folder is - not found in XDG config home, similarly to what we do for Flatpak. - - Our in-house macOS builds now uses macOS 26 to generate Liquid Glass - icons. - - The RC2 splash image was chosen as final GIMP 3.2.0 splash. - - DMG packages for macOS are now properly built as relocatable. - - Building GIMP is now fully reproducible. - - More work done on the in-house macOS pipeline (i.e. in our Gitlab - instance, triggered by the main repository, not our more ancient - external pipeline), especially regarding x86_64 DMG support (the - Silicon builds are already working fine). - - -Overview of Changes from GIMP 3.2.0 RC2 to GIMP 3.2.0 RC3 -========================================================= - -Core: - - - In a Flatpak sandbox, GIMP will now show the native config directory - path in relevant places. - - XCF files can now only be loaded when all fonts have been loaded. - Font loading happens as a background task and can continue even - after the GUI is present and usable (for people with a lot of - fonts). When they try to load image files in such a case now, the - loading will be delayed (this also includes files loaded from - command line, or from a file browser starting GIMP). - - Default to 'quartz' IM on macOS for emoji keyboard support. - - When dropping a color or pattern on canvas when a vector layer is - selected, their "fill" property is updated accordingly. - - Link layers are now protected against color and pattern drops. - - macOS logo was updated to cater to new guidelines since macOS 26 - (following previous guidelines, the logo was appearing too small on - latest macOS). - - Not all color buttons should be fully image-contextual, in - particular for indexed images. E.g. filter color buttons should - usually not be limited to the palette's colors. Nor should the - out-of-gamut or grid colors, etc. - - When merging all filters on a drawable, the inactive filters are - ignored (and therefore are kept as-is, instead of being removed). - - Sample Points mode is carried over on duplicated images (not only - their position). - - Procreate swatches (.swatches) can now be imported as palettes. - - Flipping link layers don't rasterize them anymore. - - Code forbidding some operations from being used non-destructively is - now a bit more robust. - - Better support for filter's area updates. - - In the Input Devices window, we now dropped the list of axis. - Changing an axis use has not really worked for years, and this list - was mostly confusing. Also it seems like it was not even shown - anymore on some platforms in the 3.0 series. - On the other hand, we now always show the Pressure Curve for any - device of type "Pen". We don't try anymore to be clever and detect - if the pen really has a pressure axis. As it turns out, such - heuristic was quite fragile and not working in some cases. - - Some work started on some file dialogs to use API more compatible - with native file dialogs, hence preparing the field for this port in - the next minor series. - -Tools: - - - Flip tool: up/down and left/right keys can now be used to flip items - respectively vertically or horizontally. - - Crop tool: the tool now adds an alpha channel to a layer under the - following conditions: - 1) "Selected layers only" is checked - 2) "Allow growing" is checked - 3) "Fill with" is set to transparency - 4) The crop rectangle is larger than the width or height of the layer - 5) The layer does not already have an alpha channel. - - Shear tool: arrow keys support to adjust the shear: left/right move - the shear on the X axis, up/down move the shear on the Y axis. - By default, it moves one pixel at a time. If you hold shift (similar - to the move tool), it moves based on the slider's page increment - setting (factoring in the current zoom). - -Operations: - - - "gimp:curves" and "gimp:levels" now properly default to Linear. - Also the "linear" argument for both is now completely ignored in - favor of "trc". This doesn't break API compatibility because these - filters were broken enough that they were only run as linear until - now. As for XCF backward compatibility, the full argument list was - stored so existing XCF files will still load and render fine. - - Equalize: - * The filter now works again in non-linear space, just like it did - in GIMP 2.10. - * The "gimp:equalize" operation is now hidden from the API, because - it is not usable anyway (lack of GimpHistogram support in - libgimp/PDB) but also because the core implementation needs to be - changed before being able to behave properly in non-destructive - usage (the histogram would currently not re-compute itself with - source changes). - -Graphical User Interface: - - - Add conditional mask delete button on Layers dockable, shown when a - layer mask is selected. - - Reorder HLS to HSL in Hue Saturation GUI. - - The Navigation and Selection dockables are now properly colored - according to the theme (in particular, in dark mode, they won't show - huge bright areas when no images are opened). - - No outlines are shown anymore in the "Fx" column of item tree views. - - The Welcome dialog is not shown on start anymore if GIMP was started - by loading images. - - Histogram Editor pixels and count are now displayed in GSize range. - - New splash image for RC3. - - Make styling consistent for the NDE popover. - - Better wrapping and scrolling policy for the comment field of the - export dialog, preventing issues when other program add extra-long - comment to images. - - New style defined for GimpPivotSelector, so that it can be styled - through CSS. - - Canvas Size options in Preferences dialog reordered to match the - respective Canvas Size dialog. - - Hide move handle in Text Editor window (this is only meant for the - on-canvas text editor). - - Do not trigger tree view search unnecessarily in various widgets - where it is counter-productive. - - We will not show uninstalled languages anymore in Preferences > - Interface. This could happen when packagers are splitting language - modules into separate packages, or when configuring a Windows - installation not to install all languages. - -Command Line Interface: - - - Man page improved to up-to-date usage. - - CLI option --no-interface is now hidden on gimp-console usage. - -Plug-Ins: - - - Fixed vulnerability ZDI-CAN-28232 in PSP import. - - Fixed vulnerability ZDI-CAN-28599 in ICO import. - - Fixed vulnerability ZDI-CAN-28265 in XWD import. - - Fixed vulnerability ZDI-CAN-28530 in ICNS import. - - WebP lossless export made more efficient. - - JPEG2000 quality setting on export fixed. - - XMC export updated not to modify the source image. - - Curve Bend PDB procedure API is not bogus anymore. - - Gradient Flare files now support also Windows line ending. - - Background color restored in (script-fu-round-corners). - - DDS: - * Initial DDS BC7 export support. - * Retains original import settings of a DDS texture (such as - compression, number of mipmaps, and flags) through a parasite. - On export, we default the compression format to the original to - reduce the chance of choosing the wrong format for the game - they're creating the texture for. - The other data stored is not currently used. - - Various Python plug-ins were improved to properly work in headless - environments. - - Image Map dialog improved so that it doesn't show too wide. - - Script-Fu: libgimpui enum values are now also introspected, same as - libgimp enum values are. E.g. GIMP_ASPECT_SQUARE is ASPECT-SQUARE in - Script-Fu. - - EXR: Import YUV OpenEXR chroma channels as RGB. - -API: - - - libgimp/PDB: - + The following functions were deprecated, now recommending to - directly merge or append filters on drawables with the - GimpDrawableFilter API: - * gimp_drawable_brightness_contrast() in favor of filter - "gimp:brightness-contrast". - * gimp_drawable_color_balance() in favor of filter - "gimp:color-balance". - * gimp_drawable_colorize_hsl() in favor of filter - "gimp:colorize". - * gimp_drawable_extract_component() in favor of filter - "gegl:component-extract". - * gimp_drawable_desaturate() in favor of filter - "gimp:desaturate". - * gimp_drawable_hue_saturation() in favor of filter - "gimp:hue-saturation". - * gimp_drawable_invert() in favor of filters - "gegl:invert-linear" and "gegl:invert-gamma". - * gimp_drawable_levels() in favor of filter - "gimp:levels". - * gimp_drawable_shadows_highlights() in favor of filter - "gegl:shadows-highlights". - * gimp_drawable_posterize() in favor of filter - "gimp:posterize". - * gimp_drawable_threshold() in favor of filter - "gimp:threshold". - * gimp_drawable_curves_explicit() in favor of filter - "gimp:curves". - * gimp_drawable_curves_spline() in favor of filter - "gimp:curves". - + gimp_image_get_thumbnail() implementation updated to always return - sRGB(A) 8-bit data. - + New GimpCurve class and various API to create and configure a - curve. - - libgimpconfig: - + GimpConfig objects can now be given a XCF version to force the - serialization to use older formats. This is used for serializing - some parasites in XCF and keep them compatible with older GIMP - versions. - + New functions: - * gimp_config_get_xcf_version() - * gimp_config_set_xcf_version() - - libgimpwidgets: - + GIMP_ICON_TEXTURE ("gimp-texture") is not used anymore and is - planned for deletion in GIMP 4. - + GimpColorScales and GimpColorSelect made introspectable. - + gimp_widget_get_monitor() has now a Wayland implementation. - -Translations: - - - New Cornish translation of GIMP. - - Thai now has official support in InnoSetup (Windows installer's - generic strings). - -Build: - - - GIMP docs is now versioned on $DATADIR/doc/gimp-$APIVER (where - APIVER=3.0 right now). - - Drop Force32bitInstall option in Windows installer. - - Work has been started to move the macOS CI to our main Gitlab infra. - We now have macOS jobs in the CI, and these can be triggered in - merge requests with "Package:Macos Dmg" label. More work is needed - before it can become the source for our release packages though. - - The Flatpak package will now contain gimp-console as well. - - Add a configure test on macOS to ensure that harfbuzz was built with - libgraphite2 shaper. - - New -Ddmg boolean configure option to generate files needed for our - macOS DMGs. - - New -Dbash-completion configure option. - - CI: it is now possible to trigger packages from MR by writing - package labels in MR descriptions without having special access role - on Gitlab. - - Some older unit tests updated to run on real GIMP; other tests were - disabled because they keep getting bugs (which are not in GIMP and - are just wasting our time, because they directly hack through core - GIMP code, yet without being a full-fledged GIMP process). - - DMG package background now uses the splash image for more consistent - and fancier designs at each minor or major release. - - Updated scripts to generate both the DMG background and the Windows - Installer side images from the splash image, using a metadata file, - along with instructions towards artists so that they have the - ability to choose the explicit crop positions and dimensions. - - Third-party binary plug-ins are now supported in AppImage (if - compiled against the same Debian binaries used for building the - AppImage). - - From GIMP 3.2, the Snap package will be able to migrate config - folders from non-Snap older GIMP, and will store its own config - outside the sandbox too, from now on. - - Add limited global menu support for Flatpak. This requires setting - GIMP_GTK_MENUBAR environment variable. - - -Overview of Changes from GIMP 3.2.0 RC1 to GIMP 3.2.0 RC2 -========================================================= - -Core: - - - Historical restriction preventing saving and exporting when no - drawables are selected has been removed as moot. Our export API (and - therefore export plug-ins) does not have such requirements anymore - (and plug-ins are able to query the selected layers or channels if - necessary). - - SVG exporting now uses opaque path IDs for the 'id' attribute, and - not the GUI-visible path name anymore, to match the SVG specs. The - path ID has a limited character set and is not meant to be - human-readable. - - Clipboard brush and pattern max size limit bumped to 8192 on 64-bit - (and stays 1024 on 32-bit architecture). - - Path importing from SVG was updated to a copy of the latest C-based - librsvg code, making it much more robust. - - Proper textual warnings are added when trying to merge filters which - cannot be merged. - - Initial font loading was greatly sped up (not validating them - through harfbuzz or freetype anymore, but checking the first bytes - of every font file; a bit less robust but much faster). - - A few safety checks were added when creating new link layers and - when loading XCF files with link layers to prevent infinite loops - with cycling links. - -Tools: - - - MyPaint Brushes: stylus barrel rotation is now supported, when - relevant to the specific brush selected. - - Paint Select (Playground): - * Processing only happens at button release. - * More events are processed. - * Do not process the graph when all events are inside selection when - adding to selection, or outside selection when removing from - selection. - * Improved local region computation. - * Add progression feedback (relies on a patch on libmaxflow, waiting - for review). - * Reset the scribbles at every stroke. - * Use the same mode box widgets as other selection tools. - -Graphical User Interface: - - - Define headerbar button colors to ensure they match our theme style. - - Add more spacing between buttons in default CSS. - - Keyboard shortcut dialog hint improved (broke string freeze). - - New splash image. - -Plug-Ins: - - - Vulnerabilities fixed: ZDI-CAN-28311, ZDI-CAN-28273, ZDI-CAN-28158. - - PSD: legacy PSD Outer Glow layer style now imported (it uses - gegl:dropshadow with certain preset values to replicate the - Photoshop filter). - - PS/EPS: default export unit is set to millimiter instead of inch. - -API: - - - libgimpbase: - * gimp_directory() will now return the correct path of the - virtualized config directory on MSIX. - -CLI: - - - Added a Bash completion file our our command line interfaces. - - CLI option --show-debug-menu is not hidden anymore from the --help - output. I don't see a good reason to hide this option, except for - making it hardly discoverable. It is enough for the debug menu to be - hidden from the GUI by default and good that CLI options show a way - to bypass this for advanced users and contributors. - -Build: - - - Package maintainership instructions were moved to the developer - website. - - Various fixes regarding versioning and RC status on several - packages, to handle name clashes and inconsistencies. - - Add the ability to localize strings at build time as a build - requirement. Technically it implies for us that the build system is - set to a locale other than C or POSIX, or that the en_US.UTF-8 is - installed on the system. This was causing our list of language not - to be properly self-localized in Preferences. - - Current scheduled MSVC jobs will build GEGL without ctx until proper - fixes are made to make it buildable for this platform. - - Our C++ standard is now ISO C++ 14 (instead of GNU C++ 14) to make - GIMP compile with clang-cl (wrapper to MSVC) on Windows. - - Add support to MSVC's resource compiler: this allows us to support - both rc.exe (MSVC) and windres.exe (GNU). - - GIMP was made to be compilable on both GNU compilers and MSVC. - - Automate verification of Windows signature certificate and MSIX - secret. - - Minimum requirement updates: babl 0.1.118 and GEGL 0.4.66. - - AppImage is now using fully relocatable babl and GEGL. - - AppImages and Windows official builds will now always ship the debug - binaries for the hidden debug menu (which can be un-hidden with - --show-debug-menu CLI option). - - -Overview of Changes from GIMP 3.1.4 to GIMP 3.2.0 RC1 -===================================================== - -Core: - - - macOS: "Quit" from the dock's right-click menu will now follow our - standard Quit procedure, by intercepting the - applicationShouldTerminate signal, instead of forcing the - application to close (hence losing unsaved changes). - - "Add Layer Mask" will now have an "Edit mask immediately" checkbox - allowing to decide whether to go into Edit Mask state or not. This - setting is saved across repetitive actions, as all other settings in - this dialog. - - Filters on pass-through group layers will no longer be limited to - its children layers' bounding box, but to the actual bounding box, - which includes all lower layers. This also implies that empty - pass-through group layers can have an effect which will work like - "adjustment layers" in other software. Masks bounding box on empty - pass-through groups should also be the size of the group's render. - - New actions "layers-rasterize" and "layers-revert-rasterize" to - respectively rasterize and un-rasterize text, link or vector layers - (rasterizing these layers is now always revertable, though any - painting edit done after the rasterization is obviously lost). - - Actions "layers-link-discard", "layers-vector-discard" and - "layers-text-discard" have been removed. Only the latter existed in - previous stable versions so any custom shortcut associated to - "layers-text-discard" will be migrated as shortcut of - "layers-rasterize". - - When the GUI binary is run with --no-interface (-i) CLI option, we - branch on the same codebase as gimp-console. Therefore even though - this GUI binary still links with GTK, it won't run any GTK code and - can therefore be run on headless servers. - - Action "layers-vector-fill-stroke" removed (only available since - 3.1.4, not in any stable release). - - Non-destructive filters on quick mask are merged (onto the selection - channel) when exiting the quick mask mode. - - Vector layers are now properly auto-renamed when changing their - associated path (unless the layer was explicitely named). - - It is not possible to "Merge Down" onto a pass-through layer group - anymore. - - "Merge Layer Groups" cannot be applied to pass-through groups - anymore. - - Multi-selection implemented in Document history in order to load or - remove multiple images at once. - - New "tools-swap" action (default shortcut: Shift-X) to activate the - previously used tool. - - When committing or canceling filters, GIMP will automatically swap - back to the previously used tool. - - Windows: standard output and error output are now properly - redirected to the parent console in native shells, just like on - Linux or macOS. As a consequence build option -Dwin32-debug-console - has been removed. Ctrl-C is properly handled too, and output - contains colors. - - Paths attached to a vector layer cannot be deleted or merged anymore. - - Text layer rendering has been made much more robust, even when with - very big dimensions. - - GIMP on Windows is now able to detect if it is being run from either - console or shortcut, and use the python.exe interpreter in the - former case, or pythonw.exe in latter case (silent output). - - Fixed vulnerability: ZDI-CAN-28376 (XCF loading). - -Tools: - - - All tools drawing directly on layers are now blocked when a text, - link or vector layer is selected. An error message will suggest you - rasterize these layers explicitly first, in order to be able to do - any "destructive" action. - - Text tool: - * Dialog when trying to edit a rasterized layer text has been reworded. - * Support pasting unformatted text with action text-tool-paste-unformatted - (shortcut Ctrl|Primary-Shift-v by default). - * On-Canvas style editor now has a move area allowing to move the - GUI on a different position on canvas. This position is remembered - per-text layer. When the position has been manually set, a reset - button will also appear in the on-canvas editor (allowing to get - back to default positionning). - - Path tool: - * Selecting a vector layer when the Path tool is active will pop a - dialog up, similar to the one which we have in Text tool when a - text layer is picked. - * Improved logic for the creation and selection of vector layers and - paths when the tool is active. - * Double clicking a vector layer would activate the Path tool on it. - The setting to change the path is moved to the layer options - dialog. - - Transform tools are not initialized anymore when they are selected - after an automatic tool swap (when a filter tool is committed or - canceled; cf. Core section). - -Graphical User Interface: - - - "Rasterize" and "Revert Rasterize" menu items added to Layer menu - when the selected layer is a text, link or vector layer. - - The GimpColorHexEntry will now update the chosen color as you type. - - Use a standard, yet extended, AppMenu on macOS. - - Advertize the menu path to "Rasterize" items in error messages when - trying to edit a rasterizable drawable. - - Dragging a file to the image tab bar opens the file as a new image. - - Additionally to status error messages, the layer blocking a "Merge - Down" is now blinked on the Layers dialog to draw attention. - - GimpViewableDialog header icon and view will now scale based on user - custom icon size. - - Color history colors can now be dragged and dropped, to fill or set - colors as expected, as any other color area widgets. - - It is now possible to select different objects with the same name - when listed in a GimpContainerEntry (typically, 2 fonts named the - same, when you are trying to select one of them in the font entry of - Text tool options or of the on-canvas GUI; this was already working - in the Fonts dockable, but not in the container entries). - - We can now properly blink paths in the Paths dockable too (it used - to only work for layers and channels). This will be used for - actions, to raise awareness to reasons why an action cannot be - executed. - -Plug-Ins: - - - file-compressor: add zip decompression support. This allows support - for loading .hgt.zip files, as well as other formats compressed with - zip. - - SVG: initial export support, including support for vector, text and - link layers natively. Raster layers and masks are optionally - embedded as either PNG or JPEG base64-encoded data. - - Gimpressionist: edit button labels to more appropriate wording. - - PDF: - * supporting for exporting vector layers as paths. - * background fill is set on all pages for multi-page PDFs. - - PVR textures: new import support. - - Replacing scale entries by spin scale widgets in various plug-ins. - - Animation Playback and ImageMap plug-ins can now be closed with - Escape like other plug-ins. - - Fixed vulnerability: ZDI-CAN-28248 (JP2 image loading). - -API: - - - libgimpbase: - + New enum types: - * GimpTextOutline - * GimpTextOutlineDirection - + Deprecated functions: - * gimp_pixpipe_params_init - * gimp_pixpipe_params_parse - * gimp_pixpipe_params_build - * gimp_pixpipe_params_free - - libgimpcolor: - + New functions: - * gimp_cairo_surface_get_buffer - + Deprecated functions: - * gimp_cairo_surface_create_buffer - - libgimpwidgets: - + New macros: - * GIMP_ICON_LAYER_LINK_LAYER - * GIMP_ICON_LAYER_VECTOR_LAYER - + GimpBrowser search entry ported to GtkSearchEntry. - + GimpLabelEntry accepts a NULL value and will convert it to empty - string. - + gimp_widget_free_native_handle() implementation improved and docs - updated with important information on how to use it (disregarding - the new information, crashes on Wayland may happen). - - libgimp: - + New functions: - * gimp_vector_layer_get_enable_fill - * gimp_vector_layer_get_enable_stroke - * gimp_vector_layer_get_fill_color - * gimp_vector_layer_get_fill_pattern - * gimp_vector_layer_get_path - * gimp_vector_layer_get_stroke_cap_style - * gimp_vector_layer_get_stroke_color - * gimp_vector_layer_get_stroke_pattern - * gimp_vector_layer_get_stroke_dash_offset - * gimp_vector_layer_get_stroke_dash_pattern - * gimp_vector_layer_get_stroke_join_style - * gimp_vector_layer_get_stroke_miter_limit - * gimp_vector_layer_get_stroke_width - * gimp_vector_layer_get_stroke_width_unit - * gimp_vector_layer_set_enable_fill - * gimp_vector_layer_set_enable_stroke - * gimp_vector_layer_set_fill_color - * gimp_vector_layer_set_stroke_cap_style - * gimp_vector_layer_set_stroke_color - * gimp_vector_layer_set_stroke_dash_offset - * gimp_vector_layer_set_stroke_dash_pattern - * gimp_vector_layer_set_stroke_join_style - * gimp_vector_layer_set_stroke_miter_limit - * gimp_vector_layer_set_stroke_width - * gimp_vector_layer_set_stroke_width_unit - * gimp_item_is_vector_layer - * gimp_item_id_is_link_layer - * gimp_item_is_link_layer - * gimp_link_layer_get_by_id - * gimp_link_layer_get_file - * gimp_link_layer_get_type - * gimp_link_layer_new - * gimp_link_layer_set_file - * gimp_param_link_layer_get_type - * gimp_param_spec_link_layer - * gimp_procedure_add_link_layer_argument - * gimp_procedure_add_link_layer_aux_argument - * gimp_procedure_add_link_layer_return_value - * gimp_link_layer_get_mime_type - * gimp_text_layer_get_outline - * gimp_text_layer_get_outline_antialias - * gimp_text_layer_get_outline_cap_style - * gimp_text_layer_get_outline_color - * gimp_text_layer_get_outline_dash_offset - * gimp_text_layer_get_outline_direction - * gimp_text_layer_get_outline_join_style - * gimp_text_layer_get_outline_miter_limit - * gimp_text_layer_get_outline_width - * gimp_text_layer_set_outline - * gimp_text_layer_set_outline_antialias - * gimp_text_layer_set_outline_cap_style - * gimp_text_layer_set_outline_color - * gimp_text_layer_set_outline_dash_offset - * gimp_text_layer_set_outline_direction - * gimp_text_layer_set_outline_join_style - * gimp_text_layer_set_outline_miter_limit - * gimp_text_layer_set_outline_width - * gimp_param_rasterizable_get_type - * gimp_param_spec_rasterizable - * gimp_rasterizable_get_type - * gimp_rasterizable_is_rasterized - * gimp_rasterizable_rasterize - * gimp_rasterizable_restore - * gimp_file_procedure_get_meta - * gimp_file_procedure_set_meta - * gimp_images_close_popup - * gimp_images_popup - * gimp_images_set_popup - * gimp_items_close_popup - * gimp_items_popup - * gimp_items_set_popup - + Deprecated functions: - * gimp_drawables_close_popup - * gimp_drawables_popup - * gimp_drawables_set_popup - + Removed functions: - * gimp_vector_layer_discard (since 3.1.4, but never in a stable - release). - + New classes: - * GimpLinkLayer - + New interfaces: - * GimpRasterizable: GimpLinkLayer, GimpTextLayer and - GimpVectorLayer now implement this interface. - + gimp_item_is_is_text_layer() will now always return TRUE for a - layer which is a text layer in backend, even if it has been - rasterized. It used not to, probably because the "Discard Text - Information" was not reversible (except by undoing), whereas now - we can "Revert Rasterize". Instead you should use - gimp_rasterizable_is_rasterized() to determine whether to consider - a GimpTextLayer as a raster layer or as a text layer. - + gimp_file_load() as well as the image returned by a - GimpLoadProcedure are now always returned as "clean" and with - empty undo stack. - + gimp_drawable_get_thumbnail_data() and - gimp_drawable_get_sub_thumbnail_data() implementations updated to - always return sRGB(A) 8-bit. - - libgimpui: - + New functions: - * gimp_image_chooser_get_image - * gimp_image_chooser_get_label - * gimp_image_chooser_get_type - * gimp_image_chooser_new - * gimp_image_chooser_set_image - * gimp_prop_image_chooser_new - * gimp_item_chooser_get_item - * gimp_item_chooser_get_label - * gimp_item_chooser_get_type - * gimp_item_chooser_new - * gimp_item_chooser_set_item - * gimp_prop_item_chooser_new - + New classes: - * GimpImageChooser - * GimpItemChooser - + Deprecated Classes: - * GimpDrawableChooser - -Metadata: - - - Making GIMP's project vision clearer in metadata description. - -Build: - - - Depends on babl 0.1.116 and GEGL 0.4.64. - - The stable Snap package (on Snap Store) has been officially passed - over to the GIMP team. - - Cleanup done in devel-docs/ with more developer documentation moved - over to the developer website. - - Build option -Dwin32-debug-console removed (cf. Core section). - - Windows builds: GEGL is not built anymore with Matting Levin because - it is highly unstable (crashes) on this OS. - - Flatpak nightly builds will now show the correct version on `flatpak - list`. - - Our .exe installer will now have a dark mode (with Inno Setup 6.6.0). - - -Overview of Changes from GIMP 3.1.2 to GIMP 3.1.4 +Overview of Changes from GIMP 3.2.0 to GIMP 3.2.2 ================================================= Core: - - About dialog now shows "Up to date as of " text for more - clarity. - - Fixed config migration when updating to GIMP 3.1/2. - - Reorganizing layer search code into generic item tree view search - code for further reusing into other use cases. - - Internal classes, config items and actions renamed from "vectors" to - "path". - - Some cleanup of outdated disabled unit tests and other warnings. - - Restructuration of internal GimpControllerManager and - GimpContainerView API. - - GimpContainerListView now uses a GtkListBox. A Playground switch was - added to use the new widgets in all views that can be switched - between list and grid view (brushes, patterns etc.). This won't - likely get out of Playground before GIMP 4 because it is far too - slow right now (and apparently we'll need GTK4 for making it fast as - our current lists). - - Various code have been moving away from GtkTreeView and some new - internal classes were added as a preparation for GTK4 port. - - GEX format updated to use standard instead of - per update in the AppStream specs in the last few years. This - doesn't make any compatibility issue since this format is purely - internal only for now, not public. - - New setting "Update metadata automatically" in Preferences > Image - Import & Export > Export Policies. When enabled, add and update - metadata automatically. When disabled, only the minimum necessary - metadata changes are made, without changing modification date, - synchronizing tags, or updating the software and change history - metadata. This new setting is enabled by default. - - Fix palette import to properly import colors with alpha values from - palettes. - - New layer types: - * vector layers - * link layers - - Fill/Stroke editor are now live-previewing color changes for vector - layer fill/stroke and text layer outlines. - -Tools: - - - MyPaint brush tool was ported to the newer MyPaintSurface2 API. A - consequence is that we now depend on mypaint-brushes-2.0 instead of - mypaint-brushes-1.0. - - Seamless Clone (Playground): made to work again, but is still too - slow to move out of Playground. - - The Paths tool has updated UI to create vector layers. - - Text tool: bold, italic and underline can now be applied with - commonly used shortcuts (Ctrl+b, i and u respectively). - - Vector and Link layers cannot be painted on, and filters cannot be - merged on them. They now need to be explicitly downgraded to raster - layers. + - We removed support for a separate folder for loading 32-bit binaries + on 64-bit Windows. This was being used for core plug-ins for the + TWAIN plug-in only. Graphical User Interface: - - More consistent capitalization across text in UI. - - Use system colors on Windows title bar when System colors theme is - set. - - Make the comment text area sensitive in Export procedure dialogs - depending on whether "Save Comment" checkbox is checked or not. - - In various GUI using a GtkStack (Input Controller dialogue, - Preferences dialogue, and Welcome dialogue), we now turn off - animations when it is set OFF system-wide. - - "System" color scheme now also works on macOS. - - GimpSpinScale cursors now changed to "pointer" when hovering the - slider area and "col-resize" when actually grabbing the cursor. - - The Welcome dialog will now recognize your standard shortcuts to - create a new file, open a file or open one of the 10 most recent - files. + - Theme fixes. Plug-Ins: - - TIFF - Add support for the following features, based on unofficial - documentation and user-provided sample files: - * Sets the selected layer based on the image-level metadata. - * Sets the visibility of the background layer based on the image - level metadata. - * Sets the blend mode and color tag of each layer, based on extended - layer-level metadata. Legacy blend modes are used, based on - user feedback and comparison with Sketchbook. - * Creates group layers and stores layers in them. Layers are read from - top to bottom, and layer groups are added and filled based on layer - level metadata. - - Animation Playback was redesigned to more closely resemble standard - playback UIs. The redesign also changes the progress bar to a - GtkScale, so users can more easily move to different frames on the - timeline. - - New GEGL Filter Browser plug-in to list and inspect all available - filters for development purpose. - - New import support: - * PAA textures: initial import support (includes RGBA 4444, 5551, - 8888, and Grayscale with Alpha channel. It does not yet cover DXT1 - - 5 texture import support). - * Seattle Filmworks photos (earliest format SFW93A, and the most - common format SFW94A). Both formats are essentially mangled JPEGs, - though mangled in different ways. - * HRZ Slow Scan Television Images (restored, as it used to be - implemented and removed in 2004). - - Raw Image data plug-in dialog redesigned to be on a two-column - layout to avoid over-high dialog. - - Print: in sandboxed environments (Flatpak, Snap), the print Settings - are now displayed as a second dialog after the portal print dialog. - This 2-step workflow is a work-around to the inability to tweak the - print dialog when the print portal is in use. - -API: - - - GimpTRCType enum type made available in libgimp and PDB. - - gimp-file-save properly sets associated save or exported files. - - New PDB/libgimp functions: - * gimp_drawable_filter_operation_get_available() - * gimp_drawable_filter_operation_get_details() - * gimp_drawable_filter_operation_get_pspecs() - * gimp_context_get_paint_fade_length() - * gimp_context_get_paint_fade_repeat() - * gimp_context_set_paint_fade_length() - * gimp_context_set_paint_fade_repeat() - * gimp_item_id_is_vector_layer() - * gimp_param_spec_vector_layer() - * gimp_procedure_add_vector_layer_argument() - * gimp_procedure_add_vector_layer_aux_argument() - * gimp_procedure_add_vector_layer_return_value() - * gimp_vector_layer_discard() - * gimp_vector_layer_get_by_id() - * gimp_vector_layer_new() - * gimp_vector_layer_refresh() - - GimpSizeEntry (libgimpwidget) can now parse mathematical expressions - in their reference value spin buttons too. - - GimpColorScales (libgimpwidget) will now set its decimals to 0 when - creating u8 RGB color selectors. This change will help further - distinguish between the 0...00 and 0..255 views in the Color - Selectors. It will also better convey to users that u8 is an integer - value rather than a floating point. - - Favor existing image comment instead of always loading comment from - metadata. - - Improve handling of comment metadata with - "charset=[ascii|InvalidCharsetId]" prefixes. - - New GIMP_METADATA_SAVE_UPDATE value in enum type - GimpMetadataSaveFlags (libgimpbase). - - Modernize setting "Exif.Image.DateTime" metadata by setting the - timezone additionally. + - Tile: carry over the source image's profile to the newly created + image. Build: - - Add nightly Snap package. - - Add nightly Aarch64 flatpak. - - appstream-glib dependency replaced with libappstream - - Installer uses latest InnoSetup now. - - New configure option -Dwin-debugging allowing to choose DWARF debug - symbols on Windows instead of the native (CodeView) symbols. This - will be useful for people wishing to debug with GDB in particular. - - -Overview of Changes from GIMP 3.0.4 to GIMP 3.1.2 -================================================= - -Core: - - - Layer mask created from layer's alpha when there is no alpha - channel is now a fully opaque mask. - - Major non-destructive filter code refactoring. - - Lock Content now generates undo steps. - - NDE filters are now allowed on channels. - - Merging filter will now add an alpha channel to a layer if required. - - Refactoring Photoshop stream loading functions. - - Loading Photoshop RGB and grayscale patterns (.pat, unfortunately - the same extension as our own pattern format) now supported. - - The histogram editor now shows a "Compute unique colors:" checkbox - which will display the unique color count in the image. - - Deleting current palette entry now selects the next entry in the - palette. - - New paint mode: Overwrite. Note that this mode is only available for - paint tools right now (in particular not for layers, neither in - filters). - -Graphical User Interface: - - - Brushes and Fonts dockables: new "Use theme colors for preview" - toggle button. - - The Palettes and Palette Editor dockables, and the Palette tab in - FB/BG Color dockable, also follow theme colors for grid display. - - New "System" color scheme which will follow the system's color - scheme setting (on Unix-like systems when XDG Settings portal is - installed and on Windows). - -Tools: - - - Curves tool: Photoshop curves file format (.acv) can now be loaded. - - Levels tool: Photoshop levels file format (.alv) can now be loaded. - - Text tool: new "Outline Direction" settings. - -Plug-Ins: - - - Jigsaw: the plug-in now draws on transparent layers too. - - Playstation TIM images now supported (import/export). - - Palettes can now be exported as Krita .kpl palette. - - Over The Air Bitmap (Nokia mobile image format) now supported for - import. - - PSD: - * legacy Drop Shadow layer style is now imported on loading. - * legacy Inner Shadow layer style is now imported on loading. - - file-raw: new support for ART (Another RawTherapee, fork of the - latter) as a RAW loader. - - OpenEXR: support for importing multi-layer OpenEXR images. - - JPEG 2000: export support added. - - APNG: initial import support. - - JIF: new import support for Jeff's Image Format. - - ORA: support the extensions storing layer's "pixel locked" and - "selected" status on import and export. - - Script-Fu: new function (script-fu-register-i18n) for setting up - localization of Script-Fu plug-ins. - - HEIF: - * new AVCI import support (requires libheif 1.19.6 with OpenH264 - decoder enabled); - * new HEJ2 export support (requires libheif 1.19.8 with OpenJPEG - support). - - New export support for PSB. - -Modules: - - - CMYK selector: Total Ink Coverage (total percentage of ink that - would be needed to print a particular color) information is now - shown. - -API: - - - Changes in libgimpwidgets: - * New functions: - + gimp_prop_toggle_new() - - Changes in libgimpui: - * New functions: - + gimp_procedure_dialog_get_coordinates() - * gimp_procedure_dialog_get_widget() will now generate a radio frame - widget for GimpChoice arguments of 2 choices only (and will still - default to a combo box for larger choices list). - -PDB: - - - none_ok tag now allowed on sample_point and guide PDB types. - -Build: - - - File format associations list now generated by the build system for - Windows and OSes using the Desktop file. - - Flatpak: verify nightly flatpak dependencies with the - flatpak-external-data-checker (like we do for stable and beta - flatpaks). - - Various non-portable scripts were ported to be properly - POSIX-compliant and to allow native builds on all OS (e.g. Windows). - - Some soft checks were also added to the build system to prevent - re-introduction of non-portable code. - - -Overview of Changes from GIMP 3.0.2 to GIMP 3.0.4 -================================================= - -Core: - - - Make maximum radius for generated brushes consistent across - codebase. - - Use NDE filter name for undo history. - - Module loading improved to be better cross-platform (in particular - on macOS both .so and .dylib modules are supported). - - Code compliant with GCC 15 (C23). - - Filter size updated when its drawable is rotated. - - Font loading (at startup) optimized. - - Set the proper program name for KDE/Wayland to map the process to - the correct desktop file. - - "windows-display-*" are hidden from the Shortcuts dialog (they are - not meant to be remapped). - - Editing non-destructive effects now triggers undo steps. - - When migrating from GIMP 2.x to GIMP 3, shortcuts for actions - "edit-paste-as-new-layer*" are now converted to "edit-paste-merged*" - (and not "edit-paste*" anymore which was confusing and - counter-productive). - -Graphical User Interface: - - - Highlight selected device in GimpDeviceStatus. - - Various theme leak fixes. - - UX improvement: GimpViewableDialog (e.g. Fill/Stroke path and more) - now has "OK" as default response. - - Icon size settings now also applying to Move and Transform icon - boxes. - - Commit hash is now shown in About dialog in all non-release builds - (i.e. even in stable series, when we are in-between releases). - - Hide Force slider for Pencil Tool (rather than just making it - insensitive). - - Define merged titlebar icon colors. - - Keep menubar color consistent when out of focus. - - We don't show Fx icon for tool-based filters. - - Updated splash without micro version in it. - - Removed size restrictions on Display Filters. - - Don't show hidden tools on toolbox tooltips. - - Fix "Keep above" Window Manager hint. - - Multi-Window mode on Windows: dock windows' title bars now adapt to - the Windows system theme colors too. - - Show palette name in Palette Color Selector. - -Tools: - - - MyPaint Brush: have consistent options layout compared to other - paint tools. - - Scissors Select Tool: close the curve on Enter, similar to the Path - tool. - - Path Tool: connect path on click in design mode. - -Plug-ins: - - - Restore GUI to Difference Clouds script. This had been lost since - GIMP 2.8! - - Fixes in various file format support, such as: DDS, SVG, TIFF, PSD, - BMP, ICO… - - Screenshot dropdowns replaced by radio buttons, as part of a new UX - decision that choice settings with 2 or 3 choices should be dropdown - (faster 1-click access), unless there are a lot more settings making - the dialog too crowded already. - -PDB: - - - Make "gimp-plug-ins-query" public again (yet still not available in - libgimp). - -Build: - - - Windows Installer: - * Make the installer aware of Install, Reinstall and Update modes. - * Add Repair mode to Windows installer: in particular we can now fix - installations when the previous install directory cannot be - accessed anymore. - * The feature to delete the config folder on Windows uninstall will - now make a backup on the Desktop first (allowing people to delete - it themselves, move it, or even restore it later if needed). - * Uninstalling while GIMP is running is made impossible (among other - issues, it was causing partial uninstallation). - * Downgrading is only possible by uninstalling first. - * Development warning is shown in dev build of stable series too. - * Add fractional scaling support to Installer welcome image. - * Restore points now have a timeout to prevent stuckness. - - Our AppImage won't ship debug symbols anymore. Better debugging can - be set with: export DEBUGINFOD_URLS="https://debuginfod.debian.net" - - Windows builds: - * Ship babl/GEGL and libgimp headers, static libs and pkg-config - files for plug-in developers. - * Dedicated file icon for XCF files. - * Generate native .pdb CodeView symbols on Windows (smaller debug - data files, usable by MSIX and better debugging ability), except - on x86 (32-bit). - - Crossbuilds are dropped from CI. - - Shell scripts used in the meson build are ported to Python (more - portable and much faster on some platforms, in particular Windows). - - Some build scripts were moved around for reorganization. - - Depency requirement bumped: - * babl 0.1.114 - * GEGL 0.4.62 - - New "Inputs" feature for simpler Gitlab pipelines running. - - Some in-repository documentation was cleaned up. - - -Overview of Changes from GIMP 3.0.0 to GIMP 3.0.2 -================================================= - -This is a bug-fix only release. - -Core: - - - Mark some strings translatable. - - Fix crash when choosing a brush in grid view. - - Windows: temporary revert of some Input Device handling code which - was breaking pressure sensitivity for some graphics tablets (though - this revert may make issues with the eraser tip). - - Fix crash when choosing a non-existing font in text tool options. - -Tools: - - - Reorder Line Art Detection options per design decision. - -Graphical User Interface: - - - Keep headerbar color consistent when out of focus. - - Histogram uses the luminance value of the foreground color as a - threshold to lighten or darken the border color for contrast with - the histogram itself. - - Improve separation between panels in dark theme. - - Add default response for GimpQueryBox dialogues. - - Spacing between toolbox widgets improved. - - GimpSpinScale slider colors inverted. - - New icons: "gimp-toggle-on" and "gimp-toggle-off" and using them in - the Search Action's list as icons for toggle actions. - -Plug-ins: - - - Python Console uses the luminance of the background color for error - text. - - Metadata Editor: fix buffer overflow. - - Gradient Flare: fix crash when setting the size to 0. - - Screenshot: X11 implementation is bypassed (in favor of portals) - when running on XWayland. - -Build: - - - Various packaging fixes and cleanup. - - The Windows installer now prompts (only in user installation) about - deleting GIMP config files when uninstalling. - - GEGL 0.4.58 is now our minimum requirement. - - Windows installer: create Restore Point on system-wide install. + - NM environment variable is now used in priority for the `nm` tool + used for the build. This check is stored from configure-time + environment. + - Windows x86 32-bit pipeline has now been decommissioned from our CI. + This implies that 32-bit builds won't be available anymore in our + Windows installer, just as was already the case on the Windows Store. + - Meson build: + * New boolean option -Dtwain-unmaintained: this puts our TWAIN + plug-in behind a disabled-by-default flag, because this plug-in + only made sense in 32-bit. The next step will be to replace it by + a WIA plug-in. + * Option -Dwin32-32bits-dll-folder removed. diff --git a/NEWS.pre-3-2 b/NEWS.pre-3-2 new file mode 100644 index 0000000000..368e150ba0 --- /dev/null +++ b/NEWS.pre-3-2 @@ -0,0 +1,1128 @@ + ------------------------------ + GNU Image Manipulation Program + Development Branch + ------------------------------ + +This is the development branch of GIMP. + + +Overview of Changes from GIMP 3.2.0 RC3 to GIMP 3.2.0 +===================================================== + +Core: + + - Operation "gimp:curves" set to Perceptual "trc" by default. The + "linear" (unused, and only kept for compatibility) arg has been + removed since the op could not have been used during 3.0 series. + - Levels dialog now initializes to Perceptual (even though the + "gimp:levels" op still defaults to Linear "trc", for + backward-compatibility reasons). + - Improve clipboard shutdown on Windows (speeds up shutdown). + - Dragging a color or pattern on a vector layer in the Layers dock + will set its fill instead of rasterizing it (a similar flow had been + implemented in RC3, but it was working when dragging on canvas + only). + +Tools: + + - Text tool: make sure the on-canvas UI is always fully visible on + canvas. + - Selection tools: fix ordering of selection modes in tool options. + +Graphical User Interface: + + - Further theme fixes (in particular in the Python console). + - Individual per-project save buttons in the Quit dialog are now sized + according to the theme. + +Plug-Ins: + + - Screenshot: when "Include mouse pointer" is checked on Windows, + it used to show a generic cursor rather than the actual currently + used one. We now show the correct cursor. + - Fixed ZDI-CAN-28813 vulnerability in ANI loading. + - Fixed ZDI-CAN-28901 vulnerability in XPM loading. + - Fixed ZDI-CAN-28807 vulnerability in PSD loading. + - Fixed ZDI-CAN-28874 vulnerability in PSP loading. + - Fixed ZDI-CAN-28405 vulnerability in IFF loading. + - Fixed ZDI-CAN-28863 vulnerability in JPEG 2000 loading. + - Filters Browser: now shows default value for enum and GimpChoice + arguments of filters. + - JPEG: + * the color profile is now always stored in JPEG files exported as + CMYK. + * DCT options are shown again as a combo box (instead of a radio + frame), just like they were during the 2.10 series. + * fix loading of photoshop path split across multiple segments. + - TIFF: only show the "Show reduced images" toggle when there are + actually several images in the file. + - PSD: various fixes on loading code. + +API: + + - libgimp/PDB: gimp_image_convert_color_profile() allows a NULL + profile, which will convert the image to a built-in profile, as was + already documented (yet not properly implemented). + - libgimpwidgets: GimpUnitComboBox better interacting with pointer + events. + +Translations: + + - New Kazakh translation of the Windows installer, as well as for + Python and Script-Fu plug-ins, tags and tips. + +Build: + + - The Snap package will now migrate from ~/snap/ if the 3.0 folder is + not found in XDG config home, similarly to what we do for Flatpak. + - Our in-house macOS builds now uses macOS 26 to generate Liquid Glass + icons. + - The RC2 splash image was chosen as final GIMP 3.2.0 splash. + - DMG packages for macOS are now properly built as relocatable. + - Building GIMP is now fully reproducible. + - More work done on the in-house macOS pipeline (i.e. in our Gitlab + instance, triggered by the main repository, not our more ancient + external pipeline), especially regarding x86_64 DMG support (the + Silicon builds are already working fine). + + +Overview of Changes from GIMP 3.2.0 RC2 to GIMP 3.2.0 RC3 +========================================================= + +Core: + + - In a Flatpak sandbox, GIMP will now show the native config directory + path in relevant places. + - XCF files can now only be loaded when all fonts have been loaded. + Font loading happens as a background task and can continue even + after the GUI is present and usable (for people with a lot of + fonts). When they try to load image files in such a case now, the + loading will be delayed (this also includes files loaded from + command line, or from a file browser starting GIMP). + - Default to 'quartz' IM on macOS for emoji keyboard support. + - When dropping a color or pattern on canvas when a vector layer is + selected, their "fill" property is updated accordingly. + - Link layers are now protected against color and pattern drops. + - macOS logo was updated to cater to new guidelines since macOS 26 + (following previous guidelines, the logo was appearing too small on + latest macOS). + - Not all color buttons should be fully image-contextual, in + particular for indexed images. E.g. filter color buttons should + usually not be limited to the palette's colors. Nor should the + out-of-gamut or grid colors, etc. + - When merging all filters on a drawable, the inactive filters are + ignored (and therefore are kept as-is, instead of being removed). + - Sample Points mode is carried over on duplicated images (not only + their position). + - Procreate swatches (.swatches) can now be imported as palettes. + - Flipping link layers don't rasterize them anymore. + - Code forbidding some operations from being used non-destructively is + now a bit more robust. + - Better support for filter's area updates. + - In the Input Devices window, we now dropped the list of axis. + Changing an axis use has not really worked for years, and this list + was mostly confusing. Also it seems like it was not even shown + anymore on some platforms in the 3.0 series. + On the other hand, we now always show the Pressure Curve for any + device of type "Pen". We don't try anymore to be clever and detect + if the pen really has a pressure axis. As it turns out, such + heuristic was quite fragile and not working in some cases. + - Some work started on some file dialogs to use API more compatible + with native file dialogs, hence preparing the field for this port in + the next minor series. + +Tools: + + - Flip tool: up/down and left/right keys can now be used to flip items + respectively vertically or horizontally. + - Crop tool: the tool now adds an alpha channel to a layer under the + following conditions: + 1) "Selected layers only" is checked + 2) "Allow growing" is checked + 3) "Fill with" is set to transparency + 4) The crop rectangle is larger than the width or height of the layer + 5) The layer does not already have an alpha channel. + - Shear tool: arrow keys support to adjust the shear: left/right move + the shear on the X axis, up/down move the shear on the Y axis. + By default, it moves one pixel at a time. If you hold shift (similar + to the move tool), it moves based on the slider's page increment + setting (factoring in the current zoom). + +Operations: + + - "gimp:curves" and "gimp:levels" now properly default to Linear. + Also the "linear" argument for both is now completely ignored in + favor of "trc". This doesn't break API compatibility because these + filters were broken enough that they were only run as linear until + now. As for XCF backward compatibility, the full argument list was + stored so existing XCF files will still load and render fine. + - Equalize: + * The filter now works again in non-linear space, just like it did + in GIMP 2.10. + * The "gimp:equalize" operation is now hidden from the API, because + it is not usable anyway (lack of GimpHistogram support in + libgimp/PDB) but also because the core implementation needs to be + changed before being able to behave properly in non-destructive + usage (the histogram would currently not re-compute itself with + source changes). + +Graphical User Interface: + + - Add conditional mask delete button on Layers dockable, shown when a + layer mask is selected. + - Reorder HLS to HSL in Hue Saturation GUI. + - The Navigation and Selection dockables are now properly colored + according to the theme (in particular, in dark mode, they won't show + huge bright areas when no images are opened). + - No outlines are shown anymore in the "Fx" column of item tree views. + - The Welcome dialog is not shown on start anymore if GIMP was started + by loading images. + - Histogram Editor pixels and count are now displayed in GSize range. + - New splash image for RC3. + - Make styling consistent for the NDE popover. + - Better wrapping and scrolling policy for the comment field of the + export dialog, preventing issues when other program add extra-long + comment to images. + - New style defined for GimpPivotSelector, so that it can be styled + through CSS. + - Canvas Size options in Preferences dialog reordered to match the + respective Canvas Size dialog. + - Hide move handle in Text Editor window (this is only meant for the + on-canvas text editor). + - Do not trigger tree view search unnecessarily in various widgets + where it is counter-productive. + - We will not show uninstalled languages anymore in Preferences > + Interface. This could happen when packagers are splitting language + modules into separate packages, or when configuring a Windows + installation not to install all languages. + +Command Line Interface: + + - Man page improved to up-to-date usage. + - CLI option --no-interface is now hidden on gimp-console usage. + +Plug-Ins: + + - Fixed vulnerability ZDI-CAN-28232 in PSP import. + - Fixed vulnerability ZDI-CAN-28599 in ICO import. + - Fixed vulnerability ZDI-CAN-28265 in XWD import. + - Fixed vulnerability ZDI-CAN-28530 in ICNS import. + - WebP lossless export made more efficient. + - JPEG2000 quality setting on export fixed. + - XMC export updated not to modify the source image. + - Curve Bend PDB procedure API is not bogus anymore. + - Gradient Flare files now support also Windows line ending. + - Background color restored in (script-fu-round-corners). + - DDS: + * Initial DDS BC7 export support. + * Retains original import settings of a DDS texture (such as + compression, number of mipmaps, and flags) through a parasite. + On export, we default the compression format to the original to + reduce the chance of choosing the wrong format for the game + they're creating the texture for. + The other data stored is not currently used. + - Various Python plug-ins were improved to properly work in headless + environments. + - Image Map dialog improved so that it doesn't show too wide. + - Script-Fu: libgimpui enum values are now also introspected, same as + libgimp enum values are. E.g. GIMP_ASPECT_SQUARE is ASPECT-SQUARE in + Script-Fu. + - EXR: Import YUV OpenEXR chroma channels as RGB. + +API: + + - libgimp/PDB: + + The following functions were deprecated, now recommending to + directly merge or append filters on drawables with the + GimpDrawableFilter API: + * gimp_drawable_brightness_contrast() in favor of filter + "gimp:brightness-contrast". + * gimp_drawable_color_balance() in favor of filter + "gimp:color-balance". + * gimp_drawable_colorize_hsl() in favor of filter + "gimp:colorize". + * gimp_drawable_extract_component() in favor of filter + "gegl:component-extract". + * gimp_drawable_desaturate() in favor of filter + "gimp:desaturate". + * gimp_drawable_hue_saturation() in favor of filter + "gimp:hue-saturation". + * gimp_drawable_invert() in favor of filters + "gegl:invert-linear" and "gegl:invert-gamma". + * gimp_drawable_levels() in favor of filter + "gimp:levels". + * gimp_drawable_shadows_highlights() in favor of filter + "gegl:shadows-highlights". + * gimp_drawable_posterize() in favor of filter + "gimp:posterize". + * gimp_drawable_threshold() in favor of filter + "gimp:threshold". + * gimp_drawable_curves_explicit() in favor of filter + "gimp:curves". + * gimp_drawable_curves_spline() in favor of filter + "gimp:curves". + + gimp_image_get_thumbnail() implementation updated to always return + sRGB(A) 8-bit data. + + New GimpCurve class and various API to create and configure a + curve. + - libgimpconfig: + + GimpConfig objects can now be given a XCF version to force the + serialization to use older formats. This is used for serializing + some parasites in XCF and keep them compatible with older GIMP + versions. + + New functions: + * gimp_config_get_xcf_version() + * gimp_config_set_xcf_version() + - libgimpwidgets: + + GIMP_ICON_TEXTURE ("gimp-texture") is not used anymore and is + planned for deletion in GIMP 4. + + GimpColorScales and GimpColorSelect made introspectable. + + gimp_widget_get_monitor() has now a Wayland implementation. + +Translations: + + - New Cornish translation of GIMP. + - Thai now has official support in InnoSetup (Windows installer's + generic strings). + +Build: + + - GIMP docs is now versioned on $DATADIR/doc/gimp-$APIVER (where + APIVER=3.0 right now). + - Drop Force32bitInstall option in Windows installer. + - Work has been started to move the macOS CI to our main Gitlab infra. + We now have macOS jobs in the CI, and these can be triggered in + merge requests with "Package:Macos Dmg" label. More work is needed + before it can become the source for our release packages though. + - The Flatpak package will now contain gimp-console as well. + - Add a configure test on macOS to ensure that harfbuzz was built with + libgraphite2 shaper. + - New -Ddmg boolean configure option to generate files needed for our + macOS DMGs. + - New -Dbash-completion configure option. + - CI: it is now possible to trigger packages from MR by writing + package labels in MR descriptions without having special access role + on Gitlab. + - Some older unit tests updated to run on real GIMP; other tests were + disabled because they keep getting bugs (which are not in GIMP and + are just wasting our time, because they directly hack through core + GIMP code, yet without being a full-fledged GIMP process). + - DMG package background now uses the splash image for more consistent + and fancier designs at each minor or major release. + - Updated scripts to generate both the DMG background and the Windows + Installer side images from the splash image, using a metadata file, + along with instructions towards artists so that they have the + ability to choose the explicit crop positions and dimensions. + - Third-party binary plug-ins are now supported in AppImage (if + compiled against the same Debian binaries used for building the + AppImage). + - From GIMP 3.2, the Snap package will be able to migrate config + folders from non-Snap older GIMP, and will store its own config + outside the sandbox too, from now on. + - Add limited global menu support for Flatpak. This requires setting + GIMP_GTK_MENUBAR environment variable. + + +Overview of Changes from GIMP 3.2.0 RC1 to GIMP 3.2.0 RC2 +========================================================= + +Core: + + - Historical restriction preventing saving and exporting when no + drawables are selected has been removed as moot. Our export API (and + therefore export plug-ins) does not have such requirements anymore + (and plug-ins are able to query the selected layers or channels if + necessary). + - SVG exporting now uses opaque path IDs for the 'id' attribute, and + not the GUI-visible path name anymore, to match the SVG specs. The + path ID has a limited character set and is not meant to be + human-readable. + - Clipboard brush and pattern max size limit bumped to 8192 on 64-bit + (and stays 1024 on 32-bit architecture). + - Path importing from SVG was updated to a copy of the latest C-based + librsvg code, making it much more robust. + - Proper textual warnings are added when trying to merge filters which + cannot be merged. + - Initial font loading was greatly sped up (not validating them + through harfbuzz or freetype anymore, but checking the first bytes + of every font file; a bit less robust but much faster). + - A few safety checks were added when creating new link layers and + when loading XCF files with link layers to prevent infinite loops + with cycling links. + +Tools: + + - MyPaint Brushes: stylus barrel rotation is now supported, when + relevant to the specific brush selected. + - Paint Select (Playground): + * Processing only happens at button release. + * More events are processed. + * Do not process the graph when all events are inside selection when + adding to selection, or outside selection when removing from + selection. + * Improved local region computation. + * Add progression feedback (relies on a patch on libmaxflow, waiting + for review). + * Reset the scribbles at every stroke. + * Use the same mode box widgets as other selection tools. + +Graphical User Interface: + + - Define headerbar button colors to ensure they match our theme style. + - Add more spacing between buttons in default CSS. + - Keyboard shortcut dialog hint improved (broke string freeze). + - New splash image. + +Plug-Ins: + + - Vulnerabilities fixed: ZDI-CAN-28311, ZDI-CAN-28273, ZDI-CAN-28158. + - PSD: legacy PSD Outer Glow layer style now imported (it uses + gegl:dropshadow with certain preset values to replicate the + Photoshop filter). + - PS/EPS: default export unit is set to millimiter instead of inch. + +API: + + - libgimpbase: + * gimp_directory() will now return the correct path of the + virtualized config directory on MSIX. + +CLI: + + - Added a Bash completion file our our command line interfaces. + - CLI option --show-debug-menu is not hidden anymore from the --help + output. I don't see a good reason to hide this option, except for + making it hardly discoverable. It is enough for the debug menu to be + hidden from the GUI by default and good that CLI options show a way + to bypass this for advanced users and contributors. + +Build: + + - Package maintainership instructions were moved to the developer + website. + - Various fixes regarding versioning and RC status on several + packages, to handle name clashes and inconsistencies. + - Add the ability to localize strings at build time as a build + requirement. Technically it implies for us that the build system is + set to a locale other than C or POSIX, or that the en_US.UTF-8 is + installed on the system. This was causing our list of language not + to be properly self-localized in Preferences. + - Current scheduled MSVC jobs will build GEGL without ctx until proper + fixes are made to make it buildable for this platform. + - Our C++ standard is now ISO C++ 14 (instead of GNU C++ 14) to make + GIMP compile with clang-cl (wrapper to MSVC) on Windows. + - Add support to MSVC's resource compiler: this allows us to support + both rc.exe (MSVC) and windres.exe (GNU). + - GIMP was made to be compilable on both GNU compilers and MSVC. + - Automate verification of Windows signature certificate and MSIX + secret. + - Minimum requirement updates: babl 0.1.118 and GEGL 0.4.66. + - AppImage is now using fully relocatable babl and GEGL. + - AppImages and Windows official builds will now always ship the debug + binaries for the hidden debug menu (which can be un-hidden with + --show-debug-menu CLI option). + + +Overview of Changes from GIMP 3.1.4 to GIMP 3.2.0 RC1 +===================================================== + +Core: + + - macOS: "Quit" from the dock's right-click menu will now follow our + standard Quit procedure, by intercepting the + applicationShouldTerminate signal, instead of forcing the + application to close (hence losing unsaved changes). + - "Add Layer Mask" will now have an "Edit mask immediately" checkbox + allowing to decide whether to go into Edit Mask state or not. This + setting is saved across repetitive actions, as all other settings in + this dialog. + - Filters on pass-through group layers will no longer be limited to + its children layers' bounding box, but to the actual bounding box, + which includes all lower layers. This also implies that empty + pass-through group layers can have an effect which will work like + "adjustment layers" in other software. Masks bounding box on empty + pass-through groups should also be the size of the group's render. + - New actions "layers-rasterize" and "layers-revert-rasterize" to + respectively rasterize and un-rasterize text, link or vector layers + (rasterizing these layers is now always revertable, though any + painting edit done after the rasterization is obviously lost). + - Actions "layers-link-discard", "layers-vector-discard" and + "layers-text-discard" have been removed. Only the latter existed in + previous stable versions so any custom shortcut associated to + "layers-text-discard" will be migrated as shortcut of + "layers-rasterize". + - When the GUI binary is run with --no-interface (-i) CLI option, we + branch on the same codebase as gimp-console. Therefore even though + this GUI binary still links with GTK, it won't run any GTK code and + can therefore be run on headless servers. + - Action "layers-vector-fill-stroke" removed (only available since + 3.1.4, not in any stable release). + - Non-destructive filters on quick mask are merged (onto the selection + channel) when exiting the quick mask mode. + - Vector layers are now properly auto-renamed when changing their + associated path (unless the layer was explicitely named). + - It is not possible to "Merge Down" onto a pass-through layer group + anymore. + - "Merge Layer Groups" cannot be applied to pass-through groups + anymore. + - Multi-selection implemented in Document history in order to load or + remove multiple images at once. + - New "tools-swap" action (default shortcut: Shift-X) to activate the + previously used tool. + - When committing or canceling filters, GIMP will automatically swap + back to the previously used tool. + - Windows: standard output and error output are now properly + redirected to the parent console in native shells, just like on + Linux or macOS. As a consequence build option -Dwin32-debug-console + has been removed. Ctrl-C is properly handled too, and output + contains colors. + - Paths attached to a vector layer cannot be deleted or merged anymore. + - Text layer rendering has been made much more robust, even when with + very big dimensions. + - GIMP on Windows is now able to detect if it is being run from either + console or shortcut, and use the python.exe interpreter in the + former case, or pythonw.exe in latter case (silent output). + - Fixed vulnerability: ZDI-CAN-28376 (XCF loading). + +Tools: + + - All tools drawing directly on layers are now blocked when a text, + link or vector layer is selected. An error message will suggest you + rasterize these layers explicitly first, in order to be able to do + any "destructive" action. + - Text tool: + * Dialog when trying to edit a rasterized layer text has been reworded. + * Support pasting unformatted text with action text-tool-paste-unformatted + (shortcut Ctrl|Primary-Shift-v by default). + * On-Canvas style editor now has a move area allowing to move the + GUI on a different position on canvas. This position is remembered + per-text layer. When the position has been manually set, a reset + button will also appear in the on-canvas editor (allowing to get + back to default positionning). + - Path tool: + * Selecting a vector layer when the Path tool is active will pop a + dialog up, similar to the one which we have in Text tool when a + text layer is picked. + * Improved logic for the creation and selection of vector layers and + paths when the tool is active. + * Double clicking a vector layer would activate the Path tool on it. + The setting to change the path is moved to the layer options + dialog. + - Transform tools are not initialized anymore when they are selected + after an automatic tool swap (when a filter tool is committed or + canceled; cf. Core section). + +Graphical User Interface: + + - "Rasterize" and "Revert Rasterize" menu items added to Layer menu + when the selected layer is a text, link or vector layer. + - The GimpColorHexEntry will now update the chosen color as you type. + - Use a standard, yet extended, AppMenu on macOS. + - Advertize the menu path to "Rasterize" items in error messages when + trying to edit a rasterizable drawable. + - Dragging a file to the image tab bar opens the file as a new image. + - Additionally to status error messages, the layer blocking a "Merge + Down" is now blinked on the Layers dialog to draw attention. + - GimpViewableDialog header icon and view will now scale based on user + custom icon size. + - Color history colors can now be dragged and dropped, to fill or set + colors as expected, as any other color area widgets. + - It is now possible to select different objects with the same name + when listed in a GimpContainerEntry (typically, 2 fonts named the + same, when you are trying to select one of them in the font entry of + Text tool options or of the on-canvas GUI; this was already working + in the Fonts dockable, but not in the container entries). + - We can now properly blink paths in the Paths dockable too (it used + to only work for layers and channels). This will be used for + actions, to raise awareness to reasons why an action cannot be + executed. + +Plug-Ins: + + - file-compressor: add zip decompression support. This allows support + for loading .hgt.zip files, as well as other formats compressed with + zip. + - SVG: initial export support, including support for vector, text and + link layers natively. Raster layers and masks are optionally + embedded as either PNG or JPEG base64-encoded data. + - Gimpressionist: edit button labels to more appropriate wording. + - PDF: + * supporting for exporting vector layers as paths. + * background fill is set on all pages for multi-page PDFs. + - PVR textures: new import support. + - Replacing scale entries by spin scale widgets in various plug-ins. + - Animation Playback and ImageMap plug-ins can now be closed with + Escape like other plug-ins. + - Fixed vulnerability: ZDI-CAN-28248 (JP2 image loading). + +API: + + - libgimpbase: + + New enum types: + * GimpTextOutline + * GimpTextOutlineDirection + + Deprecated functions: + * gimp_pixpipe_params_init + * gimp_pixpipe_params_parse + * gimp_pixpipe_params_build + * gimp_pixpipe_params_free + - libgimpcolor: + + New functions: + * gimp_cairo_surface_get_buffer + + Deprecated functions: + * gimp_cairo_surface_create_buffer + - libgimpwidgets: + + New macros: + * GIMP_ICON_LAYER_LINK_LAYER + * GIMP_ICON_LAYER_VECTOR_LAYER + + GimpBrowser search entry ported to GtkSearchEntry. + + GimpLabelEntry accepts a NULL value and will convert it to empty + string. + + gimp_widget_free_native_handle() implementation improved and docs + updated with important information on how to use it (disregarding + the new information, crashes on Wayland may happen). + - libgimp: + + New functions: + * gimp_vector_layer_get_enable_fill + * gimp_vector_layer_get_enable_stroke + * gimp_vector_layer_get_fill_color + * gimp_vector_layer_get_fill_pattern + * gimp_vector_layer_get_path + * gimp_vector_layer_get_stroke_cap_style + * gimp_vector_layer_get_stroke_color + * gimp_vector_layer_get_stroke_pattern + * gimp_vector_layer_get_stroke_dash_offset + * gimp_vector_layer_get_stroke_dash_pattern + * gimp_vector_layer_get_stroke_join_style + * gimp_vector_layer_get_stroke_miter_limit + * gimp_vector_layer_get_stroke_width + * gimp_vector_layer_get_stroke_width_unit + * gimp_vector_layer_set_enable_fill + * gimp_vector_layer_set_enable_stroke + * gimp_vector_layer_set_fill_color + * gimp_vector_layer_set_stroke_cap_style + * gimp_vector_layer_set_stroke_color + * gimp_vector_layer_set_stroke_dash_offset + * gimp_vector_layer_set_stroke_dash_pattern + * gimp_vector_layer_set_stroke_join_style + * gimp_vector_layer_set_stroke_miter_limit + * gimp_vector_layer_set_stroke_width + * gimp_vector_layer_set_stroke_width_unit + * gimp_item_is_vector_layer + * gimp_item_id_is_link_layer + * gimp_item_is_link_layer + * gimp_link_layer_get_by_id + * gimp_link_layer_get_file + * gimp_link_layer_get_type + * gimp_link_layer_new + * gimp_link_layer_set_file + * gimp_param_link_layer_get_type + * gimp_param_spec_link_layer + * gimp_procedure_add_link_layer_argument + * gimp_procedure_add_link_layer_aux_argument + * gimp_procedure_add_link_layer_return_value + * gimp_link_layer_get_mime_type + * gimp_text_layer_get_outline + * gimp_text_layer_get_outline_antialias + * gimp_text_layer_get_outline_cap_style + * gimp_text_layer_get_outline_color + * gimp_text_layer_get_outline_dash_offset + * gimp_text_layer_get_outline_direction + * gimp_text_layer_get_outline_join_style + * gimp_text_layer_get_outline_miter_limit + * gimp_text_layer_get_outline_width + * gimp_text_layer_set_outline + * gimp_text_layer_set_outline_antialias + * gimp_text_layer_set_outline_cap_style + * gimp_text_layer_set_outline_color + * gimp_text_layer_set_outline_dash_offset + * gimp_text_layer_set_outline_direction + * gimp_text_layer_set_outline_join_style + * gimp_text_layer_set_outline_miter_limit + * gimp_text_layer_set_outline_width + * gimp_param_rasterizable_get_type + * gimp_param_spec_rasterizable + * gimp_rasterizable_get_type + * gimp_rasterizable_is_rasterized + * gimp_rasterizable_rasterize + * gimp_rasterizable_restore + * gimp_file_procedure_get_meta + * gimp_file_procedure_set_meta + * gimp_images_close_popup + * gimp_images_popup + * gimp_images_set_popup + * gimp_items_close_popup + * gimp_items_popup + * gimp_items_set_popup + + Deprecated functions: + * gimp_drawables_close_popup + * gimp_drawables_popup + * gimp_drawables_set_popup + + Removed functions: + * gimp_vector_layer_discard (since 3.1.4, but never in a stable + release). + + New classes: + * GimpLinkLayer + + New interfaces: + * GimpRasterizable: GimpLinkLayer, GimpTextLayer and + GimpVectorLayer now implement this interface. + + gimp_item_is_is_text_layer() will now always return TRUE for a + layer which is a text layer in backend, even if it has been + rasterized. It used not to, probably because the "Discard Text + Information" was not reversible (except by undoing), whereas now + we can "Revert Rasterize". Instead you should use + gimp_rasterizable_is_rasterized() to determine whether to consider + a GimpTextLayer as a raster layer or as a text layer. + + gimp_file_load() as well as the image returned by a + GimpLoadProcedure are now always returned as "clean" and with + empty undo stack. + + gimp_drawable_get_thumbnail_data() and + gimp_drawable_get_sub_thumbnail_data() implementations updated to + always return sRGB(A) 8-bit. + - libgimpui: + + New functions: + * gimp_image_chooser_get_image + * gimp_image_chooser_get_label + * gimp_image_chooser_get_type + * gimp_image_chooser_new + * gimp_image_chooser_set_image + * gimp_prop_image_chooser_new + * gimp_item_chooser_get_item + * gimp_item_chooser_get_label + * gimp_item_chooser_get_type + * gimp_item_chooser_new + * gimp_item_chooser_set_item + * gimp_prop_item_chooser_new + + New classes: + * GimpImageChooser + * GimpItemChooser + + Deprecated Classes: + * GimpDrawableChooser + +Metadata: + + - Making GIMP's project vision clearer in metadata description. + +Build: + + - Depends on babl 0.1.116 and GEGL 0.4.64. + - The stable Snap package (on Snap Store) has been officially passed + over to the GIMP team. + - Cleanup done in devel-docs/ with more developer documentation moved + over to the developer website. + - Build option -Dwin32-debug-console removed (cf. Core section). + - Windows builds: GEGL is not built anymore with Matting Levin because + it is highly unstable (crashes) on this OS. + - Flatpak nightly builds will now show the correct version on `flatpak + list`. + - Our .exe installer will now have a dark mode (with Inno Setup 6.6.0). + + +Overview of Changes from GIMP 3.1.2 to GIMP 3.1.4 +================================================= + +Core: + + - About dialog now shows "Up to date as of " text for more + clarity. + - Fixed config migration when updating to GIMP 3.1/2. + - Reorganizing layer search code into generic item tree view search + code for further reusing into other use cases. + - Internal classes, config items and actions renamed from "vectors" to + "path". + - Some cleanup of outdated disabled unit tests and other warnings. + - Restructuration of internal GimpControllerManager and + GimpContainerView API. + - GimpContainerListView now uses a GtkListBox. A Playground switch was + added to use the new widgets in all views that can be switched + between list and grid view (brushes, patterns etc.). This won't + likely get out of Playground before GIMP 4 because it is far too + slow right now (and apparently we'll need GTK4 for making it fast as + our current lists). + - Various code have been moving away from GtkTreeView and some new + internal classes were added as a preparation for GTK4 port. + - GEX format updated to use standard instead of + per update in the AppStream specs in the last few years. This + doesn't make any compatibility issue since this format is purely + internal only for now, not public. + - New setting "Update metadata automatically" in Preferences > Image + Import & Export > Export Policies. When enabled, add and update + metadata automatically. When disabled, only the minimum necessary + metadata changes are made, without changing modification date, + synchronizing tags, or updating the software and change history + metadata. This new setting is enabled by default. + - Fix palette import to properly import colors with alpha values from + palettes. + - New layer types: + * vector layers + * link layers + - Fill/Stroke editor are now live-previewing color changes for vector + layer fill/stroke and text layer outlines. + +Tools: + + - MyPaint brush tool was ported to the newer MyPaintSurface2 API. A + consequence is that we now depend on mypaint-brushes-2.0 instead of + mypaint-brushes-1.0. + - Seamless Clone (Playground): made to work again, but is still too + slow to move out of Playground. + - The Paths tool has updated UI to create vector layers. + - Text tool: bold, italic and underline can now be applied with + commonly used shortcuts (Ctrl+b, i and u respectively). + - Vector and Link layers cannot be painted on, and filters cannot be + merged on them. They now need to be explicitly downgraded to raster + layers. + +Graphical User Interface: + + - More consistent capitalization across text in UI. + - Use system colors on Windows title bar when System colors theme is + set. + - Make the comment text area sensitive in Export procedure dialogs + depending on whether "Save Comment" checkbox is checked or not. + - In various GUI using a GtkStack (Input Controller dialogue, + Preferences dialogue, and Welcome dialogue), we now turn off + animations when it is set OFF system-wide. + - "System" color scheme now also works on macOS. + - GimpSpinScale cursors now changed to "pointer" when hovering the + slider area and "col-resize" when actually grabbing the cursor. + - The Welcome dialog will now recognize your standard shortcuts to + create a new file, open a file or open one of the 10 most recent + files. + +Plug-Ins: + + - TIFF - Add support for the following features, based on unofficial + documentation and user-provided sample files: + * Sets the selected layer based on the image-level metadata. + * Sets the visibility of the background layer based on the image + level metadata. + * Sets the blend mode and color tag of each layer, based on extended + layer-level metadata. Legacy blend modes are used, based on + user feedback and comparison with Sketchbook. + * Creates group layers and stores layers in them. Layers are read from + top to bottom, and layer groups are added and filled based on layer + level metadata. + - Animation Playback was redesigned to more closely resemble standard + playback UIs. The redesign also changes the progress bar to a + GtkScale, so users can more easily move to different frames on the + timeline. + - New GEGL Filter Browser plug-in to list and inspect all available + filters for development purpose. + - New import support: + * PAA textures: initial import support (includes RGBA 4444, 5551, + 8888, and Grayscale with Alpha channel. It does not yet cover DXT1 + - 5 texture import support). + * Seattle Filmworks photos (earliest format SFW93A, and the most + common format SFW94A). Both formats are essentially mangled JPEGs, + though mangled in different ways. + * HRZ Slow Scan Television Images (restored, as it used to be + implemented and removed in 2004). + - Raw Image data plug-in dialog redesigned to be on a two-column + layout to avoid over-high dialog. + - Print: in sandboxed environments (Flatpak, Snap), the print Settings + are now displayed as a second dialog after the portal print dialog. + This 2-step workflow is a work-around to the inability to tweak the + print dialog when the print portal is in use. + +API: + + - GimpTRCType enum type made available in libgimp and PDB. + - gimp-file-save properly sets associated save or exported files. + - New PDB/libgimp functions: + * gimp_drawable_filter_operation_get_available() + * gimp_drawable_filter_operation_get_details() + * gimp_drawable_filter_operation_get_pspecs() + * gimp_context_get_paint_fade_length() + * gimp_context_get_paint_fade_repeat() + * gimp_context_set_paint_fade_length() + * gimp_context_set_paint_fade_repeat() + * gimp_item_id_is_vector_layer() + * gimp_param_spec_vector_layer() + * gimp_procedure_add_vector_layer_argument() + * gimp_procedure_add_vector_layer_aux_argument() + * gimp_procedure_add_vector_layer_return_value() + * gimp_vector_layer_discard() + * gimp_vector_layer_get_by_id() + * gimp_vector_layer_new() + * gimp_vector_layer_refresh() + - GimpSizeEntry (libgimpwidget) can now parse mathematical expressions + in their reference value spin buttons too. + - GimpColorScales (libgimpwidget) will now set its decimals to 0 when + creating u8 RGB color selectors. This change will help further + distinguish between the 0...00 and 0..255 views in the Color + Selectors. It will also better convey to users that u8 is an integer + value rather than a floating point. + - Favor existing image comment instead of always loading comment from + metadata. + - Improve handling of comment metadata with + "charset=[ascii|InvalidCharsetId]" prefixes. + - New GIMP_METADATA_SAVE_UPDATE value in enum type + GimpMetadataSaveFlags (libgimpbase). + - Modernize setting "Exif.Image.DateTime" metadata by setting the + timezone additionally. + +Build: + + - Add nightly Snap package. + - Add nightly Aarch64 flatpak. + - appstream-glib dependency replaced with libappstream + - Installer uses latest InnoSetup now. + - New configure option -Dwin-debugging allowing to choose DWARF debug + symbols on Windows instead of the native (CodeView) symbols. This + will be useful for people wishing to debug with GDB in particular. + + +Overview of Changes from GIMP 3.0.4 to GIMP 3.1.2 +================================================= + +Core: + + - Layer mask created from layer's alpha when there is no alpha + channel is now a fully opaque mask. + - Major non-destructive filter code refactoring. + - Lock Content now generates undo steps. + - NDE filters are now allowed on channels. + - Merging filter will now add an alpha channel to a layer if required. + - Refactoring Photoshop stream loading functions. + - Loading Photoshop RGB and grayscale patterns (.pat, unfortunately + the same extension as our own pattern format) now supported. + - The histogram editor now shows a "Compute unique colors:" checkbox + which will display the unique color count in the image. + - Deleting current palette entry now selects the next entry in the + palette. + - New paint mode: Overwrite. Note that this mode is only available for + paint tools right now (in particular not for layers, neither in + filters). + +Graphical User Interface: + + - Brushes and Fonts dockables: new "Use theme colors for preview" + toggle button. + - The Palettes and Palette Editor dockables, and the Palette tab in + FB/BG Color dockable, also follow theme colors for grid display. + - New "System" color scheme which will follow the system's color + scheme setting (on Unix-like systems when XDG Settings portal is + installed and on Windows). + +Tools: + + - Curves tool: Photoshop curves file format (.acv) can now be loaded. + - Levels tool: Photoshop levels file format (.alv) can now be loaded. + - Text tool: new "Outline Direction" settings. + +Plug-Ins: + + - Jigsaw: the plug-in now draws on transparent layers too. + - Playstation TIM images now supported (import/export). + - Palettes can now be exported as Krita .kpl palette. + - Over The Air Bitmap (Nokia mobile image format) now supported for + import. + - PSD: + * legacy Drop Shadow layer style is now imported on loading. + * legacy Inner Shadow layer style is now imported on loading. + - file-raw: new support for ART (Another RawTherapee, fork of the + latter) as a RAW loader. + - OpenEXR: support for importing multi-layer OpenEXR images. + - JPEG 2000: export support added. + - APNG: initial import support. + - JIF: new import support for Jeff's Image Format. + - ORA: support the extensions storing layer's "pixel locked" and + "selected" status on import and export. + - Script-Fu: new function (script-fu-register-i18n) for setting up + localization of Script-Fu plug-ins. + - HEIF: + * new AVCI import support (requires libheif 1.19.6 with OpenH264 + decoder enabled); + * new HEJ2 export support (requires libheif 1.19.8 with OpenJPEG + support). + - New export support for PSB. + +Modules: + + - CMYK selector: Total Ink Coverage (total percentage of ink that + would be needed to print a particular color) information is now + shown. + +API: + + - Changes in libgimpwidgets: + * New functions: + + gimp_prop_toggle_new() + - Changes in libgimpui: + * New functions: + + gimp_procedure_dialog_get_coordinates() + * gimp_procedure_dialog_get_widget() will now generate a radio frame + widget for GimpChoice arguments of 2 choices only (and will still + default to a combo box for larger choices list). + +PDB: + + - none_ok tag now allowed on sample_point and guide PDB types. + +Build: + + - File format associations list now generated by the build system for + Windows and OSes using the Desktop file. + - Flatpak: verify nightly flatpak dependencies with the + flatpak-external-data-checker (like we do for stable and beta + flatpaks). + - Various non-portable scripts were ported to be properly + POSIX-compliant and to allow native builds on all OS (e.g. Windows). + - Some soft checks were also added to the build system to prevent + re-introduction of non-portable code. + + +Overview of Changes from GIMP 3.0.2 to GIMP 3.0.4 +================================================= + +Core: + + - Make maximum radius for generated brushes consistent across + codebase. + - Use NDE filter name for undo history. + - Module loading improved to be better cross-platform (in particular + on macOS both .so and .dylib modules are supported). + - Code compliant with GCC 15 (C23). + - Filter size updated when its drawable is rotated. + - Font loading (at startup) optimized. + - Set the proper program name for KDE/Wayland to map the process to + the correct desktop file. + - "windows-display-*" are hidden from the Shortcuts dialog (they are + not meant to be remapped). + - Editing non-destructive effects now triggers undo steps. + - When migrating from GIMP 2.x to GIMP 3, shortcuts for actions + "edit-paste-as-new-layer*" are now converted to "edit-paste-merged*" + (and not "edit-paste*" anymore which was confusing and + counter-productive). + +Graphical User Interface: + + - Highlight selected device in GimpDeviceStatus. + - Various theme leak fixes. + - UX improvement: GimpViewableDialog (e.g. Fill/Stroke path and more) + now has "OK" as default response. + - Icon size settings now also applying to Move and Transform icon + boxes. + - Commit hash is now shown in About dialog in all non-release builds + (i.e. even in stable series, when we are in-between releases). + - Hide Force slider for Pencil Tool (rather than just making it + insensitive). + - Define merged titlebar icon colors. + - Keep menubar color consistent when out of focus. + - We don't show Fx icon for tool-based filters. + - Updated splash without micro version in it. + - Removed size restrictions on Display Filters. + - Don't show hidden tools on toolbox tooltips. + - Fix "Keep above" Window Manager hint. + - Multi-Window mode on Windows: dock windows' title bars now adapt to + the Windows system theme colors too. + - Show palette name in Palette Color Selector. + +Tools: + + - MyPaint Brush: have consistent options layout compared to other + paint tools. + - Scissors Select Tool: close the curve on Enter, similar to the Path + tool. + - Path Tool: connect path on click in design mode. + +Plug-ins: + + - Restore GUI to Difference Clouds script. This had been lost since + GIMP 2.8! + - Fixes in various file format support, such as: DDS, SVG, TIFF, PSD, + BMP, ICO… + - Screenshot dropdowns replaced by radio buttons, as part of a new UX + decision that choice settings with 2 or 3 choices should be dropdown + (faster 1-click access), unless there are a lot more settings making + the dialog too crowded already. + +PDB: + + - Make "gimp-plug-ins-query" public again (yet still not available in + libgimp). + +Build: + + - Windows Installer: + * Make the installer aware of Install, Reinstall and Update modes. + * Add Repair mode to Windows installer: in particular we can now fix + installations when the previous install directory cannot be + accessed anymore. + * The feature to delete the config folder on Windows uninstall will + now make a backup on the Desktop first (allowing people to delete + it themselves, move it, or even restore it later if needed). + * Uninstalling while GIMP is running is made impossible (among other + issues, it was causing partial uninstallation). + * Downgrading is only possible by uninstalling first. + * Development warning is shown in dev build of stable series too. + * Add fractional scaling support to Installer welcome image. + * Restore points now have a timeout to prevent stuckness. + - Our AppImage won't ship debug symbols anymore. Better debugging can + be set with: export DEBUGINFOD_URLS="https://debuginfod.debian.net" + - Windows builds: + * Ship babl/GEGL and libgimp headers, static libs and pkg-config + files for plug-in developers. + * Dedicated file icon for XCF files. + * Generate native .pdb CodeView symbols on Windows (smaller debug + data files, usable by MSIX and better debugging ability), except + on x86 (32-bit). + - Crossbuilds are dropped from CI. + - Shell scripts used in the meson build are ported to Python (more + portable and much faster on some platforms, in particular Windows). + - Some build scripts were moved around for reorganization. + - Depency requirement bumped: + * babl 0.1.114 + * GEGL 0.4.62 + - New "Inputs" feature for simpler Gitlab pipelines running. + - Some in-repository documentation was cleaned up. + + +Overview of Changes from GIMP 3.0.0 to GIMP 3.0.2 +================================================= + +This is a bug-fix only release. + +Core: + + - Mark some strings translatable. + - Fix crash when choosing a brush in grid view. + - Windows: temporary revert of some Input Device handling code which + was breaking pressure sensitivity for some graphics tablets (though + this revert may make issues with the eraser tip). + - Fix crash when choosing a non-existing font in text tool options. + +Tools: + + - Reorder Line Art Detection options per design decision. + +Graphical User Interface: + + - Keep headerbar color consistent when out of focus. + - Histogram uses the luminance value of the foreground color as a + threshold to lighten or darken the border color for contrast with + the histogram itself. + - Improve separation between panels in dark theme. + - Add default response for GimpQueryBox dialogues. + - Spacing between toolbox widgets improved. + - GimpSpinScale slider colors inverted. + - New icons: "gimp-toggle-on" and "gimp-toggle-off" and using them in + the Search Action's list as icons for toggle actions. + +Plug-ins: + + - Python Console uses the luminance of the background color for error + text. + - Metadata Editor: fix buffer overflow. + - Gradient Flare: fix crash when setting the size to 0. + - Screenshot: X11 implementation is bypassed (in favor of portals) + when running on XWayland. + +Build: + + - Various packaging fixes and cleanup. + - The Windows installer now prompts (only in user installation) about + deleting GIMP config files when uninstalling. + - GEGL 0.4.58 is now our minimum requirement. + - Windows installer: create Restore Point on system-wide install.