We're proud to announce the new feature release of darktable, 5.6.0!

The github release is here: [https://github.com/darktable-org/darktable/releases/tag/release-5.6.0](https://github.com/darktable-org/darktable/releases/tag/release-5.6.0).

To build from source, do not use the autogenerated tarball provided by GitHub on the release page, download our tar.xz file instead. If you're just building for yourself without creating a package for some distribution, then using source code cloning in git is an even more convenient way.

The checksums are:

```
$ sha256sum darktable-5.6.0.tar.xz
??? darktable-5.6.0.tar.xz

$ sha256sum darktable-5.6.0-x86_64.dmg
??? darktable-5.6.0-x86_64.dmg

$ sha256sum darktable-5.6.0-arm64.dmg
??? darktable-5.6.0-arm64.dmg

$ sha256sum darktable-5.6.0-win64.exe
??? darktable-5.6.0-win64.exe

$ sha256sum darktable-5.6.0-woa64.exe
??? darktable-5.6.0-woa64.exe

$ sha256sum darktable-5.6.0-x86_64.AppImage
???  darktable-5.6.0-x86_64.AppImage
```

When updating from the stable 5.4 series, please bear in mind that your edits will be preserved during this process, but the new library and configuration will no longer be usable with 5.4.

You are strongly advised to take a backup first.

#### Important note: to make sure that darktable can keep on supporting the raw file format for your camera, *please* read [this post](https://discuss.pixls.us/t/raw-samples-wanted/5420?u=lebedevri) on how/what raw samples you can contribute to ensure that we have the *full* raw sample set for your camera under CC0 license!

Since darktable 5.4:

- 1561 commits to darktable+rawspeed
-  705 pull requests handled
-   63 issues closed

_Please note that the darktable documentation is not currently
complete for release 5.6 and contributions are greatly
appreciated. Please see the [project
documentation](https://github.com/darktable-org/dtdocs#contributing)
for more information on how to contribute._

## The Big Ones

The following is a summary of the main features added to darktable
5.6. Please see the user manual for more details of the individual
changes (where available).

- Added optional AI subsystem (build with `-DUSE_AI=ON`). AI features
  are disabled by default in preferences and can be enabled at runtime
  without restarting. When disabled, no ONNX Runtime libraries are
  loaded and no AI-related activity occurs. Models are downloaded from
  a configurable repository and managed through the AI preferences tab.

- Added install scripts for Linux and Windows that set up GPU
  acceleration for the new AI features. The scripts detect the user's
  GPU vendor (NVIDIA, AMD or Intel) and install the matching GPU
  runtime. They can be run from a local checkout or fetched and run
  online with a single command – see the [GPU acceleration
  page](https://docs.darktable.org/usermanual/development/en/special-topics/ai/gpu-acceleration/)
  in the user manual for details. macOS users and most Windows users
  do not need to run anything; GPU acceleration is already bundled.

- Added AI object mask tool in the darkroom mask manager. Uses SAM2.1
  or SegNext model for interactive object segmentation – click on an
  object to generate a precise mask. Supports both foreground and
  background prompt points with iterative refinement. The encoder runs
  once per image (GPU-accelerated via the AI backend when available),
  and the lightweight decoder produces masks interactively. Each click
  runs iterative refinement passes that tighten the mask, plus an
  optional DenseCRF refinement pass for clean, edge-aware boundaries.
  The generated mask can optionally be exported as a PNG for use
  with the *external raster masks* module when finer edge detail is
  needed than the vectorized mask provides.

- Added neural restore module in the lighttable/darkroom sidebar
  covering three AI-based tasks: raw denoise, denoise, and
  upscale. Default models: NIND UNet (denoise), RawNIND UtNet2 (raw
  denoise), and RealPLKSR 2x/4x (super-resolution), all running on the
  ONNX backend. Additional models such as NAFNet (denoise) and BSRGAN
  (upscale) are available from the model repository and can be
  installed manually. Features include an interactive before/after
  split preview with area picker, a strength slider (DWT-based texture
  recovery for RGB denoise; linear source/denoised blend for raw
  denoise), batch processing with tiled inference, and automatic
  library re-import with image grouping and tag propagation from the
  source image. Raw denoise writes a DNG (CFA Bayer or LinearRaw);
  image denoise and upscale write a TIFF embedding the output ICC profile.
  GPU acceleration is inherited from the AI backend. If GPU inference
  fails (out of memory, unsupported operator, execution provider crash),
  darktable automatically retries on CPU.

- Added `colorharmonizer` module that applies color harmony
  corrections in UCS color space, rotating hues toward a target
  harmony structure (complementary, split-complementary, triadic,
  tetradic, etc.). The saturation of target hues can be controlled,
  and custom-defined harmonies with an arbitrary number of anchor
  nodes at any angle are also supported. Options are provided to
  control the intensity of the effect, protect neutral colors, and
  apply a Gaussian filter to smooth harsh transitions. The module can
  be synced with the vectorscope in RYB mode, with harmony and
  rotation angles controllable directly from the vectorscope. Both CPU
  and OpenCL (GPU) implementations are provided.

- Added support for HEIF export. User can choose lossless or lossy
  compression, all practically supported color depths (8/10/12 bit),
  all supported color subsampling options.

## UI/UX Improvements

- In the crop module, the crop aspect ratio is added to the dimensions
  in the crop area preview.

- Added the ability to pin any image from the filmstrip in the second
  darkroom window. Images can be pinned directly from the 2nd window,
  via drag&drop from the filmstrip and via keyboard shortcuts. Two
  new actions are the added:
    - Toggle pinned state for currently developed image
    - Pin current image in second view

- Allow switching between point/area color picker directly on canvas
  with a simple Ctrl+Click.

- When moving pictures from a collection we switch to the target
  collection only if we did not change manually to another collection
  during the move and the current collection is now empty.

- When copying pictures from a collection we switch to the target
  collection only if we did not change manually to another collection
  during the copy.

- In Color Calibration module the calibration box is now initialized
  on the current bounding box. That is, if a zoom is effective the
  calibration box will be fully visible and won't require to zoom out.

- Make the slider background darker to gain some contrast making them
  easier to differentiate from the other labels.

- Introduce a condensed mode for the panel's controls widgets. This
  mode is off by default and can be select in miscellaneous interface
  preference.

- Added a 2-up scope showing both the waveform and vectorscope. This
  allows for a simultaneous understanding of both the lightness and
  chromaticity of an image.

- Support rendering and caching higher resolution (6K or 8K) thumbnail
  or full-screen preview images in lighttable view. Previously, for
  displays larger than a 4K, darktable would render a full-resolution
  preview then downscale it. These higher resolution previews also
  allow for less jumpy zooming in of high megapixel files.

- Increase the resolution of the darkroom view's preview-resolution
  images from 720x450 to 1440x900. This produces better data for
  various situations, including in scopes and the color picker.

- Use darktable icon in desktop environment when running under Wayland
  on a KDE-like system. Previously the window manager would use a
  generic icon.

- Use server-side decorations (SSD) for windows when the user's window
  manager is capable of this, to make window decorations consistent
  with other applications. If SSD is not implemented (Gnome/Mutter
  under Wayland), use client-side decorations (CSD).

- Added a welcome screen to help users understand and set the most
  relevant configuration options on the first run.

- Added touchpad gestures to darkroom and lighttable culling layouts,
  including pinch zooming and two-finger panning.
  Smartphone-like simultaneous pinch zooming and two-finger panning
  are now possible on Linux and Windows.
  Zooming gestures are limited to 100%, additionally pressing CTRL
  enables zooming up to 1600%.
  Caution: this disables the scroll gesture for zooming on MacOS
  on trackpad and magic mouse. To restore the former behaviour
  disable touchpad gestures in preferences dialog.

- Enabled shortcuts for some existing buttons in duplicate manager,
  snapshots, and AgX modules.

- Enabled shortcuts to cycle through module groups, modules and
  module instances.

- Added a configuration option to toggle the filmstrip auto-center
  behavior. Enabled shortcuts to toggle filmstrip auto-centering and
  to explicitly recenter the filmstrip on the current image.

- The radius calculated for capture sharpening is now using only the
  central 60% of the image as lenses are mostly sharper here.
  For xtrans sensors the radius has been slightly increased as
  images tend to be more blurred.

- The tone equalizer now visualizes an invalid curve (solver maths)
  also for old edits.

- Add `--library <path>` command-line option to darktable-cli that
  allows specifying a `library.db` database file to read image processing
  history stacks from instead of requiring XMP sidecar files, for people
  who do not use XMP sidecar files.

- Added display name to the available sort options for film rolls.

- When creating a new workspace from the workspace dialog, settings
  can optionally be copied from an existing workspace as a template.
  The workspace-specific configuration is duplicated with paths,
  labels, collection history, and similar keys cleared so the new
  workspace keeps its own library database instead of reusing the
  source library. The workspace dialog allows selecting a workspace as
  the default for startup; if one is chosen as default, the dialog is
  not shown on the next launch until “allow for multiple workspaces”
  is enabled again in preferences (storage).

- Use native mouse cursors throughout the UI. Cursors such as the
  busy spinner, hand, crosshair and resize handles now match the
  operating system's look, most noticeably on macOS where the busy
  cursor previously appeared as an old-style wristwatch instead of
  the familiar spinning wheel.

- Themes can now style expanded modules differently from collapsed
  ones, via a new `dt_module_expanded` CSS class.

## Performance Improvements

- Increased performance for OpenCL guided filter by internal tiling.

- Increased performance of `blurs` module for both CPU and OpenCL code
  paths for large radii, which made it possible to increase Gaussian
  blur's maximum radius from 128px to 256px.

- Increased performance of `overlay` (composite) module and added
  OpenCL code path.

- Avoid superfluous pixelpipe runs for faster darkroom processing
  and when selecting history entries.

- Improvements to mask distort efficiency via incremental caching and
  reduced malloc/free cycles.

## Other Changes

- Added 2 apertures, f/0.95 and f/1.2, to the aperture section of the
  presets dialogue.

- Added Canon Automatic Lighting Optimizer support for CR3-format
  images.

- Added PNG support (8/16-bit) for external raster masks.

- Removed `Neo` Intel and `pocl` OpenCL drivers from blacklist,
  the `AMD-APP` driver has been added as not supported by AMD for 10yrs.

- RustiCL is the preferred OpenCL driver instead ROCm on AMD systems.

- In the styles module, a new option has been added to hide the
  preview in the tooltip. Additionally, a module preference now allows
  you to change the preview size, with two options available: default
  and large.

- Improved debugging option --dump-diff-pipe for those of you
  interested in OpenCL code and debugging.

- Added the possibility to vectorize the bitmap displayed in the
  External Raster Mask module. The vectorized mask is added into the
  Mask Manager module as a path object ready to be used as any other
  masks.

- Remove the (unbound by default) keyboard shortcut to cycle through
  each histogram mode, and within each mode to cycle through its
  options. This was a relic of when there were fewer scopes and they
  were not accessible by shortcuts.

- Increased the limit on the number of offset days in geotagging module
  to correct an incorrect camera timestamps from 99 to 9999 days.

- Added a new collection filter for image duplicates.

- The masks in restricted edit mode are now displayed on-canvas as
  dashed lines to ensure proper feedback.

- Several improvements to AgX:
  - Default hue preservation is now 60% in most presets, reducing
    strong hue shifts in bright highlights.
  - Default contrast has been increased and toe/shoulder power tuned
    to more closely match sigmoid's defaults.
  - Added sigmoid-like presets that closely match sigmoid's tone
    curve.
  - Removed the punchy presets (except for the blender-like variant,
    whose parameters still follow Blender's settings).
  - Improved the toe/shoulder warning tooltips for clarity.
  - The scene-referred preset is no longer applied exclusively to HDR
    images.
  - Primaries selection is now visible even when "disable adjustments"
    is checked.

- For non-raw images with gamma corrected data we do the initial
  scaling in linear mode for less artifacts.

- Added a new option to filter images by capture month in collections
  and collection filters.

- Exif tags which are added to the metadata editor are now read from
  the image file on import. For already imported images this can be
  performed by an Exif refresh.

- The active preset name is now displayed in the header of suitable
  library modules (import, export). This can be turned off in the
  "miscellaneous" section in the preferences ("automatically update
  module name").

- A new log history viewer has been added to the bottom toolbar,
  providing a persistent record of all dt_control_log messages (e.g.,
  export progress, library updates, warnings). Click the speech-bubble
  icon in the center-bottom-right area to open a scrollable popover
  showing all logged messages with timestamps, automatically
  deduplicating consecutive identical entries.

- The OpenCL preferences interface and the internal handling and
  detection of OpenCL devices and drivers got an overhaul.  Users can
  switch on "OpenCL fast mode" in preferences leading to slightly more
  differences compared to CPU output for sligtly more performance.
  The per-device conf settings got an update, see the docs for
  reference.  Support of atomic OpenCL code and OpenCL 3.x is
  autodetected.

- Added two HTJ2K compression options to EXR export. Since they are
  supported starting with libopenexr 3.4, these options will only be
  present in darktable if it is linked against a library version 3.4
  or later.

## Bug Fixes

- Properly apply the iop-order when applying a style at export
  time. This also fixes the style preview when flying over styles in
  the style module.

- Drawn mask fixes:
  - Masks do not shift position when crop is toggled on/off.
  - Pixel-perfect node hovering and editing up to maximum (16x)
    magnification.
  - Fix Bezier handle misassignment in vectorized masks causing
    distorted curves on complex shapes (AI object masks and
    external raster masks).

- If a tag category is marked as private, all tags and subcategories
  under it are also treated as private.

- Fix occasional geolocation assignment errors in darktable's locations
  module involving polygon-shaped locations

- Prefetch correctly sized thumbnails when user has display scaling
  enabled.

- Honor the default configuration preference "never" for "use raw
  instead of jpeg from size": for unaltered images, always generate
  thumbnails/previews from embedded JPEGs rather than processing the
  raw file. If you prefer the prior behavior, which processed the raw
  file rather than upscale the embedded JPEG for higher resolution
  thumbnails/previews, use the new configuration option "auto".

- In Quick Access Panel, "go to full version..." now reliably scrolls
  to the correct module.

- In filmstrip, keyboard shortcuts for rating/color labels/reject now
  apply to the thumbnail under the cursor (including overlay elements)
  instead of the currently opened image.

- Fix for usage of incorrect color profiles on secondary monitors on
  Windows.

- Various fixes for visibly wrong colors after chaning a profile in
  colorin or colorout.

- Fixed unexpected localization of user's defined preset name and
  properly localize the module name displayed in the preset dialog.

- Fixed a possible transient display of the crawler dialog while the
  splash screen is active.

- Fixed improper mask mode displayed in the mask manager menu.

- Fixed an issue where while creating a mask from mask manager and
  still in creation mode the mask was not following the mouse when
  moving over the darkroom. It was then not possible to place the mask
  at the right position.

- Fixed an issue of style migration. A style created before a new
  module is introduced and integrating a specific module order was not
  properly handled. We now properly migrate the embedded module order
  to ensure all modules are described.

- Fixed an occasional bug that dragging exposure change regions in
  histogram, waveform, or RGB parade scopes would adjust in the
  opposite of the expected direction. This occurred when the user had
  not yet selected a module group containing the exposure module.

- Fixed a bug which showed an extraneous toast message in the center
  view when dragging in the vectorscope.

- Fixed a wrong WB when reloading defaults after changing manually the
  WB. This was due to a missing reset letting the Color Calibration
  module starting with a wrong WB.

- Avoid speckles when creating drawn masks using the vectorize option
  in the Raster File module.

- Fixed spurious export size is reduced because of memory restrictions
  issue.

- Fixed darktable on startup failing to delete left over database
  lockfiles for non default workspaces.

- Fixed a rare bug which appeared when scale-pixels module was moved
  above the tone-mapper while applying a shift in "rotate and
  perspective" module.

- Fixed white and middle-grey patches being swapped for Datacolor
  SpyderCheckr 48 in the Color Calibration module.

- Fixed tone curve masks affecting areas outside of a drawn mask.

- Fixed subtle errors in Markesteijn and VNG demosaicers.

- All RAW space modules including demosaic allow positioning of main
  darkroom window with a precision of one pixel.

- When all midi devices are disabled portmidi won't be initialized.

- Fixed a bug that lead to ignored or stuck shortcuts

- Various stability fixes for OpenCL and CPU pixelpipe processing.
  Less differences between CPU and OpenCL processing.

- Ensure that the counter used to disable GUI loop is handled
  atomically. In some very rare cases the GUI could freeze due to
  unbalanced setting of the counter.

- Fixed collection range selection not working if the collection is in
  descending sort order.

- Fix use-after-free bug in tagging code which caused an instant crash

- Fixed scroll direction in rotate and perspective module: scrolling
  up/down now increases/decreases the selection circle size, matching
  how resizing drawn masks works.

## Lua

### API Version

- API version is now 9.7.0

### New Features

- The lua-scripts are now included in the darktable release, making
  them available for all users.  If the lua-scripts are already
  installed, they will be used instead of the included ones.  The
  luarc file in the user configuration directory is no longer
  required, but it can still be used for special requirements.

  If the user does not want the scripts, then can be disabled in the
  Lua options section of the preferences.

- Lua now has a global variable, darktable_gui_safe, that gets set
  when it is safe to install a lib.  This is needed because of a
  startup race condition that indicates the view is lighttable before
  it is initialized.

- Image metadata fields added using the Metadata Editor module are
  accessible as a dt_lua_image_t field with the same name as the title
  assigned in Metadata Editor.  Trying to access a dt_lua_image_t
  metadata field that does not exist is a fatal error.  The added
  metadata field is populated when the image is imported or with the
  image exif data is refreshed.

- darktable.metadata.exists() has been added to the API to check if
  the dt_lua_image_t metadata field exists before trying to access it.

- Added Lua AI API (`darktable.ai`) for scripting AI model inference.
  Provides tensor creation and model loading with GPU provider
  selection. Image I/O covers loading from a file or directly from
  the darktable library (with the full edit pipeline applied), raw
  CFA sensor data access, and DNG output with EXIF preservation.
  Enables custom AI workflows beyond the built-in modules – e.g.
  classification or experimental denoise/upscale models from
  community repositories.

### Bug Fixes

- force cache write after mipmap generation

### New Scripts

- contrib/select_non_existing - adds a button to the selection module
  to select images in the lighttable that dont have corresponding
  files on disk

- contrib/selected_image_visible - adds a shortcut and an action
  button to make the currently selected image in lighttable visible.

- contrib/toggle_group_view - add a shortcut and an action button to
  toggle between a group selected in lighttable and a view containing
  only the grouped images with the group expanded.

- official/use_paired_jpg_as_mipmap - for images that don't have a
  full size embedded JPG preview the JPG from a RAW+JPG pair can be
  copied to the mipmap cache and used as the full resolution mipmap to
  speed up cache generation.  This is useful for Canon EOS R series
  cameras that don't embed full size previews.

- official/select_duplicates - add a shortcut and a selection button
  to select duplicate images

- official/recent_bookmarks - add recently edited images to the system
  recently used files for quick access

- official/select_raw_non_raw - add selection buttons to select raw or
  non-raw images from the lighttable

- official/scheduler - a simple FIFO scheduler for cooperative
  multitasking

- official/group_persistence - add functional tags containing group
  information to image groups so that they can be rebuilt if the
  database is lost.

- official/select_unaltered - add a selection button to select images
  that have been imported but not opened in darkroom.

- official/selection2collection - create a temporary collection from a
  selection.  The collection is automatically forgotten when darktable
  exits.  The user may change this in the Lua options preferences.

- official/extract_burst_roll_images - add a selection button to
  select Canon burst roll images and an action button to extract the
  embedded images and group them with the burst roll image.  Requires
  dnglab.

- official/auto_straighten - automatically straighten an image loaded
  into darkroom using them embedded pitch and roll data.  Requires
  exiftool

- examples/ai_denoise - an example script demonstrating how to use the
  new Lua AI API to denoise a non-raw image

- examples/ai_raw_denoise - an example script demonstrating how to use
  the new Lua AI API to denoise a raw image.

### Other Lua changes

- the Lua options in preferences have been reworked so that there are
  global preferences and preferences for each script that registers
  them

- scripts_installer has been removed since the scripts are now bundled
  with the darktable release.

## Notes

- When exporting to AVIF, EXR, JPEG XL, or XCF, selecting specific
  metadata (e.g. geo-tag or creator) is not currently possible. For
  AVIF, EXR, JPEG XL, and XCF formats, darktable will not include any
  metadata fields unless the user selects all of the checkboxes in the
  export module's preference options.

- Starting with release 5.4, macOS versions older than 14.0 are no
  longer supported on Apple Silicon Macs, nor older than macOS 15 on
  Intel Macs.

## Changed Dependencies

### Mandatory

- potrace 1.16 is a new requirement

### Optional

- ONNX Runtime 1.18+ for AI features

- libarchive for AI model extraction

## Camera support, compared to 5.4

### Base Support

- Canon EOS Hi
- Fujifilm X-T30 III (compressed)
- Hasselblad H4D-40
- Hasselblad H6D-100c
- Hasselblad X2D II 100C
- Leica M Monochrom (DNG)
- Nikon Coolpix B700 (12bit-uncompressed)
- Nikon Coolpix P1000 (12bit-uncompressed)
- Nikon Coolpix P1100 (12bit-uncompressed)
- Nikon Coolpix P950 (12bit-uncompressed)
- Nikon D2X (12bit-compressed)
- Nikon E5000 (12bit-uncompressed)
- Panasonic DC-GF90 (4:3)
- Panasonic DC-TZ92 (4:3)
- Panasonic DC-TZ93 (4:3)
- Panasonic DC-TZ96D (4:3)
- Panasonic DC-ZS80D (4:3)
- Ricoh GR IV HDF (DNG)
- Ricoh GR IV Monochrome (DNG)
- Sony ILCE-7M5
- Sony ILME-FX2

### White Balance Presets

- Canon EOS 90D
- Nikon Coolpix P1100
- Nikon D2Hs
- Nikon Df
- Nikon Z f
- Ricoh GR IV
- Ricoh GR IV HDF
- Sony ILCE-1M2
- Sony ILCE-7CR
- Sony ILCE-9M2

### Noise Profiles

- Canon EOS 3000D
- Canon EOS 4000D
- Canon EOS Rebel T100
- Fujifilm X-T30 II
- Leica M9
- Nikon Coolpix P1100
- Nikon Df
- Nikon Z50_2
- Nikon Z5_2
- Panasonic DC-S5M2
- Pentax K-500
- Ricoh GR IV
- Ricoh GR IV HDF
- Sony ILCE-7M5

### Missing Compression Mode Support

- Apple ProRAW DNGs
- CinemaDNG lossless (Blackmagic, some DJI, etc.) and lossy (Blackmagic)
- DNG 1.7 using JPEG XL (Adobe enhanced, Samsung Expert RAW)
- Fujifilm lossy RAFs
- Nikon high efficiency NEFs
- Phase One other than IIQ L
- Sony ARW 4.0/5.0 downsized lossless ("M" for full-frame, "S" for full-frame & APS-C)
- Sony ARW 6.0 compressed and compressed (HQ)

### Suspended Support

Support for the following cameras is suspended because no samples are available on https://raw.pixls.us:

- Creo/Leaf Aptus 22(LF3779)/Hasselblad H1
- Fujifilm IS-1
- Kodak EasyShare Z980
- Leaf Aptus-II 5(LI300059)/Mamiya 645 AFD
- Leaf Credo 60
- Leaf Credo 80
- Olympus SP320
- Phase One IQ250
- ST Micro STV680

## Translations

- Czech
- German
- European Spanish
- Finnish
- French
- Hungarian
- Japanese
- Norwegian Bokmål
- Dutch
- Polish
- Brazilian Portuguese
- Russian
- Slovenian
- Albanian
- Swedish
- Ukrainian
- Chinese (Simplified)
- Chinese (Traditional)
