Commit Graph
3604 Commits
Author SHA1 Message Date
SBaksa be7ebc078a Lasso: refuse a history name that shows nothing or hides formatting
A historyName of zero-width, filler or BOM characters showed an empty History
row, and a bidi control or line separator could make a row read differently
from its name. A history name now has no control or line-break character
anywhere, loses white space and ZWNJ/ZWJ at its ends, and is then held to the
plug-in menu-label rule, now shared as
photocraft_plugins::manifest::printable_name (1-64 characters with a visible
one, no hidden format characters; plug-in names also refuse U+2028/U+2029).
2026-11-08 17:55:02 +11:00
SBaksa 60d0895c27 Patch Tool history: refuse a bad name with Polygonal Lasso, give the step its icon
historyName is validated before polygonal picks the step name, and the
History panel shows the selection icon for a Patch Tool step.
2026-11-08 14:32:37 +11:00
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 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 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 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 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
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
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
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
Hector VillarrealandClaude Opus 5.5 e1d7429266 Actions: Create Droplet steps follow a renamed loaded action, as Batch steps do (CodeRabbit review on steps_droplet.rs:59)
Also point the module comments at #10710's table: mapped events leave docs/atn.md's measured table (CodeRabbit review on docs/atn.md:1002).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 12:39:36 -06:00
David Mann 0f0e76c44b Merge remote-tracking branch 'origin/main' into pr-11238
# Conflicts:
#	crates/ui-egui/src/panels/layer_filter_ui.rs
#	docs/control-protocol.md
2026-11-07 19:37:29 +01:00
David MannandClaude Opus 5.5 25b62801e5 Merge main into fix/scale-effects-bevel-texture
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-11-07 19:35:28 +01:00
David Mann 9a079c811f Merge remote-tracking branch 'origin/main' into pr-8485-merge
# Conflicts:
#	docs/ui-parity.md
2026-11-07 19:28:44 +01:00
David Mann b919607cd8 Merge main into #10445 2026-11-07 19:24:49 +01:00
yoriswind 99653a4626 fix(actions): preserve the Equalize dialog on recorded playback 2026-11-07 10:24:40 -08:00
David Mann f8ab0858e7 Merge pull request #9604 from dotCooCoo/feat/equalize-entire-image
Equalize: with a selection, choose the selected area only or the entire image based on it
2026-11-07 19:12:42 +01:00
David Mann 67e903786a Merge pull request #11710 from TrevorBrown-dev/fix/magnetic-lasso-composite-11686
Magnetic Lasso: the edge comes from the visible composite, not the active layer (#11686)
2026-11-07 18:59:02 +01:00
David Mann b9e8859f89 Merge pull request #11545 from TrevorBrown-dev/feat/artboard-options-bar-11385
The Artboard tool's options bar gets the iPhone 8/7/6 default size, a background control, the Align panel and the gear menu (#11385)
2026-11-07 18:56:12 +01:00
David Mann 7d18bc5217 Merge pull request #11675 from hnoerenberg/feat/reset-transform-smart-object-11662
feat: Layer > Smart Objects > Reset Transform (#11662)
2026-11-07 18:51:10 +01:00
Hector VillarrealandClaude Opus 5.5 67da143139 Actions: map Create Droplet; cover the Gradient tool's steps (#10710)
Create Droplet (CrtD) loads as file.automate.createDroplet for the form
the droplet plays the same way (a Folder destination with Override
Action "Save As"), plays, and saves back as recorded; subfolders, Save
and Close, custom naming, an error log or suppressed dialogs keep the
Photoshop step. The Gradient tool's Make + Set of a gradient fill layer
already map since #10771; a test now covers that recorded form. Print
stays a kept step: its two recorded steps would print twice.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 10:55:16 -06:00
dotCooCoo e207210745 Merge main into feat/equalize-entire-image 2026-11-07 08:24:11 -08:00
55142c407d Merge main into #8261: Fade preview on main's layout, off the UI thread
Main moved the files this PR changed (engine/src/cmd/edit_menu_cmds/fade.rs,
ui-egui/src/canvas/filter_preview.rs, dialogs/filter_dialog.rs) and Fade now also
fades alpha channels and the Quick Mask. The preview is ported onto that:

- engine: fade_preview captures the blend (FadePreview) from the session; render()
  blends it on a copy that shares the document's tiles, so only the faded area is
  blended and rewritten (review: no whole-surface copy).
- ui-egui: the blend and the flatten run on the filter preview worker in the
  desktop app, like every filter preview, and inline on the web.
- tests: the preview matches OK for alpha channels and the Quick Mask too; the
  dialog test previews, cancels (document, history and Fade unchanged), then OKs
  on both the worker and the inline path.

Co-Authored-By: Korg1ch <Korg1ch@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 17:08:19 +01:00
David Mann f202206901 Merge origin/main into PR #8485
# Conflicts:
#	crates/engine/src/prefs.rs
#	crates/engine/src/presets/tests.rs
#	crates/ui-egui/src/prefs/prefs_ui.rs
#	crates/ui-egui/src/prefs/prefs_ui/tests.rs
#	crates/ui-egui/src/tool_memory.rs
#	docs/scorecard.md
#	docs/ui-parity.md
2026-11-07 17:07:45 +01:00
David Mann e3f3465fe8 Merge pull request #10840 from TrevorBrown-dev/feat/gradient-overlay-drag
Layer Style: a drag on the image moves a Gradient Overlay (#10763)
2026-11-07 16:11:57 +01:00
David Mann f3f1610750 Merge remote-tracking branch 'origin/main' into pr-10429
# Conflicts:
#	crates/engine/src/cmd/vector_cmds.rs
2026-11-07 16:03:16 +01:00
David Mann 0eb51ace19 Merge pull request #8239 from nikolainyegaard/vocab-parity
Labels: match Photoshop's menu, tooltip and spelling conventions
2026-11-07 15:43:52 +01:00
FredApps e1e2a48b71 Merge pull request #10947 from vangel76/fix/render-video-frame-cap-6103
Render Video: cap the total an animated GIF keeps staged (#6103)
2026-11-07 15:40:04 +01:00
Trevor Brown 5c49acf7c0 Merge remote-tracking branch 'upstream/main' into fix/magnetic-lasso-composite-11686 2026-11-07 09:39:38 -05:00
Trevor Brown dc20b80858 Merge remote-tracking branch 'upstream/main' into feat/artboard-options-bar-11385 2026-11-07 09:39:36 -05:00
Hartmut Nörenberg 76326721f0 Merge remote-tracking branch 'upstream/main' into feat/reset-transform-smart-object-11662 2026-11-07 15:33:24 +01:00
Trevor BrownandClaude Fable 5.1 d52290b05a Magnetic Lasso: the docs say when to rebuild the edge source and what a non-RGB document follows (#11686)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-11-07 09:26:44 -05:00
David Mann 67e3457b02 Merge pull request #10001 from indy2kro/feat/8064-psd-maximize-compatibility-param
Saves take maximizeCompatibility for a PSD/PSB's merged image (#8064)
2026-11-07 14:44:52 +01:00
David Mann e18900e5fb Merge pull request #10443 from hectorviov/fix/replace-color-add-subtract
Replace Color: Add to Sample and Subtract from Sample (#6280)
2026-11-07 14:44:38 +01:00
David Mann ae84be356a Merge pull request #10557 from hectorviov/fix/save-for-web-slices
Save for Web: show slices in the preview and export selected slices
2026-11-07 14:44:21 +01:00
David Mann adac9ca7cf Merge pull request #10549 from hectorviov/fix/drag-mask-to-layer
Drag a layer mask onto another layer or group to move it, ⌥ to copy it (#10485)
2026-11-07 14:43:04 +01:00
Trevor Brown c26008dbb0 Merge remote-tracking branch 'upstream/main' into feat/artboard-options-bar-11385 2026-11-07 08:39:30 -05:00
Hartmut Nörenberg 2c96b71cc4 Merge upstream/main into feat/reset-transform-smart-object-11662
`docs/ui-parity.md`'s status line conflicted: the branch and main each
prepended a clause at the head of the change list, and the branch also
carried the newer `Last updated` date. The merged line keeps main's
toolbar tool-memory clause (#3569) word for word after our Reset
Transform clause (#11662), with one `Change:` header and the later date.
2026-11-07 14:22:32 +01:00
David Mann 3c000ea238 Merge pull request #8307 from midasdf/jp/print-paper-sizes
Print: Japanese paper sizes (はがき・往復はがき・JIS B5/B4・L判)
2026-11-07 14:11:19 +01:00
David Mann d4db4d78ad Merge pull request #9075 from indy2kro/feat/8492-skip-transform-when-placing
Preferences: Skip Transform when Placing (#8492)
2026-11-07 14:09:31 +01:00
Trevor BrownandClaude Fable 5.1 6e33cd6483 Merge upstream/main into feat/artboard-options-bar-11385
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-11-07 06:39:01 -05:00
David Mann 8548ed57a1 Merge pull request #11851 from DuBearte/fix/11771-count-delete-group-first
fix(engine): deleting the current count group makes the first group current (#11771)
2026-11-07 12:11:15 +01:00
David Mann 83eaf7c0bc Merge pull request #11847 from hnoerenberg/fix/pressure-size-default-off-11809
fix(paint): Pressure for Size starts off, as the reference does
2026-11-07 12:10:48 +01:00
David Mann 97c42fb0cd Merge main into #10445 2026-11-07 12:01:30 +01:00
David Mann 9ba029129e Merge pull request #11540 from TrevorBrown-dev/feat/move-options-bar-distribute-gear-11381
feat(move): options bar gets Distribute buttons, the ... icon panel and the gear menu (#11381)
2026-11-07 11:57:35 +01:00
David Mann 339adcb7bc Merge pull request #11322 from Saloouu/fix/toolbar-groups-survive-restart
Toolbar slots and tool keys keep their last tool across launches (#3569)
2026-11-07 11:55:58 +01:00