David Mann
925cb86c4b
Merge remote-tracking branch 'origin/main' into HEAD
...
# Conflicts:
# apps/photocraft-web/src/web.rs
# apps/photocraft/src/services.rs
# xtask/src/corpus.rs
# xtask/src/corpus_pins.rs
# xtask/src/main.rs
2026-10-21 22:40:54 +02:00
skylar taylor-barrick
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
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
David Mann and Claude Opus 5.5
30c420761d
Merge remote-tracking branch 'origin/main' into integration-batch-5
...
Conflicts with main's smart-filter and layer-style work, both sides kept:
- smart_map: main's 27 more filters and this batch's Clouds, Difference
Clouds, Fibers and Lens Flare (45 known); the item colours are written for
Pointillize, Tiles and the three coloured render filters.
- layer_style: main's new Stroke default (1 px inside black) with this
batch's Overprint.
- psd_export: main's verbatim unknown adjustments with this batch's unpadded
Gradient Map check.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-21 19:50:16 +02:00
David Mann
b68b64ccb5
Merge PR #6160 : feat(psd): editable Render smart filters (Clouds, Difference Clouds, Fibers, Lens Flare)
...
# Conflicts:
# docs/file-format-parity.md
2026-10-21 11:37:14 +02:00
David Mann
86811ddeee
Merge PR #6002 : Stroke: keep Overprint (overprint)
...
# Conflicts:
# crates/engine/src/layer_style.rs
# crates/ui-egui/src/layer_style.rs
# docs/file-format-parity.md
2026-10-21 11:36:58 +02:00
David Mann
a492716367
Merge PR #5990 : Bevel & Emboss: keep the Gloss Contour's Anti-aliased (antialiasGloss)
2026-10-21 11:29:05 +02:00
David Mann
27b8d133d8
Merge PR #4771 : Fix mixed-order layered TIFF type geometry and unsafe text fallback
2026-10-21 11:28:23 +02:00
David Mann
4cfb576ee0
Merge PR #4496 : .atn: a pinned corpus of real action sets, with byte-exact and load/save/reload tests ( #219 )
2026-10-21 11:28:19 +02:00
aiongg
b1e408d28f
Merge the smart-filter track ( #7066 #6398 #6397 #6297 #6299 #6301 #6303 #6315 #6305 #6317 )
...
# Conflicts:
# docs/file-format-parity.md
2026-10-21 05:04:04 +00:00
aiongg
a2c56f960f
Integration: gaps.md preferences count from the regenerated scorecard, for #6208 and #6211
2026-10-21 05:04:04 +00:00
aiongg
8e04e6f21e
Integration: regenerate docs/scorecard.md for the batch
2026-10-21 05:04:04 +00:00
aiongg
2a1ac6a6fb
Merge PR #6208 : Preferences: Save in Background off saves in the foreground ( #6207 )
...
# Conflicts:
# docs/gaps.md
# docs/scorecard.md
2026-10-21 05:04:04 +00:00
aiongg
050caf9ecd
Merge PR #6681 : Content-Aware Move: live preview for large selections (TOOL-213-4, #6680 )
...
# Conflicts:
# docs/gaps.md
# docs/scorecard.md
# docs/target-app-parity.md
2026-10-21 05:04:04 +00:00
aiongg
4804148ff9
Merge PR #3759 : Pattern Stamp and Background Eraser draw live; Spot Healing shows its heal area (TOOL-213-7, #3754 )
...
# Conflicts:
# docs/gaps.md
# docs/target-app-parity.md
2026-10-21 05:04:04 +00:00
aiongg
f163e3ce0b
Merge PR #6211 : Zoom tool: hold to zoom continuously with Animated Zoom on ( #6210 )
...
# Conflicts:
# docs/gaps.md
# docs/scorecard.md
# docs/ui-parity.md
2026-10-21 05:04:03 +00:00
aiongg
fc371711e6
Merge PR #5847 : Shapes: Density and Feather on shape layers ( #5846 )
...
# Conflicts:
# docs/scorecard.md
# docs/target-app-parity.md
# docs/ui-parity.md
2026-10-21 05:04:03 +00:00
aiongg
c23a6c9b90
Merge PR #6206 : Performance: a cancelled Gaussian Blur job stops within budget ( #6205 )
...
# Conflicts:
# docs/gaps.md
2026-10-21 05:04:02 +00:00
aiongg
4699d3605c
Merge PR #7026 : Automation: place and layer/data-set export by index keep the active document ( #7025 )
2026-10-21 05:04:01 +00:00
aiongg
c633674b6d
Integration: one smart-filter count (41 plus Hue/Saturation, Perspective Warp, Filter Gallery and Camera Raw) in the parity doc and FILE-215-2, for #6317
2026-10-21 01:21:19 +00:00
aiongg
af3dff34a6
Merge PR #6317 : PSD: Mezzotint and Color Halftone smart filters open and save like Photoshop ( #6316 )
...
# Conflicts:
# crates/io/src/smart_map.rs
# docs/file-format-parity.md
# docs/scorecard.md
# scorecard/file_compat.toml
2026-10-21 01:18:35 +00:00
aiongg
2c87bd630b
Merge PR #6305 : PSD: Offset and Custom smart filters open and save like Photoshop ( #6304 )
...
# Conflicts:
# crates/io/src/smart_map.rs
# docs/file-format-parity.md
# docs/scorecard.md
# scorecard/file_compat.toml
2026-10-21 01:17:09 +00:00
aiongg
2c0d232083
Merge PR #6315 : PSD: Wind, Extrude and Tiles smart filters open and save like Photoshop ( #6314 )
...
# Conflicts:
# crates/io/src/smart_map.rs
# docs/file-format-parity.md
# docs/scorecard.md
# scorecard/file_compat.toml
2026-10-21 01:16:28 +00:00
aiongg
7c92cb988c
Merge PR #6303 : PSD: Diffuse, Trace Contour, Crystallize and Pointillize smart filters open and save like Photoshop ( #6302 )
...
# Conflicts:
# crates/io/src/smart_map.rs
# docs/file-format-parity.md
# docs/scorecard.md
# scorecard/file_compat.toml
2026-10-21 01:11:06 +00:00
aiongg
9fbb648f8a
Merge PR #6301 : PSD: Smart Sharpen and Dust & Scratches smart filters open and save like Photoshop ( #6300 )
...
# Conflicts:
# crates/io/src/smart_map.rs
# docs/file-format-parity.md
# docs/scorecard.md
# scorecard/file_compat.toml
2026-10-21 01:09:51 +00:00
aiongg
95256cc86a
Merge PR #6299 : PSD: Surface Blur, Smart Blur and Radial Blur smart filters open and save like Photoshop ( #6298 )
...
# Conflicts:
# crates/io/src/smart_map.rs
# docs/file-format-parity.md
# docs/scorecard.md
# scorecard/file_compat.toml
2026-10-21 01:09:08 +00:00
aiongg
c7ece37b15
Merge PR #6297 : PSD: parameterless smart filters (Blur, Sharpen, Find Edges, Solarize…) open and save like Photoshop ( #6296 )
...
# Conflicts:
# docs/file-format-parity.md
# docs/scorecard.md
# scorecard/file_compat.toml
2026-10-21 01:08:09 +00:00
aiongg
3a3796af05
Merge PR #6397 : PSD: Perspective Warp smart filters open and save like Photoshop ( #6268 )
...
# Conflicts:
# crates/io/src/smart_map.rs
# docs/file-format-parity.md
# docs/scorecard.md
# scorecard/file_compat.toml
2026-10-21 01:07:59 +00:00
aiongg
61ef780550
Merge PR #6398 : PSD: Hue/Saturation smart filters open and save like Photoshop ( #6267 )
2026-10-21 01:07:14 +00:00
aiongg
d1bed2f98d
Merge PR #6644 : Hue/Saturation: the Lightness track runs black, grey, white ( #6539 )
2026-10-21 01:06:14 +00:00
aiongg
5d1f3ec479
Merge PR #5109 : Tests: generated large-file fixtures and a P20 number ( #5107 )
...
# Conflicts:
# docs/scorecard.md
2026-10-21 01:06:10 +00:00
aiongg
5c9ba773b4
Merge PR #3516 : scorecard: five rows catch up with work already on main
...
# Conflicts:
# docs/scorecard.md
2026-10-21 01:06:08 +00:00
aiongg
b097800e78
Merge pull request #8095 from aiongg/integration-7
...
Integration batch: 9 PRs on main
2026-10-20 20:44:51 -04:00
David Mann and Claude Opus 5.5
c9b0bb0cbc
Integration: merge main, resolve conflicts ( #4496 )
...
fill_to (Paint Bucket export): keep main's `source` alias and explicit
colour (`Usng` = `Clr ` plus `Clr `, #7199 ) together with the PR's
optional `Tlrn`/`AntA`.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-21 02:05:34 +02:00
David Mann and Claude Opus 5.5
d41aae7849
Integration: merge main, resolve conflicts ( #4771 )
...
crates/text/src/psd.rs: keep both appended test modules (transform_safety_tests
and main's nonfinite_tests). docs/file-format-parity.md: add the #4758 item to
main's current change line.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-21 00:54:54 +02:00
David Mann and Claude Opus 5.5
627bb8f1bf
Integration: merge main, resolve conflicts ( #6002 )
...
docs/file-format-parity.md: both sides added revision-history rows; keep both.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-21 00:11:01 +02:00
aiongg
9ac1d5adc6
Integration: regenerate docs/scorecard.md for the batch
...
#7813 's performance.gpu_adapter is read from the prefs file before the window opens (gpu_startup::read_gpu_adapter), which the prefs audit's heuristic doesn't see, so it counts as unread.
2026-10-20 22:07:10 +00:00
0073b395d4
Integration: merge main, resolve conflicts ( #5990 )
...
docs/file-format-parity.md: main added three 2026-10-15 revision rows
(DDS save, PNG sTER, PSD guides) where the PR added its own; keep all four.
Co-authored-by: varanus-salvator <262257003+varanus-salvator@users.noreply.github.com >
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-20 23:50:13 +02:00
David Mann
f498375d52
Merge PR #6272 : PSD: render constant RGB noise gradient fills
2026-10-20 22:39:17 +02:00
Matthias Schlich
0a7325af6e
Merge origin/main into feat/psd-render-smart-filters
...
# Conflicts:
# docs/file-format-parity.md
2026-10-20 22:20:37 +02:00
aiongg
db56aeb10a
Merge PR #7813 : Choose the graphics adapter on multi-GPU Linux machines ( #1885 )
...
# Conflicts:
# apps/photocraft/src/gpu_startup.rs
# 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
# crates/ui-egui/src/prefs_ui.rs
2026-10-20 18:41:25 +00:00
aiongg
1ca8a8aad0
Merge PR #7964 : Preserve near-black ICC colors on the GPU canvas
...
# Conflicts:
# contributors/people.toml
2026-10-20 18:39:43 +00:00
aiongg
60764172aa
Merge PR #7217 : GPU startup: Auto on Windows leaves Vulkan out when an Intel adapter is present ( #4 )
2026-10-20 18:39:29 +00:00
aiongg
e2169d0dfd
Merge PR #7847 : Print: Portrait and Landscape in the Print dialog on Windows
2026-10-20 18:39:29 +00:00
aiongg
ea7553f031
Merge PR #5111 : Large documents: a gigapixel New Document draws without freezing ( #4017 )
2026-10-20 18:39:28 +00:00
aiongg
0ae688b59a
Merge PR #6939 : Mixer Brush: Clean Brush empties the brush, and the automatic Load and Clean can be switched off
2026-10-20 18:39:27 +00:00
David Mann and Claude Opus 5.5
b3dfd1bf6a
Regenerate docs/scorecard.md
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-20 19:51:52 +02:00
David Mann and Claude Opus 5.5
a9e779fd92
Regenerate docs/scorecard.md
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-20 19:42:32 +02:00
David Mann and Claude Opus 5.5
a23d48f130
Merge main into docs/scorecard-stale-rows-2
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-20 19:25:37 +02:00
David Mann and Claude Opus 5.5
d449d25d62
Merge main into feat/file-216-2-large-fixtures
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-20 19:25:10 +02:00