Commit Graph
1461 Commits
Author SHA1 Message Date
aiongg 4eef797fdf Merge PR #7968: fix(atn): a Group Layers step keeps its explicit layer through .atn (#7236)
Conflicts:
crates/engine/src/atn_cmds/tests.rs: appended test helper and tests (two blocks), kept both
2026-10-22 02:25:59 +00:00
aiongg 49a09628b6 Merge PR #7637: Record one action call when playback pauses for a step dialog
Conflicts:
crates/ui-egui/src/i18n/*.tsv (20 catalogs): rows kept both; no duplicate (context, source) keys
2026-10-22 02:25:34 +00:00
aiongg aa4f03a8ad Merge PR #7571: Refuse strict .atn export of Apply Image with a blending mask
Conflicts:
crates/engine/src/atn_cmds/tests.rs: appended tests, kept both
2026-10-22 02:22:48 +00:00
aiongg a40972d80d Merge PR #7585: Refuse strict .atn export of a mask/channel-targeted Free Transform
Conflicts:
crates/engine/src/atn_cmds/tests.rs: appended tests, kept both
2026-10-22 02:22:32 +00:00
aiongg 1cbeb4a784 Merge PR #7590: fix(atn): keep a Transform Selection's interpolation; refuse what the transform descriptor can't carry
Conflicts:
crates/engine/src/atn_cmds/tests.rs: appended tests, kept both
2026-10-22 02:22:16 +00:00
ZuujisandGitHub 38bc5e916c refactor(atn): build the clipping-mask and three adjustment events with macros (#8401)
Create/Release Clipping Mask and Brightness/Contrast, Black & White and
Gradient Map were written out by hand with the same body as
adjustment_event! or each other, which SonarCloud counts as duplicated new
code (photocraft's quality gate fails on 9.8% duplication from the GrpL
entry). adjustment_event! takes an optional command id, and clipping_event!
builds the two clipping events. The mapping table is unchanged.
2026-10-21 20:28:12 -04:00
aionggandGitHub ba40dffb25 Merge pull request #8355 from aiongg/integration-10
Integration batch: #8229, David's follow-ups and 85 FredApps-approved PRs on main
2026-10-21 19:02:54 -04:00
aiongg f32f882f3a Merge main into integration-10
# Conflicts:
#	apps/photocraft-web/src/web.rs
#	apps/photocraft/src/services.rs
#	crates/engine/src/file_cmds/tests.rs
#	crates/engine/src/float_cmds.rs
#	crates/engine/src/float_cmds/tests.rs
#	xtask/src/corpus.rs
#	xtask/src/corpus_pins.rs
#	xtask/src/main.rs
2026-10-21 21:56:26 +00:00
aiongg 64d042aef5 Integration: Create Clipping Mask also maps the GrpL code and a named-layer target, for #6881 and #4496 2026-10-21 21:56:21 +00:00
aiongg 0e9cbbc88e Integration: one tools.setColors and one clipping-mask mapping in .atn export, for #6881 and #4496 2026-10-21 21:56:21 +00:00
aiongg 719fb44d42 Merge PR #6881: Actions: .atn Select Subject, Select and Mask, Color Range, clipping and layer masks, colours map to commands (part of #6745) 2026-10-21 21:56:21 +00:00
aiongg 43e9587590 Merge PR #6363: New Document: Color Profile, the working space or another profile of the mode (#321) 2026-10-21 21:56:21 +00:00
aiongg 29388de427 Merge PR #6919: Selections don't mark a document modified (#6865) 2026-10-21 21:56:21 +00:00
aiongg 403dc5043a Merge PR #8096: CodeRabbit follow-ups for the #8095 batch 2026-10-21 21:56:21 +00:00
aiongg 3b6fabb04a Merge PR #6801: Actions that start with Deselect play on when nothing is selected 2026-10-21 21:56:21 +00:00
aiongg a06c4639f6 Merge PR #5590: Warp: apply a large layer's warp in the background, with progress and Esc to cancel (#1015) 2026-10-21 21:56:21 +00:00
aiongg dd83f87d3c Merge PR #5581: Layers: Group Layers creates the group collapsed (#5571) 2026-10-21 21:56:20 +00:00
aiongg 5eada4996a Merge PR #7219: Actions: record File › Export › Export As and replay it with its settings (#7207) 2026-10-21 21:56:20 +00:00
aiongg b75f0cf21d Merge PR #7799: Displace on a Smart Object: the map is embedded in the smart filter, so it displaces (#7423) 2026-10-21 21:56:10 +00:00
aiongg b0833a893c Merge PR #7694: perf(format): reuse .pcraft writers between document saves 2026-10-21 21:56:10 +00:00
aiongg 5189019b5b Merge PR #7696: fix(actions): preserve effective Stroke width in ATN export 2026-10-21 21:56:10 +00:00
aiongg c2d5a3fd64 Merge PR #7708: fix(actions): refuse lossy fractional Ripple ATN export 2026-10-21 21:56:10 +00:00
aiongg 6695bd5a8b Merge PR #8005: Open: a file without type never waits for the font scan (#7332) 2026-10-21 21:56:10 +00:00
aiongg 3a7180cf8c Merge PR #6509: Type: commit the edit when another layer or document becomes active (#6483) 2026-10-21 21:55:49 +00:00
aiongg 5ef5c71164 Merge PR #6912: Shortcuts: custom bindings on PageUp/PageDown (and other multi-word keys) fire again (#6827) 2026-10-21 21:55:49 +00:00
aiongg e09bf5728f Merge PR #7784: Actions: a background filter's step is recorded only by the recording it started in (#7289) 2026-10-21 21:55:49 +00:00
aiongg 97a1a67f38 Merge PR #7959: Actions: Emboss saves to and loads from .atn as Photoshop's Embs step (#7946) 2026-10-21 21:55:49 +00:00
aiongg f0137c6ace Merge PR #7963: Fix File Info showing 1/1 s for exposures just under one second 2026-10-21 21:55:49 +00:00
aiongg 38f684e4e4 Merge PR #7661: Move tool: a selection lifts up to a pixel's own coverage (#7655) 2026-10-21 21:55:49 +00:00
abc2cbandClaude Opus 5.5 ff5708361d Merge the Layers Panel flyout branch (upstream/main 6d8cbac7 merged) into the Fill layers branch
One conflict, pattern_cmds.rs: insert_fill_layer keeps the default_mask
argument and takes main's placement(command, params)? signature.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 00:12:09 +03:00
abc2cbandClaude Opus 5.5 743a38e64d Layers panel reorder: Content-Aware Move preview wins, moveTo drops asserted
- canvas.rs: the Content-Aware Move preview now comes before the
  Layers-panel reorder preview. The reorder preview is built from the
  session document and would drop a pending Content-Aware Move result.
- layer_multi_cmds.rs: preview_rejects_invalid_drop_unchanged also runs
  layer.moveTo for each rejected drop: the missing target, `into` on a
  non-group and the invalid position are errors, the self-drop is a
  no-op, and the document stays unchanged each time.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 00:09:58 +03:00
abc2cbandClaude Opus 5.5 8cc64b86a1 Merge upstream/main 6d8cbac7 into the Layers Panel flyout branch
Conflicts:
- commands.rs: layer.duplicate keeps the "Add copy" option; main's #5880
  dropped the second damage pass (`before` and note_insert) for single
  duplicates, so the clone of the document goes away too.
- jobs.rs: the success arm runs main's relayout damage first, then our
  Expand New Effects disclosure update.
- panels.rs: the Background no longer loads a transparency selection on a
  thumbnail click (main), and a thumbnail size of None has no thumbnail to
  click (ours); main's `pos` / `on_thumb` now come before layer.select, so
  the size guard moved there.
- hu/sr/tr/vi catalogs: both sides appended rows at the end; kept both, no
  duplicate keys.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 23:57:52 +03:00
skylar taylor-barrickandGitHub 6d8cbac7dc Merge pull request #2945 from diegochagas/feat/xcf-read
Open GIMP XCF files: layers, groups, masks, blend modes, channels and selection
2026-10-21 14:35:32 -06:00
skylar taylor-barrickandGitHub 18e2d45420 Merge pull request #6318 from robertoffmoura/fix/floating-selection-move-lag
Fix lag when dragging a floating selection with the Move tool
2026-10-21 14:25:55 -06:00
Diego Chagas ca18689304 Open GIMP XCF files: layers, groups, masks, modes, channels and selection (#1076)
PhotoCraft reads GIMP's .xcf (and .xcf.gz) files, read only, through a new
reader in photocraft-io written from the public XCF specification: versions
0 to 26, uncompressed, RLE and zlib tiles, 8/16/32-bit integer and
16/32/64-bit float precisions (linear precisions get a linear profile),
pixel layers at any position, groups by item path with pass-through,
layer masks applied or disabled, opacity, visibility, locks, colour tags,
the 2.10 and legacy blend modes mapped to Photoshop's (modes without an
equivalent open as Normal with a note), the ICC profile, resolution,
guides, the comment, extra channels and the saved selection; indexed
images open as RGB. Text, vector and link layers open as their pixels;
layer effects, paths and floating selections are reported.

Fixtures are written by GIMP 3.2 itself (scripts/xcf_fixtures.py), each
with GIMP's merged rendering as a PNG. In gamma-encoded blend and
composite spaces our composite matches GIMP within 0.5/255; GIMP's
linear-light default, its Clip to backdrop and its clamp-after-alpha
for unbounded modes are documented and measured in docs/xcf.md.
2026-10-21 16:57:22 -03:00
aiongg 66e54580b7 Merge PR #7838: Free Transform: a result may take what Memory Usage allows, not 2^30 px (#7807) 2026-10-21 18:15:11 +00:00
aiongg 02eeecd59f Merge PR #7870: Shortcuts: Ctrl+F4 closes the document beside Ctrl+W (Windows/Linux) 2026-10-21 18:15:08 +00:00
aiongg f6ed54e83e Merge PR #7389: fix(atn): a preset-only Photo Filter step exports its resolved colour (#7235) 2026-10-21 18:15:08 +00:00
aiongg be2760a7bc Merge PR #7353: test(engine): make the define-brush mask allocation fail on its own (fail-after-one) (#212) 2026-10-21 18:15:07 +00:00
aiongg f471a08224 Merge PR #7397: Auto-Blend Layers: turn the Background into a layer before masking it 2026-10-21 18:15:05 +00:00
aiongg 8e84c55296 Merge PR #7576: Presets: an Export As preset survives a damaged sibling set (test for #6906) 2026-10-21 18:15:04 +00:00
aiongg 8e66e5fcdd Merge PR #7587: Actions: stop when a Save step's document is closed by a Save Document script (#7367) 2026-10-21 18:15:03 +00:00
aiongg a6702058db Merge PR #7627: Actions: Minimum / Maximum with Preserve: Roundness is no longer exported as Squareness (#7233) 2026-10-21 18:15:02 +00:00
aiongg ef62950bff Merge PR #7837: Free Transform: a result over the pixel limit says so, not "not enough memory" (#7807) 2026-10-21 18:15:01 +00:00
aiongg 8baf2ef75b Merge PR #7751: Actions: a Selective Color step keeps the values of its scalar form 2026-10-21 18:15:00 +00:00
aiongg c5630b2a5d Merge PR #7636: Show Technique and Range in the glow Layer Style pages (#6698) 2026-10-21 18:15:00 +00:00
Korg1ch d93458b72b fix(actions): record File › Export › Export As and replay it with its destination and settings (#7207) 2026-10-21 19:29:16 +03:00
aiongg e7ddf6d7c7 Merge PR #7771: Save for Web: later slices cover earlier ones, covered slices split into pieces (#7770) 2026-10-21 15:45:55 +00:00
aiongg 5baa87b131 Merge PR #7762: Perspective Crop: Color Sampler points move with the image (#7760) 2026-10-21 15:45:54 +00:00
aiongg 3be9e7bcb1 Merge PR #7733: Painting symmetry: canvas edits move the axis with the pixels (#7732) 2026-10-21 15:45:54 +00:00