Skip to content

Releases: rfordinal/darktable-agentic

5.8.0+agentic.25 - retouch ellipse+path shapes, viewport variants

Choose a tag to compare

@rfordinal rfordinal released this 30 Aug 18:44

Ubuntu 24.04 (noble) .deb build of the agentic-mcp fork. Pairs with darktable-mcp v1.0.38 (https://github.com/rfordinal/darktable-mcp/releases/tag/v1.0.38) - install both together.

Highlights since v5.8.0-agentic.12:

  • Retouch module: ellipse and path shape_type support (create/update/list), viewport-relative variants with full coordinate backtransform
  • Mask groups: attach/detach existing shapes to a module's blend group, rename_mask, get_mask geometry read, delete_mask
  • set_viewport / restore_viewport: programmatic darkroom zoom/pan with wait-for-pipe, fixes capture_viewport resolution cap
  • add_path_mask_in_viewport + render_module_mask generic overlay renderer
  • Blend params generic bind (opacity/blend_mode/mask_mode) usable on any module, not just retouch
  • LUT tooling C-side support (get_conf_string, get_blend_params/set_blend_params)
  • Several coordinate-frame (mask-space vs display-space) correctness fixes

See CLAUDE.md in the repo for full per-change detail.

5.8.0+agentic.12 - backtransform_point and retouch_update_shape Lua bindings

Choose a tag to compare

@rfordinal rfordinal released this 26 Jul 09:48

Fork of darktable 5.8.0 adding the darktable.develop Lua namespace used by darktable-mcp.

New in this build

  • dt.develop.backtransform_point(x, y[, len1][, len2]) - converts a processed/display-frame normalized point into the pipe-input frame darktable's masks are actually stored in, using the same dt_masks_get_image_size plus dt_dev_distort_backtransform path the GUI drag handlers use. Optional lengths (radius, feather) convert through a second offset point and normalize against mindim(iwidth, iheight), matching circle.c's own convention.

    Without this, a programmatically placed mask point lands wrong whenever orientation, crop, rotate or lens correction is active. An EXIF-portrait raw swaps width and height on its own, which was enough to move a target from a neck to a chest.

  • dt.develop.retouch_update_shape(...) - move or resize an existing retouch circle in place, keeping its formid, rather than delete plus recreate. Geometry commits through dt_dev_add_masks_history_item, the same mechanism as circle.c's own drag-commit.

Both are registered alongside the existing retouch_add_shape / delete_shape / list_shapes bindings and run on the GUI thread via dt_lua_gtk_wrap.