Commit Graph
10549 Commits
Author SHA1 Message Date
SBaksa 974c32ddc6 Patch: History names as the tool's (#12117)
select.lasso takes an optional historyName; the Patch tool sends "Patch Tool" so its
lasso is that step (the Lasso tool keeps "Lasso"). paint.patch records "Patch Selection"
in every mode; the content-aware job keeps its progress text.
Tests: patch_history_names_tests (engine) and patch_tool_history_names_tests (ui-egui).
2026-11-08 13:09:17 +11:00
David Mann 9ac3fa22b2 Merge pull request #9280 from davidmann4/fix/crop-invalid-rect
Crop: refuse an invalid explicit rectangle instead of cropping to the selection (#9279)
2026-11-08 01:50:23 +01:00
David Mann 940b352ca0 Merge pull request #9256 from davidmann4/fix/scale-effects-bevel-texture
Scale Effects and Image Size scale Bevel & Emboss Texture's scale (#9254)
2026-11-08 01:50:08 +01:00
David Mann 2e9a1d267e Merge pull request #9233 from davidmann4/fix/crop-shift-letter-keys
Crop: Shift+H, Shift+P and Shift+I switch tools again (#9232)
2026-11-08 01:49:51 +01:00
David Mann 0059bd597e Merge pull request #3498 from davidmann4/feat/auto-219-8-panel-command-check
xtask: check that every panel button routes through a command id (#3495)
2026-11-08 01:48:45 +01:00
David Mann ce517049a7 Merge pull request #11221 from yoriswind/codex/transform-hit-zones-11097
Use whole-edge Free Transform handles and consistent rotate cursors
2026-11-08 01:41:27 +01:00
David Mann 5c1b628973 Merge pull request #9970 from ljkx/feat/photo-filter-last-settings
Photo Filter opens at its last settings (#9879)
2026-11-08 01:40:42 +01:00
David Mann 3aa1d9f432 Merge pull request #12164 from ElNeMeR70/fix/patch-sample-all-layers-default-on-12125
Patch tool: start Content-Aware Sample All Layers on (#12125)
2026-11-08 00:41:59 +01:00
47e14b5da2 Photo Filter keeps only Preserve Luminosity from its last OK (#9970)
#9970 reopened Image > Adjustments > Photo Filter... at the filter, colour,
density and Preserve Luminosity of its last OK. Measured in the reference
application: after OK at 60, 70 and 74 %, with a preset or with Color and a
custom colour, it reopens every time at Warming Filter (85), the orange
swatch and 25 %; only Preserve Luminosity carries over (off after an OK with
it off, on after an OK with it on). Opening now starts from the neutral
settings and takes just that one value from the last OK; Alt still reopens
at all the last settings (#8900). Tests and the ui-parity row follow the
measured behaviour.

Co-Authored-By: ljkx <177671075+ljkx@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 00:30:59 +01:00
David Mann 153fcff8c3 Merge pull request #7121 from texjer/feat/camera-raw-sidecars
Camera Raw: Done saves the raws' settings to their sidecars without opening them
2026-11-08 00:30:42 +01:00
David Mann 36a754da5c Merge pull request #12173 from hectorviov/fix/sampler-drag-gestures
Color Sampler: a new point lands where the drag ends, markers follow the pointer, a click on a point moves it, Escape cancels (#11729)
2026-11-08 00:30:07 +01:00
David Mann 15be79be5e Merge pull request #9058 from Gotya-OFFCIAL/raw-hasselblad-3fr
raw: decode Hasselblad 3FR/FFF (X2D II 100C, uncompressed)
2026-11-08 00:29:05 +01:00
David Mann be26364ebc Merge pull request #12093 from yoriswind/codex/count-psd-resource-11759
Preserve Count groups in PSD resource 1080
2026-11-08 00:28:20 +01:00
David Mann 2da9714b74 Merge origin/main into feat/photo-filter-last-settings
# Conflicts:
#	crates/ui-egui/src/panels/smart_ui.rs
#	docs/ui-parity.md
2026-11-08 00:16:29 +01:00
David Mann 49eabafbcb Merge pull request #11238 from NaufalDzz/layer-filter-find-layers
Select › Find Layers opens the Layers panel's Name filter (#10884)
2026-11-08 00:13:30 +01:00
David Mann 5525dc41ae Merge pull request #9306 from FartmanAndBurps/contrib/work-path-live-preview
Smooth live preview for Work Path dragging
2026-11-08 00:12:23 +01:00
David Mann d921488bc3 Merge pull request #11700 from TrevorBrown-dev/fix/magnetic-lasso-fastening-spacing-11687
Magnetic Lasso: fastening points are spaced as the reference measures (#11687)
2026-11-08 00:10:54 +01:00
David Mann 6d5254d319 Merge pull request #12134 from hectorviov/fix/atn-droplet-print-gradient-tool
Actions: map Create Droplet and cover the Gradient tool's recorded steps (#10710)
2026-11-08 00:01:17 +01:00
David Mann d438e97467 Merge pull request #10766 from yoriswind/codex/atn-menu-intent
Add five Classic Actions panel commands
2026-11-07 23:59:31 +01:00
David Mann f66bf92f42 Merge pull request #12190 from davidmann4/fix/11906-bg-eraser-alt-eyedropper
Background Eraser: Alt+click picks the foreground colour (#11906)
2026-11-07 23:54:39 +01:00
David Mann ebfd46de82 Merge pull request #12139 from hectorviov/fix/transform-relative-position
Free Transform: relative positioning toggle between X and Y (#11679)
2026-11-07 23:53:13 +01:00
David Mann 5e5884603c Merge pull request #12092 from yoriswind/codex/brush-behind-key-11894
Select Behind with Shift+Alt+Q for Brush and Pencil
2026-11-07 23:51:32 +01:00
David Mann 13d0d486e4 Merge pull request #12166 from hectorviov/fix/move-target-layer-default
Move tool: Auto-Select target defaults to Layer; dropdown lists Group, Layer (#11380)
2026-11-07 23:49:21 +01:00
David Mann 2385489d4f Merge pull request #12110 from hnoerenberg/fix/type-default-size-50pt-12051
fix(type-tool): start the type tool at 50 pt
2026-11-07 23:48:08 +01:00
David Mann 8b1e614e7b Merge pull request #11856 from RickiNano/fix/11810-brush-reset-default-tip
Reset Tool gives the Brush a 13 px soft tip (#11810)
2026-11-07 23:45:04 +01:00
David Mann 977f80dc42 Merge origin/main into PR #9058 (raw: Hasselblad 3FR/FFF)
# Conflicts:
#	docs/gaps.md
2026-11-07 23:30:32 +01:00
David Mann 5d0c8ce8c3 Merge pull request #8140 from Tungtono/feat/psd-puppet-warp-2
PSD: Photoshop's Puppet Warp smart filter, drawn with the mesh the file stores
2026-11-07 23:29:51 +01:00
David Mann c976762718 Merge pull request #5238 from bommerts/codex/live-mixer-brush-delay
Render live painting and canvas navigation in the input frame
2026-11-07 23:26:29 +01:00
David Mann 0a184f4a60 Merge pull request #8261 from Korg1ch/fix/8230-fade-preview
fix(ui): live preview in the Fade dialog (#8230)
2026-11-07 23:24:45 +01:00
e80f242575 PR #9306: preview Path Selection drags on main's own drag code
The review on #9306 asked to build the live preview on main's Path
Selection dragging instead of a separate handler. A drag now draws the work
path, or the saved path selected in the Paths panel, where its release will
put it: the same whole-pixel offset and click threshold as
path_selection_finish (path_selection_offset, shared by both), and only the
selected components when some but not all are (path_components::
moved_selected, through the engine's own move_anchors). The document still
changes only on release, as one History step. A shape layer's or vector
mask's outline is not previewed: their pixels move only on release. A stale
drag (VectorGestureOwner) shows nothing, as its release moves nothing.

Co-Authored-By: FartmanAndBurps <FartmanAndBurps@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 23:23:59 +01:00
David Mann 27ea4eddbc Merge pull request #5269 from augrclk/fix/brush-tip-geometry-layout
Brush Settings: align Angle and Roundness left of the tip widget
2026-11-07 23:23:49 +01:00
David Mann 6c9031da01 Merge pull request #10429 from hectorviov/fix/path-selection-chords
Paths: ⇧⌥⌘↩ intersects the path with the selection (#7726)
2026-11-07 23:22:16 +01:00
David Mann 50d9042e54 Merge pull request #10445 from hectorviov/fix/new-guide-arithmetic
New Guide takes arithmetic in its position, as in Photoshop (#10440)
2026-11-07 23:21:08 +01:00
David Mann 5967e6e7bc Merge pull request #8485 from david419kr/fix/persist-tool-colors
fix(ui): remember foreground and background colors between launches (Photoshop parity)
2026-11-07 23:20:15 +01:00
David MannandClaude Opus 5.5 d61aa40aa4 Background Eraser Alt tests: right-drag, held drag, erase and resize checks
Adds an Alt+right-drag test (resizes, samples nothing), checks the
foreground while an Alt-drag is still held, that a plain click clears the
pixel, and that Control+Alt-drag changes the brush size.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 23:06:00 +01:00
75bb7cea01 Merge origin/main into PR #9306
Main now drags paths through Path Selection's own code (path_ops.rs
path_selection_finish, path_components::move_selected) and drops a stale
vector drag through VectorGestureOwner, and vector_ui.rs is split into
tools/vector_ui/. The separate work_path_drag.rs handler is dropped here, as
the review on the PR asked; the next commit ports the live preview onto
main's code.

Co-Authored-By: FartmanAndBurps <FartmanAndBurps@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 23:04:27 +01:00
David MannandClaude Opus 5.5 c052e3f5ec Background Eraser: Alt+click picks the foreground colour (#11906)
Holding Alt with the Background Eraser now turns it into the Eyedropper
for that press, as with the Brush, Pencil, Gradient and Paint Bucket: a
click or drag sets the foreground colour, adds no history state and
changes no pixel, and the cursor shows the pipette. Control+Alt stays the
brush-resize gesture.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 22:54:36 +01:00
Hector VillarrealandClaude Opus 5.5 b62fb60596 Color Sampler: a drag whose release went to another tool no longer takes Escape (CodeRabbit review on crates/ui-egui/src/tools/analysis_ui.rs:1094)
A tool letter pressed mid-drag hands the release to the new tool, so the sampler
drag was never ended and the next Escape (Deselect, a toolbar flyout) was eaten
by it. The Escape hook now drops a sampler drag once the Color Sampler is no
longer the tool, and only consumes Escape while it still is.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 14:51:38 -06:00
Hector VillarrealandClaude Opus 5.5 b6c1f68869 Color Sampler: no 11th marker preview at the 10-point limit (CodeRabbit review on crates/ui-egui/src/tools/analysis_ui.rs:489)
At the limit a drag off a point drew marker 11 following the pointer, though the
release cannot place it. The marker drawing now skips the new-point preview once
the document has MAX_SAMPLERS points; the release still reports the limit as before.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 14:50:46 -06:00
David MannandClaude Opus 5.5 c5ebcd9dc7 Regenerate docs/scorecard.md
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 21:12:31 +01:00
David MannandClaude Opus 5.5 b6ab68ea3b Merge main into 3498
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 21:08:48 +01:00
Hector Villarreal 584e1c35aa Color Sampler: a new point lands where the drag ends, markers follow the pointer, a click on a point moves it, Escape cancels (#11729) 2026-11-07 13:59:54 -06:00
Eng. Mahmoud Bek ElNemer 47eea2fb88 Patch tool: start Content-Aware Sample All Layers on (#12125)
- Implement `Default` for `SampleAllLayers` with `patch: true` and all other
  tools `false` so a fresh start and `Reset Tool` on the Patch tool leave
  Sample All Layers on.
- Update `sample_all_key` in `crates/ui-egui/src/tools/tool_reset.rs` to
  toggle the probed tool's slot against `SampleAllLayers::default()`.
- Add `crates/ui-egui/src/patch_sample_all_default_tests.rs`.

Fixes #12125
2026-11-07 21:35:43 +02:00
8bf381f2d9 Find Layers: keep the Name text on every run path; no focus for a hidden filter row (#11238)
CodeRabbit found three things after the last fix-up:
- `engine.execute` and action steps without `name` replied `selected: []`
  while the panel listed the layers its kept Name text matches. `run` now
  fills in the panel's Name text for every path, as the menu did.
- With Filter Options > Hide, Find Layers left a focus request that took
  the caret once the row was shown again. In the reference application the
  row stays hidden and showing it later does not focus the field, so the
  request is only made for a drawn row.
- The control protocol said the selection never changes; the Name filter
  deselects a selected layer it hides (#10879). The doc now says so and
  describes each entry point and the reply.

Tests for the first two fail without the fix.

Co-Authored-By: NaufalDzz <NaufalDzz@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 20:24:22 +01:00
Hector VillarrealandClaude Opus 5.5 5252735c97 Free Transform: a flattened box reads its reference point's own offset (CodeRabbit pre-merge check on #12139)
With no inverse map, the offset now comes from the pseudo-inverse of the box map's linear part, not from how far the top-left corner moved.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 13:22:29 -06:00
5de6aa4e04 Merge origin/main into feat/psd-puppet-warp-2 (PR #8140)
Conflicts: psd_import.rs (main's vector_preview field kept, the SmartObject
still built as a binding so pin_puppet_meshes runs), smart_cmds/rendering.rs
(main's JobCtx argument kept next to the PR's placed_puppet_params).

Co-Authored-By: Tungtono <Tungtono@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 20:18:37 +01:00
texjer f3348efd90 Merge remote-tracking branch 'upstream/main' into cr/7121a
# Conflicts:
#	crates/ui-egui/src/i18n/cs.tsv
#	crates/ui-egui/src/i18n/de.tsv
#	crates/ui-egui/src/i18n/el.tsv
#	crates/ui-egui/src/i18n/es.tsv
#	crates/ui-egui/src/i18n/fr.tsv
#	crates/ui-egui/src/i18n/hu.tsv
#	crates/ui-egui/src/i18n/id.tsv
#	crates/ui-egui/src/i18n/it.tsv
#	crates/ui-egui/src/i18n/ja.tsv
#	crates/ui-egui/src/i18n/ko.tsv
#	crates/ui-egui/src/i18n/nl.tsv
#	crates/ui-egui/src/i18n/pl.tsv
#	crates/ui-egui/src/i18n/pt-br.tsv
#	crates/ui-egui/src/i18n/ru.tsv
#	crates/ui-egui/src/i18n/sr.tsv
#	crates/ui-egui/src/i18n/tr.tsv
#	crates/ui-egui/src/i18n/uk.tsv
#	crates/ui-egui/src/i18n/vi.tsv
#	crates/ui-egui/src/i18n/zh-hans.tsv
#	crates/ui-egui/src/i18n/zh-hant.tsv
2026-11-07 14:12:46 -05:00
yoriswind 012aec123b Merge current main into Free Transform hit zones 2026-11-07 11:06:16 -08:00
Hector Villarreal 18fd853447 Move tool: Auto-Select target defaults to Layer; dropdown lists Group, Layer (#11380) 2026-11-07 12:42:46 -06:00
Hector VillarrealandClaude Opus 5.5 4b3eb2ffd1 Free Transform: typing X or Y leaves the other axis at full precision (CodeRabbit review on options_bar.rs:308)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 12:39:37 -06:00