Subject: CVS commit: pkgsrc/graphics/darktable
From: Dan Cirnat
Date: 2021-11-30 14:00:15
Message id:

Log Message:
darktable: Update graphics/darktable to 3.6.1

# 3.6.1
Bug Fixes

    Fix module expand on quick access panel when enabling/disabling module.

    Fix a possible crash in color calibration module.

    Fix an inconsistency between the CPU & GPU path in color calibration module.

    Fix possible issue in OpenCL Bradford non-linear code in color
    calibration which leads to wrong color rendering.

    Fix Windows paths handling and encoding.

    Fix possible issue in exiv2 when trying to write empty strings.

    Fix by-scale button in export module.

    Fix crash when renaming a drawn mask.

    Minor UI fix in duplicate module.

    Fix possible wrong rendering of the color picker
    tooltip. (workaround for a possible Gtk issue).

    Fix filename variable used when importing new pictures.

    Fix noise profile for RICOH GR III.

    Fix some memory leaks.

Camera support, compared to 3.6
Base Support

    Leica C-Lux (3:2)
    Nikon D6 (14bit-compressed, 14bit-uncompressed, 12bit-compressed, \ 
    Nikon Z fc (14bit-compressed, 12bit-compressed)
    Sony ILCE-7RM3A
    Sony ILCE-7RM4A

Noise Profiles

    Ricoh GR III

# 3.6.0

The Big Ones

    Full rework of the import module. The new module allows you to see
    thumbnails of your images before import and makes it easier to handle
    multiple import tasks. The same dialog is now used for importing
    from disk, card or camera.

    When importing "in-place", images that are already present in darktable
    are flagged and can be automatically excluded from the import.

    Importing from a local drive won't use gphoto and so should work more
    reliably on Windows.

    A vector-scope is added to complement the current histogram,
    waveform and parade views.

    A new default demosaic algorithm (RCD) has been introduced, which should provide
    better quality than the current default (PPG) without the long run-times
    of AMaZE. the order of the demosaic algorithms has also been adjusted for \ 

    Support for "dual demosaic" has also been added, allowing you to \ 
    "RCD + VNG4" and "AMaZE + VNG4" for bayer sensors, for \ 
xtrans sensors there is
    "Markesteijn 3-pass + VNG". This allows you to use an algorithm \ 
better resolving
    fine detail and another one delivering smoother output depending on local \ 
image content.

    You can now create an opacity mask based on the sharpness of the image. This uses
    a similar algorithm to that used in dual demosaic.

    Drawn shapes are drawn on the original RAW image and then distorted through
    the pixelpipe. This previously led to, for example, circles becoming ellipses
    (due to lens distortion) after being placed on the image. All drawn shapes can
    now be pre-visualized and moved prior to placement, with full deformation
    applied. This makes the editing of masks easier fully WYSIWYG.

    A new Color Balance RGB module has been added. This can be used as a one \ 
stop module
    for all color grading work.

    A new censorize module has been added. This allows you to hide parts of the \ 
image by adding
    a blur/pixelization.

    A new crop module has been added. This new module has been added late in the
    pixelpipe and makes it possible to use cropped parts of the image for source \ 
    in the retouch module, for example.

    A new section has been added to the color calibration module to allow you to \ 
    colors using a color checker chart.

    The map module has been enhanced in a number of ways:
        When importing a GPX the trace can be displayed.
        Location can be set using polygons and directly created from information
        reported by Open Street Map. As a reminder, all locations
        create tags automatically for images placed into the area.

    The basic adjustments module has been replaced with the quick access panel, which
    can be used to group controls from multiple different modules in one place. \ 
    only non-graphical controls (sliders, comboboxes etc.) can be used.

Other New Features And Changes

    The various lighttable modes can now be accessed via clear and descriptive icons
    at the bottom of the screen. These should be easier to use than the existing \ 

    The export module is now also accessible on the left-hand panel of the
    darkroom view.

    The mix control in the contrast equalizer module is now retained as
    module parameter. This means that no data is lost when using this slider and
    you can always change the mix later with full precision.

    The following modules have been deprecated:

        The basic adjustments module has been replaced by the new quick access panel.

        The vibrance module has been replaced by the vibrance control in the new \ 
        balance rgb module.

        The spot removal module has been replaced by the retouch module (use
        this module in "clone" mode to replicate the spot removal \ 

        The defringe module has been replaced by a new "chromatic \ 
aberrations" module.
        The old module has been renamed to "raw chromatic aberrations".

    The RAW chromatic aberration module has been enhanced to support
    multiple iterations and an option to help avoid color shifting has
    been added (not activated by default).

    Scene-referred workflow is now the default, though this can still be changed in

    The ESC key can be used to exit the slideshow view.

    You can now Ctrl-Click on the module groups preset button to
    access the manage dialog directly.

    Many aspects of the GUI have been reworked or tweaked for a better user
    experience (combo-box alignment, padding, histogram icons, etc.).

    The color of scope views (histogram, parade, waveform) has been reworked \ 
using CSS.

    The integrated help system now points to the new user manual which is
    up-to-date for this release. Also for development builds of darktable these \ 
links will
    go to the development version of the manual. So more links have been
    added, for example, for the lighttable layout and the timeline.

    As a reminder, the new documentation is available in the following location
    (viewable online or in pdf and epub formats):

    Many graphs in processing modules can now be resized with Ctrl+Scroll.
    (Filmic RGB, RGB levels, levels, lowlight, colorzones, rawdenoise,
    denoise profile, contrast equalizer).

    A new color preservation method ("norm-preserving colorfulness") has
    been added to the color calibration module.

    A simplified and more precise message has been added to notify the user
    when their database(s) are locked by another process.

    A rational function has been added to toe/shoulder controls in Filmic RGB.

    A new preference for advanced users can now be used to disable the
    module warning messages. Use at your own risk.

    Preliminary work toward full support for CR3 has begun. darktable's exif
    support can now read CR3 files if the proper exiv2 library version
    is found.

    A new color science with norm preservation under de-saturation has been
    added to Filmic RGB and a new scaled euclidean norm is supported.

    Some changes have been made to make liquify faster when editing
    nodes. Also smaller deformation stamps are now supported.

    The style of module sub-sections has been tweaked so that they stand out more.

    It is now possible to more easily manage overlapping masks. For example, it is
    possible to change an ellipse's control points when they lie within a
    larger circle or path shape.

    Easier handling of the mask controls - do not require high precision
    as mouse collision detection has been reworked.

    The preferences, "manage module groups" and import dialogs will \ 
remember and
    restore their size after closing. Their default size is designed to support
    smaller screens and it is recommended that you resize them as appropriate.

    A huge number of internal optimizations have been made throughout the code.
    For example: soften, tone equalizer, drawn masks, color picker, color space \ 
    It is impossible to list them all

    Many speed improvements have been made for the standard CPU code path by \ 
tuning the
    OpenMP code. There are some huge gains with the new code in some
    modules. We have then removed some hand-coded SSE routines as they are not
    faster and are hard to maintain.

    The prompt that appears when exporting in overwrite mode is now optional and \ 
    by a security preference.

    An icon has now been added to module headers to indicate whether a module \ 
uses a mask.
    This allows you to quickly see which modules use a mask and to \ 
enable/disable the mask
    preview by clicking on it.

    A message is now shown when a camera is plugged and darktable is not able
    to connect to it. The general cause is that the camera is mounted by
    the OS and so is exclusively locked.

    The grey darkroom loading screen is now optional. This can lead to on-screen \ 
    but can also be useful to quickly compare versions of an image.

    Module group presets can now be auto-applied based on the image being edited.
    This make it possible to create groups specifically to develop color,
    monochrome, RAW or Jpeg images, for example.

    Different interpolation algorithms are advised for warping and scaling modules.
    A new preference has been added to allow you to select these algorithms \ 

    RGB scene blending mode is now used for the denoise (profiled) presets.

    Parametric masks are now handled better when being reset. Some parametric masks
    may need to be inverted in order to be considered as a no-operation.

    The GUI of the blending section has been rewored to be more compact.

    Distortion is no longer computed for shapes that are outside of the current

    Better values are reported on toast messages when changing masks' size
    and feather.

    Undo has been enhanced to support duplicates. That is, the creation of
    duplicates can be undone using Ctrl+Z (undo).

    In the darkroom, undo now restores the mask display status along with
    the module changes.

    Non-matrix-based color profiles have been filtered out of the histogram profile

    The timeline/filmstrip keyboard shortcut has been changed to Ctrl-B.
    This is more consistent with Ctrl+Shift+B (used to toggle the bottom
    panel) and avoids a conflict with sticky preview shortcut.

    Some preferences have been moved to a sub-menu in the module preset
    menu. This makes the global preferences lighter. This has been
    done for the import, export, metadata and "collect images" modules.

    Jpeg-2000 files are now decoded faster (using multiple threads).

    The lighttable has been enhanced to use the embedded Jpeg preview
    depending on the size of the thumbnails being displayed.
    Setting such a preference to use embedded preview for small thumbnails may \ 
    the handling of large collections during import, for example.

    Added support for removing multiple styles at once.

    Added support for import/export of presets on mass.

    Added collect filter presets to display images based on aspect ratio
    and import date.

    The variables $(EXIF_xxx) can now be used while importing pictures.

    Graduated density module's control is fixed when using down-sampling.

    Color zone saturation has been adjusted to avoid misleading visual illusions.

    Modules can now be removed from a group by right-clicking on the group icon.

    Many improvements have been made to the TIFF export module.

    In the lighttable, when several images are selected, the image information module
    now displays the information only if every image share the same data. If data are
    different, a <various values> text is displayed.

    In the export module, the last visited Piwigo album is now remembered \ 
between sessions.

Bug Fixes

    Fix ellipse and gradient rotation angle when distortion modules are
    activated. This is a GUI issue only when adding and editing shapes.

    Fix white-balance from old edits where the white-balance module was
    left at default values in darktable 2.6.x. For those edits we
    need to recover the legacy values and not the new ones from 3.x.

    Use smooth zooming to avoid thumbnails flickering.

    Fix entering of exponent expression in sliders for keyboard where ^
    is a dead key (this is the case in the German and French layout for

    The import should be a bit faster for large collections by limiting
    the GUI update.

    Fix various AVIF issues (set YUV range, proper use of color
    primaries, set codecName, etc.)

    Fix demosaic border handling and have fewer differences between the
    CPU & GPU code path.

    Fix use of sources in spot and retouch when distortion is used. The
    source area was not always correctly distorted and was actually
    giving different results depending on whether distorting modules
    were present in the pipe.

    In the default watermark simple-text we now preserve the spaces.

    Properly check for CLUT in all ICC intents before extracting matrix.

    Properly use the inverse-transform routine provided by lensfun instead
    of an adhoc iterative routine in the lens correction module. This makes the code
    cleaner and probably more precise.

    Hide borders by default in slideshow view.

    Ensure that duplicates are given the same time-stamp as the source image.

    Fix creation of duplicates when the workflow default has been
    changed since the base image was created. That is, an image
    created with the display-referred workflow must be fully identical
    when duplicated, even if the workflow default has been changed to

    Properly group focal lengths in the collect images filters.

    Better naming of the RAW prepare module controls.

    Fix live-view display scaling on large screens (especially for HiDPI

    Fix migration of legacy parameters for denoise (profiled). A
    copy/paste error was copying the shadow parameter as the new bias.

    Fix possible loss of masks where a module is disabled just before
    switching to another module.

    A new module instance can now be created by right-clicking on
    the multi-instance menu or on a preset. This replaces middle-click,
    which is not available on all mice.

    Fix zoom in the lighttable full preview to keep the mouse position.

    Recover forms from legacy spot in version 1.

    Fix reset in the export module so that it resets all module parameters
    to their default values.

    Fix HDR DNG white balance setting.

    Import Lightroom metadata only if there is not already a darktable XMP for
    the corresponding image.

    Fix color profile handling in the overexposed module.

    Fix style undo in overwrite mode.

    Fix possible issue with CUPS printer margins computation when
    computer is not using the English locale.


    The database upgrade can be slow.

    This new version modifies quite a lot the database structure by adding
    foreign keys and cascade support. This will avoid dangling data in the
    database and will enforce a better consistency.


    API changed to 6.2.0

    Password storage and retrieval - added and \ 
darktable.password.get() to save and retrieve passwords using the darktable \ 
password storage back end.

    Widget naming - widgets now have a name field, making it possible to style \ 
them using CSS

    darktable.gui.libs.visibility is fixed so that setting a lib to hidden \ 
(false) removes it from the user interface.

    Preferences - added darktable.preferences.destroy() to remove a preference. \ 
Added darktable.preferences.get_keys() to return a sorted table of all of the \ 
preferences for both darktable and lua.

    Get image from database by image id - added darktable.database.get_image() \ 
to retrieve an image by the image ID

    darktable.gui.libs.metadata_view.destroy_info() - function added to remove \ 
field added by darktable.gui.libs.metadata_view.register_info() from the image \ 
information display. Thanks @phweyland

    API change to 6.2.1 - SCRIPT BREAKING CHANGE

    Event naming - add a name field to darktable.register_event() so that \ 
multiple events of the same type can differentiated and the desired one selected \ 
and accessed.

    Event destruction - added darktable.destroy_event() to remove an event.

    API change to 6.2.2 - SCRIPT BREAKING CHANGE

    Add selection-changed to the lua events so that scripts can respond when the \ 
selection changes

    Selection naming - add a name field to \ so that the selection can be \ 
selected and manipulated after creation

    Selection destruction - add to \ 
remove an selection button from the user interface.

    Selection sensitivity - add \ to set selection button \ 

    API change to 6.2.3 - SCRIPT BREAKING CHANGE

    Action naming - add a name field to \ 
darktable.gui.libs.image.register_action() so that the action can be selected \ 
and manipulated after creation

    Action destruction - add darktable.gui.libs.image.destroy_action() to remove \ 
a lua created action button from the user interface.

    Action sensitivity - add darktable.gui.libs.image.set_action_sensitive() to \ 
set action button sensitivity

    Bugfix - Changed text_view widget to wrap lines when the text exceeds the \ 
width of the widget

    Storage removal - add darktable.destroy_storage() to remove a storage from \ 
the exporter

    Widget visibility - add visible member to widgets for visibility control

    Change API to 7.0.0 for darktable 3.6.0 due to all of the breaking changes \ 
this development cycle

Changed Dependencies
RawSpeed changes
Camera support, compared to 3.4.1
Base Support

    Fujifilm GFX100S (compressed)
    Fujifilm X-E4 (compressed)
    Fujifilm X-S10 (compressed)
    Leica D-Lux 7 (4:3, 1:1, 16:9, 3:2)
    Nikon Z 6_2 (14bit-compressed, 14bit-uncompressed, 12bit-compressed, \ 
    Nikon Z 7_2 (14bit-compressed, 14bit-uncompressed, 12bit-compressed, \ 
    Panasonic DC-G100 (4:3)
    Panasonic DC-G110 (4:3)
    Panasonic DC-GF10 (4:3)
    Panasonic GF90 (4:3)
    Pentax K-3 Mark III
    Ricoh GR III (dng)
    Sony ILCE-1
    Sony ILCE-7SM3
    Sony ILCE-QX1

White Balance Presets

    Fujifilm GFX100S
    Fujifilm X-E4
    Nikon D780
    Panasonic DC-FZ10002
    Panasonic DMC-G8
    Panasonic DMC-G80
    Panasonic DMC-G81
    Panasonic DMC-G85
    Ricoh GR III
    Samsung GX20

Noise Profiles

    Canon PowerShot S110
    Nikon COOLPIX P950
    Nikon Z 7_2
    Olympus E-M10 Mark IV
    Pentax K-3 Mark III
    Samsung GX10
    Samsung GX20
    Sony ILCE-1
    Sony ILCE-7C

Custom Color matrices

    Samsung GX20


    European Spanish
    Brazilian Portuguese

# 3.4.1

New Features And Changes

    Faster thumbnail generation during import.

    Some minor CSS improvements.

Bug fixes

    Fix color correction RGB handling and saturation normalization.

    Fix smooth scrolling on MacOS.

    Fix Lr metadata import, this is done only if no other XMP present.

    Fix metadata export which must be done only if the corresponding
    setting is activated.

    Fix combo-box popup scrolling.

    Properly restore collection hinter messages when needed.

    Fix stars display in overlay.

    Fix black point setting when dragging the histogram.

    Fix help links for technical group module.

    Properly discriminate cameras with the same prefix in collect module.

    Fix bold rendering on Windows (for selected presets for example).

    Fix support of Windows PATH to configuration and libraries when the
    path name contains non ASCII characters.

    Properly hide the selected tag tick when a tag is not selected anymore.

    Fix search on collect module for multiple filename separated with coma.

    Fix size of clipping handle when preview down-sampling is activated.

    Fix metadata comment reading from exif.

    Fix a case where the thumbnail could be out of synchronization with
    the darkroom edit.

    Never show filmstrip cursor on selected image on other views.

    Skip possible null dates on the collect module which could then
    crash darktable.

    Fix waveform histogram rendering on MacOS.

    Fix some memory leaks.

Changed Dependencies
RawSpeed changes
Camera support, compared to 3.4.0
White Balance Presets

    Fujifilm X-Pro3
    Fujifilm X100V
    Olympus E-M10 Mark IV

Noise Profiles

    Canon EOS 1500D
    Canon EOS 2000D
    Canon EOS Rebel T7
    Canon EOS-1D X Mark II
    Fujifilm X-Pro3
    Fujifilm XF10
    Nikon Z 5
    Panasonic DC-S1R
    Pentax K-1 Mark II
    Sony DSC-RX10M4


    European Spanish
    Brazilian Portuguese

# 3.4.0

The Big Ones

    The user manual is made available at the same time as the
    release. Note that this user manual is also the last version as a
    new project has taken over the lead on this. The goal is to have
    an up-to-date user manual by using a simpler format
    to write text for contributors. Feedback or contributions for the
    new format are welcome at

    Current manual (multilingual):

    New manual (English only):

    The tethering view has been reworked and is now more stable.

    The histogram is back on the tethering view (it was disabled in 3.2
    due to lack of time)

    A new module grouping feature has been introduced. This makes the "more \ 
modules" module
    (at the bottom right of the darkroom) obsolete and this module has therefore \ 
been removed.

    The module grouping feature allows users to create their own groups
    of modules. A number of pre-defined module groups are included as presets
    (default, minimal, scene-referred, display-referred,
    all modules) as well as a new default module group tab layout (technical / \ 
grading / effects),
    which beter organizes the modules according to their purpose.

    Module masking is now enhanced for use with scene-referred workflows. A new \ 
masking implementation
    has been added, with fully unbounded blending modes, which allows parametric \ 
    either in linear RGB or in JzCzHz color spaces. A boost factor slider has been
    introduced in the masking GUI so that users may set thresholding parameters \ 
above 100%
    to mask pixels in HDR images.

    JzCzHz is derived from JzAzBz, which is a perceptual color space developed
    for HDR and published in 2017, with better properties than CIE Lab from 1976,
    allowing near-perfect hue linearity, for a robust hue/saturation masking.
    A JzCzHz hue mask will produce the same output whether it is used
    before input color profile, after output color profile, or anywhere in-between,
    providing an important consistency improvement over HSL masking.

    A new color calibration module has been added as a full-featured hub for \ 
color correction.
    It was first intended as a scene-referred (unbounded) rewrite of the old \ 
channel mixer,
    allowing corrections of the color space, both for creative and corrective \ 

    Because channel mixing is how white balancing and chromatic adaptation
    are implemented, color calibration also introduces robust chromatic \ 
adaptation transforms,
    Bradford (from ICC v4) and CAT16 (from CIECAM 2016), improving the color \ 
    of the white-balanced final image. The module provides a library of all standard
    CIE illuminants and two machine-learning illuminant detection algorithms, using
    different assumptions, for when no neutral colors can be sampled from the image,
    along with the traditional color-picker for manual sampling of neutral colors.

    Color calibration internally implements gamut-mapping and gamut-clipping,
    which attempts to preserve the hue and luminance of pixels while avoiding \ 
imaginary and
    out-of-gamut colors at the beginning of the pipeline, to improve the \ 
robustness of
    color-grading modules inside the pipeline. This is made necessary because
    white balancing will only push input out-of-gamut colors farther away,
    and will noticeably help dealing with artifical colored lights (LED, stage \ 
lighting, etc.).

    A new workflow setting "chromatic adaptation defaults", in \ 
processing preferences,
    allows users to choose to keep using the white balance module
    to perform the chromatic adaptation for new edits ("legacy" \ 
worflow, the default)
    or to use the new color calibration instead ("modern" workflow).
    The modern workflow still uses the usual white balance module, although
    with different default settings, because input color profiles and
    demosaicing need at least a rough white balancing early in the pipe.

    Map view has evolved. Images close to each other are now grouped and a count of
    grouped images is displayed on the bottom-left corner. This provides better \ 
    when many images need to be shown on the map. Mouse-scrolling over a group's \ 
thumb scrolls through
    the images of the group. Groups containing selected images are highlighted \ 
with a white border.
    The image count is displayed as a white number if all images of the group \ 
are exactly at the
    same place, and in yellow otherwise.

    Movement of images within the map has also been improved. Click to drag the \ 
visible image,
    Shift-Click to drag the full group. A new "locations" module \ 
allows you to define location
    areas (using elliptical or rectangular shapes). These locations are saved as \ 
collections visible under "
    geotagging" in the collect module.

New Features And Changes

    Some parts of the GUI have been reworked in this version to complete
    the overhaul done in previous 3.2 release to ensure seamless
    integration (color, spacing). A good example is the combo-boxes.

    A focus-peaking button has been added in the lighttable and darkroom views which
    complements the existing keyboard shortcut. Focus-peaking helps to visualize the
    depth of field in an image by materializing the sharp edges.

    Better visual feedback is provided when changing module order with drag&drop.

    The wavelet algorithm has improved performance.

    A new tooltip has been added to items in the darkroom history stack module \ 
    a list of the individual parameter changes at each step. This can
    especially help to track down unintended adjustments in modules with
    many tabs, such as filmic rgb or the parametric blending
    settings. This feature was based on the under-the-hood introspection
    enhancements delivered in 3.2.

    Processing modules now have a new tooltip, accessible by hovering over their \ 
header, containing
    a summary of what they do, how they work, in which color space they operate,
    if they expect linear, non-linear, display-referred, or scene-referred
    input and what kind of output they produce. This will help users to
    build consistent pipelines when reordering modules, by exposing the
    assumptions upon which each module is built, and provides an in-app
    documentation summary accessible offline.

    Processing modules have been updated with alias names and keyword lists \ 
which are used in the module group
    search. As a result, a module search can be performed using the exact names,
    synonyms (e.g. "dehaze" for "haze removal") or features. \ 
For example searching for "saturation"
    will return all modules that can perform saturation adjustments.

    Importing pictures from memory cards no longer uses the gPhoto API. This
    should now be more stable on Windows.

    Many changes have been made to modules to allow for narrower panels.

    The bilateral filter (used in local contrast, for example) has been enhanced \ 
for better performance.

    The reset button in the history module can now be used to delete the history \ 

    Ctrl+Clicking on the 'compress history stack' will truncate the history \ 
without compressing it.

    The export module has new options to specify the maximum output pixel \ 
dimensions using a
    scale factor or print size (cm or inch) and DPI.

    The Filmic RGB module has new graph views to help first time users.
    These views include a default base curve view in linear and logarithmic scales,
    consistent with the base curve module, and
    a zone-system view which shows the dynamic range mapping between scene
    and display grey scales. All the views have optional legends, which can be
    toggled on for new users, and off for experienced users seeking more
    GUI real-estate.

    Changing the pixel workflow preference (none, display-referred,
    scene-referred) no longer requires a restart.

    The pixel-pipe cache can be fine-tuned for better performance.

    The white balance module can now show colored sliders with two available
    modes: 'illuminant color' or 'effect emulation'.

    More compact combo-box displays have been added to some modules.

    In the collect module, the collection properties drop-down is now grouped
    making it easier to find the property you wish to filter on.

    Read support for 16-bit (half) float TIFFs has been added.

    The channel mixer has been deprecated (now replaced with the new color \ 
calibration module)

    The global color picker has been reworked and now comes with an enhanced
    GUI. The colors can now be displayed in LCh or HSL.

    Any user-amended preferences (those which differ from their default values) \ 
are now
    indicated with a small bullet.

    A new preference has been added to allow you to hide built-in presets.

    All modules with a list (styles, image information etc.) can be
    resized with a Ctrl+Scroll action.

    The history copy has been changed to include only safe
    modules. Modules like "raw white/black point" and "scale \ 
pixels" are
    no longer copied, for example. To copy such modules, use the
    "copy parts..." button. Note that the unsafe modules
    are not selected by default in the resulting dialog.

    A new exposure independent guided filter has been introduced in the
    tone equalizer module. This solves the algorithmic drawback of the
    regular guided filter (edge-aware surface blurring), that tends to
    over-smooth low-lights and under-smooth highlights. These filters
    are used by the tone equalizer to apply contrast compression globally
    on the image while not reducing the percieved acutance for local details.

    Greyscale support has been added for the AVIF format.

    The "screen DPI overwrite" and "speed/quality trade-off for
    drawing images" preferences have been combined into a single new \ 
performance mode for
    slow computers. In this mode the thumbs are computed with a lower DPI
    and use a faster drawing algorithm.

    All values in the saved preferences are checked to detect possible
    data corruptions. Preferences having a min or max are validated to
    ensure that they are in the appropriate range. Any preferences detected with
    possible data corruption are automatically reset to their default values.

    Support for AVIF >= 0.8.2 (no support for older versions).

    In order to guard against overwriting styles when exporting them,
    a dialog is shown to allow the user to confirm or abort the action.

    Output channel sliders for parametric masking are now hidden by default.

    The over-exposure warning display has been improved. As of darktable 3.2.1,
    it showed pixels for which any RGB channel value was below 0.1% or above \ 
98%, assuming they
    would clip in the final export, which is wrong. This mode triggered a lot of
    false-positives that needlessly alarmed users who took them very seriously, \ 
but also
    showed over-saturation and over-exposure issues altogether. This comes with \ 
4 possible modes:

    "any RGB channel" is the same as the previous "over \ 
exposure" warning.

    "luminance only" shows by default pixels darker than -12.67 EV \ 
(sRGB black point
    in 8 bits integers encoding) or brighter than 99%

    "saturation only" shows any pixel which is too saturated for its \ 
current luminance,
    meaning it is out of gamut.

    "full gamut" shows a combination of the 3 previous modes for an \ 
overall control check.

    These modes allow the user to take appropriate measures: exposure \ 
adjustments to fix luminance
    clipping or saturation adjustments to fix gamut clipping.

    A new preset has been added to the denoise (profiled) module to remove only \ 
    noise using wavelets mode.

    Many modules have been reworked to get better performance on CPU by
    reordering and improving the OpenMP code. The modules are Liquify,
    Shadows and Highlights, Filmic RGB reconstruction, RAW Denoise, Borders, \ 
High Pass.

    The histogram has been improved for performance espcecially the log view.

Bug fixes

    Fix orientation in the clipping module after having selected the freehand \ 
aspect ratio.

    Fix compilation issue with AVIF format support.

    Fix multiple small memory leaks.

    Fix daylight saving time in $(EXIF_HOUR) variable.

    Fix timestamp display on Windows (use UTF-8 format for timestamps).

    Fix many issues on the zoomable lighttable view introduced in 3.2
    with the lighttable rewrite.

    Fix possible flickering while displaying thumbnails on the lighttable.

    Fix liquify module interaction with nodes, line and curves when
    zooming and/or down-sampling is activated.

    Fix some issues with lighttable display (thumbnails) when using
    HiDPI monitor.

    Fix styles undo/redo in the darkroom.


    The code base has been significantly simplified and refactored,
    which will make future code maintenance easier.

    Many more tests have been added to track regressions in image filter
    outputs and ensure backwards compatibility of edits. The testsuite
    counts now 77 tests and covers all the modules currently supported.


    API changed to 6.1.0

    Button labels can now be ellipsized

    Stack widgets can now shrink and grow as panel width changes.

    A Lua Scripts Installer module now runs at startup offering to
    install the lua scripts unless they are already installed or the
    module has been disabled by the user. The module uses the git
    executable to install the scripts so it must be present on the
    user's system in order for this to work.

    darktble uses Lua 5.3. Lua 5.4 has been released and is now the
    default Lua for some distributions. Please install the Lua 5.3
    library package if your distribution is using Lua 5.4 as the
    default. If you compile darktable, then you may also set
    DONT_USE_INTERNAL_LUA to OFF in the DefineOptions.cmake file
    to use the internal Lua.

Changed Dependencies

    Due to the current GMIC version windows users may have to rename two libraries
    in the darktable bin folder to get lut3d module working:libopencv_code4xx \ 
and libopencv_videoio4xx
    should be renamed to libopencv_code440 and libopencv_videoio440 respectively.

RawSpeed changes

    CR2 decompressor was rewritten, the subsampled (mRAW/sRAw) data is now \ 
stored in packed format,
    which made interpolation beneficial for auto-vectorization by LLVM/Clang
    (after fixing over-eager common code hoisting (,
    and teaching it to perform SROA after loop unrolling \ 
    resulting in modest performance improvements, also, 4:2:0 case was parallelized:
    see darktable-org/rawspeed@5743628 /

Camera support, compared to 3.2.1
Base Support

    Canon EOS REBEL T7i
    Nikon Z 5 (14bit-compressed, 12bit-compressed)
    Olympus E-M10 Mark IV
    Panasonic DC-GX7MK3 (4:3)
    Panasonic DC-S5 (3:2)
    Sony ILCE-7C
    Sony ZV-1

White Balance Presets

    Canon EOS 200D
    Canon EOS Kiss X9
    Canon EOS Rebel SL2
    Canon EOS M5
    Canon EOS M6
    Nikon 1 V2
    Nikon Z 50
    Sony ILCE-6600

Noise Profiles

    Panasonic DC-G90
    Panasonic DC-G91
    Panasonic DC-G95
    Panasonic DC-G99
    Ricoh GR II
    Sony NEX-5T


    European Spanish
    Brazilian Portuguese

# 3.2.1

The Big Ones

    The lighttable view has been rewritten and the filmstrip reworked, resulting \ 
in large performance gains, especially when using the zoomable lighttable view. \ 
The culling view has also been rewritten from scratch. Operations are smooth at \ 
any screen resolution up to 8k.

    Many types of overlay are now possible on lighttable thumbs. Different overlay
    information can be selected depending on the thumb size on the
    lighttable. The different sizes can be set in the preferences, so we
    can have no overlay at all for small thumbs and full overlay when
    large thumbs are displayed. This is fully configurable.

    Likewise, the tooltip information when hovering the thumbs can be
    activated/deactivated based on the thumbs size.

    The lighttable modules have improved user interaction: buttons are highlighted
    only when the context makes the action

    A complete overhaul of the CSS has been done. This gives
    darktable a professional look. This continues
    the goal to make every single aspect of the UI themable using CSS.

    The Color Picker and
    Location modules are updated to better fit into the new UI, and most of the icons
    have been altered so as to be more visually balanced.

    The preference dialog has been fully reviewed and reorganized to
    propose a better look and require less
    scrolling. It is also possible to add some CSS rules directly into
    the preference dialog to tweak darktable's look as well as
    to directly control the font size and DPI values from the general
    preference tab.

    A search field has been added to the shortcuts tab to help you find
    the keyboard shortcut you want to customize.

    The new negadoctor module has been added to help inverting negative

    A new histogram display called RGB Parade has been added. At the
    same time the histogram module height can now be adjusted with

    The metadata feature has been made generic internally and has new
    features. The user can now select the information they want to see in the
    metadata editor. This selection is automatically mirrored in the collection
    and image information modules.

    Along with a new "notes" field, all the fields are multiline
    Ctrl+Enter, sizable Ctrl+Scroll and can be set
    as private (not exported). Metadata collection filters have an entry
    "not defined". At import time it is possible to choose not to import
    some metadata.

    Image change detection has been made more reliable. This affects the
    lighttable thumbnails change symbol and history collection filter,
    which is now more accurate. In darkroom navigation, this avoids the
    need to recalculate an image and save the xmp file when there is no change.

    A new down-sampling preference has been introduced for faster
    response in darkroom. The preview is either computed at full
    resolution (original, default value) or at 1/2, 1/3 or 1/4 of the
    original size. This allow for better performance but can slightly
    hinder the precision of the guided filter masking.

    Note that this is a very delicate feature to implement. A lot of care has
    been taken to ensure all is correct when using down sampling. It
    touches all areas of darktable, like masks, guided filter, liquify
    controls, crop & rotate, lens and perspective corrections...

    Clarify the three possible workflows. Previous version had a preference
    to choose whether to auto-apply the base curve module. Many questions were
    raised about the intention. The new preference introduces three workflows:

    display-referred : use base-curve module

    scene-referred : use filmic and exposure modules (new default)

    none : use neither base-curve nor filmic

    Filmic RGB is updated to v4 (new color science) with integrated highlight \ 

New Features And Changes

    Add support for curved gradients. This can be helpful when putting a \ 
gradient mask on an image with a horizon line that is curved due to lens \ 
distortion. This can also be for artistic goals.

    Add support for AVIF file format (requires libavif >= 0.7)

    Collect module has two new filters: module and module order.

    The former makes it possible to filter pictures based on the
    activated modules in the history. The latter can be used to filter
    based on the pipe version (legacy up to 2.6 releases or v3.0
    starting with 3.0 release).

    Tag in the Collect module keeps track of the selected images order.

    When a tag is at the first level of the Collect module, any change
    on the images order is kept along with the selected tag.
    This allows to the user to associate a specific order with every image (tag)

    A full rewrite of the pipe ordering has been done. It is now
    possible to change the order of the pipe using a new module giving
    access to the legacy order (order used up to 2.6 releases) and the
    v3.0 order. It is also
    possible to create module order presets which can be freely applied.

    Note that the copy/paste of multi-instances when they have been
    reordered in a way that some other modules are separating them will
    not keep the same order. This was buggy in previous implementation
    when the target image had also been reordered in a non-compatible
    manner or using a different pipe order. In this new versions all the
    multi-instances will be grouped together keeping their relative

    Note that this work has mainly been done to make the implementation
    simpler, safer and that will require less maintenance. Also as this
    implementation records the full pipe order for history and styles it
    will be the ground for proposing different strategies when applying

    The retouch module has a new keyboard shortcut "show or hide \ 
shapes" which can
    be mapped to a key to quickly show or hide shapes. This is in
    addition to the right-click on the image which does the same action.

    The spot removal module keyboard shortcut to show-hide shapes has been renamed
    to "show or hide shapes" for clarity and to be consistent with
    the new keyboard shortcut in the retouch module.

    It is possible to change the color of all overlays (shapes, guides,
    etc), in the darkroom. This may come handy on some images where the gray
    guides were barely visible. The possible colors are now: Grey,
    Red, Green, Yellow, Cyan, Magenta. The colors can be cycled through
    using Ctrl+O.

    In the crop & rotate module, the pan movements can be restricted
    vertically or horizontally using the Shift or
    Control respectively.

    The crop & rotate module now allows format ratios to be entered as
    a float number.

    When using a snapshot view, a flag has been added to clearly show the
    position of the snapshot.

    Improve the falloff and radius of the vignette to 200% for better

    Add a user-defined mode in the white-balance module to keep the last
    modification of the module. It is then possible to go back to the
    last modified setting after selecting another mode (spot for

    Dynamic keyboard shortcuts have been added for combo-boxes making it
    possible to select next and previous values directly from the

    It is now possible to adjust the color picker areas just after
    having created them. This is achieved by dragging one of the four
    little square handles at the corner.

    Tagging improvements: Entry tag(s) creation works now without an image
    selected. It allows the user to create a tag on a virtual node, to insert
    a pipe | character in create tag (menu). The tree display
    shows the newly created tags.

    New variables $(LENS), $(EXIF_EXPOSURE_BIAS), $(VERSION_NAME) and
    $(VERSION_IF_MULTI) have been defined. $(CATEGORYn(category)) works
    now when multiple values on the same image (for example people) and
    accepts 9 levels instead of 3 (for n).

    Four new timestamps are now supported to store the import, last
    export, last change and last print times. Those timestamps are also
    made available in the collection module and so can be used to better
    control of created collections.

    Multiple image drag & drop works now on map view.

    Add new preferences for keyboard shortcuts to control how
    multi-instances are handled (use first or last instance, prefer the
    visible, active or expanded instance). This also fixes some faults
    caused when duplicating or deleting modules, and when selecting
    earlier edits in the history stack.

    Introspection support has been added into darktable. At this time
    this does not bring new features for end-users but it has provided a
    basis for significant simplification of the code. This will provide easier
    integration of new modules and will ensure better interactivity
    consistency between modules.

    Add optional grey-scale export of TIFF for monochrome images.

    Add some tooltip information for tone equalizer.

    Some actions, like cropping, have been made more responsive by triggering a
    fast-pipe mode where the quality of the image is less important
    while dragging the controls.

    Better support for HiDPI icons theme on Windows.

    Add keyboard shortcut for enabling/disabling tooltips Shift+T.

    Better history stack module order (more logical) for newly-imported images.

    Add confirmation when deleting/updating presets.

    It is possible to handle (deleting, applying or exporting) multiple
    styles in the style module.

    Applying a style now supports overwrite mode (it previously could
    only append to the existing history stack). This makes the style module
    consistent with the copy/paste of history.

    Rework the sliders to make then look better (smaller and controls a
    bit more visible).

    Implement undo/redo for orientation changes from the lighttable.

    Exported pictures size should be more conservative and stable when
    flip or orientation is changed.

    Using Ctrl+Click in the blending module drawn masks, it is possible to
    allow continuous creation of masks.

    Continuous mask creation was previously the default in the retouch and spot
    removal modules. For consistency this has been changed and so now one need to use
    Ctrl+Click in these modules as well for continuous mask creation.

    Rejecting an image still keeps the last number of stars. So
    un-rejecting it will recover the previous star rating.

    Improve messages when a database lock is detected to give better
    guidance about the possible solutions, checks to be done for
    recovering from this situation.

    Rework local laplacian implementation for a 2x speed-up.

    Optimize the denoise profile module (bilateral filter) for better

    Many parts of the histogram code have been reworked for better

    A new universal toast message framework has been put in place. This
    is used to display information about changes performed with dynamic
    keyboard shortcuts when the module is collapsed.
    It gives visual information about the change being made
    (like exposure change or new opacity value, etc.).

    The spot removal module has been enhanced to be more consistent with
    the functionality of the retouch module. A new button has been added
    to show/hide shapes. It also now supports continuous shape creation.

    Add a new keyboard shortcut to toggle last snapshot on/off.

    Add a new keyboard shortcut to show/hide lib modules.

    Add a new keyboard shortcut to show/hide drawn masks for the currently \ 
active module

    Allow for more than 500 images in tethered control which is needed
    for time-lapse.

    It is now possible to export masks in TIFF format.

    Duplicate modules now use the new metadata field "version name" in \ 
    of the title field to show a description of each image version

    Fix support of legacy parameters in the basic adjustment module.

    Add integrated database maintenance policy.

Bug fixes

    Better performance when using masks.

    Fix some displayed images issues.

    Fix to allow the shift modifier to be used in dynamic keyboard shortcuts.

    Fix exporting private tags issue with different settings along the path.

    Fix possible freeze on liquify module.

    Fix long text display when no space is available to show all the text by \ 
using an ellipsis.
    This allows the side panels to be reduced in size without adversely
    affecting the UI.

    Fix some crop & rotate issues.

    Smoother transition for gradient shapes.

    Fix the snapshot rotation which could go 180° in a single click.

    Add missing icon for the tone-mapping module.

    Fix color-zone module min & max indicator in edit by area mode.

    Enhance performance of blending and retouch, tone equalizer,
    color-picker modules when masks are set on/off and/or removing some
    unnecessary reprocessing.

    Various minor fixes to the shape selection buttons in the retouch module

    Fix displayed curve in denoise profile Y0U0V0 mode.

    Film rolls can be ordered by folder name or id (so in chronological

    Fix gphoto camera detection procedure.

    Fix the opacity issue (second attempt) which led to a mask having no effect.

    Fix a possible infinite loop in the slideshow module.

    Fix a possible out-of-bound indexing in the chromatic aberration module.

    Fix issues when importing duplicates.

    Fix possible race condition in tone equalizer module.


    A known issue when using two computers to edit images. If the three
    following options activated:
        update database from selected xmp files
        write sidecar file for each image
        check xmp on start

    then darktable will write the XMP for each images each time you switch
    from one computer to another. This is due to an issue with the way
    timestamps are implemented and is being fixed for 3.4.

    You can follow the discussion here:

    A safe option if you are in this specific case is to wait to 3.4 release
    planned at the end of year.

    The histogram has been deactivated on the print view because after
    lot of work on the histogram code it was not possible to have it
    ready for this view. The work on this part is almost ready now so
    the print view will get back its histogram for the 3.4 release.

    An integration test suite has been added. This will ensure better
    quality and keeping old edits intact. This is an important tool for
    developers to ensure a rework of a module for performance reason
    for example does not change visually the image.


    API changed to 6.0.0

    facebook, flickr, and picasa removed from types.dt_imageio_storage_module_t.

    piwigo added to type.dt_imageio_storage_module_t.

    notes and version_name metadata fields added to types.dt_lua_image_t data type.

    Added 4 new properties to dt_collection_properties_t,

    added darktable.gui.panel_get_size and darktable.gui.panel_set_size functions
    to set the width of the left or right panels and the height of the bottom panel.

    fixed is_password field of entry widget to work according to the API manual, so
    now when it is set to true the field is hidden.

    Added function darktable.gui.views.lighttable.is_image_visible to check if \ 
an image
    is visible in lighttable view.

    Added function darktable.gui.views.lighttable.set_image_visible to force an
    image to be visible in lighttable view.

    Added a lua scripts installer to the default luarc

Changed Dependencies
RawSpeed changes

    New Panasonic 'V6' decompressor
    Huffman table implementations rewrite/cleanup
    Fuji compressed raw decompressor performance improvements (-13% wall clock)
    Canon CRW decoding performance improvements (-15% wall clock)
    DNG LJpeg decompressor support for images with 2 components / pixel
    DNG Deflate decompressor support for images with more than 1 component / pixel
    Fuji compressed raw decompressor support for 16-bit raws
    Continuation of ongoing collaboration with LLVM, highlights include many
    little steps towards making it possible to auto-vectorize GoPro's VC5
    decompressor loops, Canon S-RAW interpolator loops; more changes upcoming.

Camera support, compared to 3.0.0
Base Support

    Fujifilm FinePix S1
    Fujifilm GFX 100 (compressed)
    Fujifilm X-Pro3 (compressed)
    Fujifilm X-T200
    Fujifilm X-T4 (compressed)
    Fujifilm X100V (compressed)
    Hasselblad H4D-50
    Hasselblad X1D II 50C
    Hasselblad X1DM2-50c
    Nikon COOLPIX P950 (12bit-uncompressed)
    Nikon D780 (12bit-compressed, 14bit-compressed)
    Nikon Z 50 (12bit-compressed, 14bit-compressed)
    Olympus E-M1MarkIII
    Olympus E-PL10
    Panasonic DC-FZ10002 (3:2)
    Panasonic DC-GX880 (4:3)
    Panasonic DC-S1 (3:2)
    Panasonic DC-S1H (3:2)
    Panasonic DC-S1R (3:2)
    Panasonic DC-TZ91 (4:3)
    Panasonic DC-TZ95 (4:3)
    Panasonic DC-TZ96 (4:3)
    Panasonic DC-ZS80 (4:3)
    Panasonic DMC-FZ40 (1:1, 3:2, 16:9)
    Panasonic DMC-FZ45 (1:1, 3:2, 16:9)
    Sony ILCE-6100
    Sony ILCE-9M2

White Balance Presets

    Canon EOS 77D
    Canon EOS 9000D
    Fujifilm X-E3
    Fujifilm X-T30
    Fujifilm X-T4
    Nikon COOLPIX P1000
    Olympus E-M1MarkIII
    Olympus E-PL6
    Olympus TG-5
    Panasonic DC-GH5
    Panasonic DC-TZ95
    Panasonic DC-TZ96
    Panasonic DC-ZS80
    Samsung NX1
    Sony ILCE-7RM4

Noise Profiles

    Canon EOS-1Ds
    Fujifilm X-H1
    Fujifilm X-T100
    Fujifilm X-T30
    Fujifilm X-T4
    Nikon COOLPIX P1000
    Nikon Z 50
    Olympus E-510
    Olympus E-M1MarkIII
    Olympus E-M5 Mark III
    Olympus TG-6
    Panasonic DC-GF9
    Panasonic DC-GX800
    Panasonic DC-GX850
    Panasonic DC-GH5
    Panasonic DC-TZ95
    Panasonic DC-TZ96
    Panasonic DC-ZS80
    Sony DSC-RX100M6
    Sony DSC-RX100M7
    Sony ILCE-6600
    Sony ILCE-7RM4
    Sony ILCE-9
    Sony ILCE-9M2


    European Spanish
    Brazilian Portuguese