Commit Graph
146 Commits
Author SHA1 Message Date
David MannandClaude Opus 5.5 38609e5615 Merge PR #8885: PSD: spot channels in Photoshop's polarity; PSDs from earlier PhotoCraft versions keep their ink
Merged with our fix-up branch pr-8885-fixup (8f6863f53) on the author's head 996b55eb4.

Conflicts resolved:
- crates/io/src/tiff_layers.rs: #9148's tiff_source (an empty LMsk gets Photoshop's 14 bytes)
  gives way to #8885's tiff_image_source, which writes the same bytes for an empty or short
  LMsk; #9148's test stays.
- crates/io/src/flat.rs: #8776's DDS alpha step and #8885's TIFF channel stamp both run.
- crates/io/Cargo.toml, Cargo.lock: #8402's zune dev-deps and #8885's tiff dev-dep.
- crates/io/tests/it/tiff_layers.rs, docs: unions; docs/scorecard.md kept as is, regenerated at
  the batch gate.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 16:28:00 +01:00
David MannandClaude Opus 5.5 14693eb085 Integration: merge main 528491f9a, resolve conflicts
- crates/engine/src/edit_cmds.rs: copy_mask keeps #3297's filter-mask target and takes main's
  clipboard `source` (#8945).
- crates/cms/src/lutfile.rs: #9183's shaper doc comment next to main's UTF-16 decode_text (#9129).
- contributors/people.toml, docs: unions.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 16:26:06 +01:00
David MannandClaude Opus 5.5 4365c0537d Integration: merge main, resolve conflicts (#8885)
psd_import.rs keeps main's warning for an incomplete merged extra channel
next to the PR's Photoshop spot polarity. people.toml takes main's entries
plus jasallen's own. Docs take both sides' status lines and revision rows;
docs/scorecard.md is regenerated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 16:07:44 +01:00
528491f9ac Contributors: add my name (erenova) (#9369)
* contributors: credit VoiceLessQ by display name

* Contributors: add my name (erenova)

Help › About › Contributors shows me as "Erenova" when the display-name view
is picked. The name is fixed rather than synced from my GitHub profile; no
real name.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: VoiceLessQ <t12kaem@gmail.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Brandon Thomas <echelon@gmail.com>
2026-10-25 10:33:30 -04:00
VoiceLessQandBrandon Thomas ee7178b2b3 contributors: credit VoiceLessQ by display name (#9264)
Co-authored-by: Brandon Thomas <echelon@gmail.com>
2026-10-25 10:32:11 -04:00
David Mann bb39b4a8dd Revert "Merge PR #1199: Add optional local models for subject matting and object selection"
This reverts commit 5f2a7b9903, reversing
changes made to 9ef4c0a487.
2026-10-25 15:19:27 +01:00
softwaregames1Claude Opus 5.5coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
1e5b5f7617 Package: never overwrite one link's copy with another, list a missing link once (#9185)
* Package: never overwrite one link's copy with another, list a missing link once

Copies whose names collided were renamed to "<count>-<name>" once, without
checking that name too: links a/x.png, b/2-x.png and c/x.png packaged the
third over the second's copy, so two layers showed the same image. The name
now steps until no earlier copy has it, ignoring case as macOS and Windows
folders do. A missing link placed on several layers was listed once per layer.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LPBRXWMhtDUsQDdZKmt9eZ

* Contributors: credit softwaregames1 by their GitHub profile name

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LPBRXWMhtDUsQDdZKmt9eZ

* Package: never overwrite a file already in Links

A second package into the same folder picked the same Links/<name> and
replaced the earlier copy. A name taken by a file already there is now
stepped like one taken by another link in this run.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LPBRXWMhtDUsQDdZKmt9eZ

* Apply suggestion from @coderabbitai[bot]

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2026-10-25 10:17:17 -04:00
David Mann b28073389c Merge PR #3316: Add intermediate UI scale presets between 100% and 125%
# Conflicts:
#	contributors/people.toml
#	docs/gaps.md
#	docs/scorecard.md
#	docs/ui-parity.md
2026-10-25 14:27:10 +01:00
David MannandClaude Opus 5.5 5f2a7b9903 Merge PR #1199: Add optional local models for subject matting and object selection
Merged with our fix-up d5139d177 (pr-1199-fixup), which merged main as of 8f09d122d.
Conflicts with main since then and with batch 8:
- photocraft-cli: main split the CLI into clap modules (#7071); the model wiring
  (local_headless, configure_cli_models, batch's shared backend, droplet) is re-applied there.
- Cargo.lock regenerated: crates/ml pins ureq =3.4.2, so the app's ureq goes 3.5.0 -> 3.4.2.
- cutout_cmds: main's subject area (#8235) kept for the classical path beside the model path.
- file_cmds batch: main's per-input closure takes `s` later, so the backend and
  integrations prefs are read before the closure instead of inside it.
- prefs_ui: model-choice filter with #4573's pref_choice_label; Integrations stays visible
  (#4097) with the model choices only where models run; the translation-coverage test main
  deleted (c3aa3f9e5) stays deleted; old section_fields test calls take PreferenceFieldOptions.
- Semantic clashes git did not flag: #4097's Integrations test literals in
  apps/photocraft take ..Default::default() for the new model fields; main's and #4573's
  section_fields test calls pass PreferenceFieldOptions.
- engine lib.rs, prefs.rs, smartselect tests, snapshot example, jobs_ui_tests, people.toml,
  docs and i18n catalogs merged as unions.


Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 14:23:25 +01:00
Ratul Paul 2818bc1e7c Merge upstream main and preserve UI scale progress
Keep all upstream contributor entries, progress notes and current document
dates alongside the existing intermediate UI scale feature.

Validation: fmt, locked engine/UI tests (6389 passed), Clippy, layers, wasm,
scorecard generation/check, and panic_hunt all passed.
2026-10-24 09:41:37 +06:00
David Mann 9c5a7b907a Merge remote-tracking branch 'origin/main' into integration-batch-7
# Conflicts:
#	crates/ui-egui/src/i18n/tr.tsv
#	docs/ui-parity.md
2026-10-24 00:34:11 +02:00
David Mann 8c04b175ec Merge remote-tracking branch 'origin/main' into integration-batch-7
# Conflicts:
#	crates/automation/src/rpc.rs
#	crates/automation/src/server.rs
#	crates/gpu/src/health.rs
#	crates/text/src/tests.rs
#	crates/ui-egui/src/i18n/zh-hans.tsv
#	crates/ui-egui/src/panels.rs
#	docs/control-protocol.md
#	docs/ui-parity.md
2026-10-24 00:23:15 +02:00
Brandon ThomasandClaude Opus 5.5 29e4039c72 fix(contributors): drop a duplicate people.toml table (#9009)
Two PRs that landed together each added [people.ronibalthazar], and a
duplicate table makes the file invalid TOML (ui-egui's build script
warns that it can't parse it, so the About window's names are lost).

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 18:19:36 -04:00
Roni BalthazarandBrandon Thomas 3a870ca3ce fix(ipp): preserve printer group metadata (#8828)
Co-authored-by: Brandon Thomas <echelon@gmail.com>
2026-10-23 17:55:05 -04:00
Batuhan GözegüandBrandon Thomas 9fe6be6d86 i18n(tr): fix mistranslations, inconsistencies and untranslated rows (#8871)
- Color Decontaminate: "Renkli" (colourful) -> "Renkleri Arındır"
- Warp split commands and "Cancel warp": "Çözgü" (textile warp) -> "Çarpıtma"
- Constraint hint: "Shift" was translated as "kaydırma"; keep the key name
- Highlights (tonal range) -> "Parlak Tonlar", as in the other rows
- Luminance -> "Lüminans" (was "parlaklık", which is Brightness)
- Indexed -> "İndekslenmiş", Trilinear -> "Üç Doğrusal"
- Levels In/Out Black/White: distinct "Giriş/Çıkış Siyahı/Beyazı"
- Layer Knocks Out Drop Shadow now says "Alt Gölge" like Drop Shadow
- Contact Sheet II -> "Kontak Sayfası II"
- Fix word order of the clone-source hints, "After (X)", "On Black/White"
- Translate "Preview size" and "Print preview image"
- Keep theme names Solarized and Breeze; Pro Light -> "Pro Açık"
- Add contributor entry for the author

Co-authored-by: Brandon Thomas <echelon@gmail.com>
2026-10-23 17:54:52 -04:00
Roni BalthazarandBrandon Thomas 3190b4ea4f fix(io): preserve unsupported custom-domain Color Lookup LUTs (#8879)
Co-authored-by: Brandon Thomas <echelon@gmail.com>
2026-10-23 17:54:39 -04:00
Kushagra Sharma 7e3594b822 fix(ui-egui): a click on the bottom layer's Smart Filters selects them again (#8764) (#8974)
* fix(ui-egui): a click on the bottom layer's Smart Filters selects them again (#8764)

The empty space below the last Layers panel row deselects every layer on a
click (#8100). It started under the last layer's own row, so it covered that
layer's effect and Smart Filter rows and, registered after them, took their
clicks: on the bottom smart object (a new document's Layer 0), clicking a
filter deselected everything instead of selecting it.

The click area now starts under everything drawn for the last layer. The
drop zone below it (#1721) is unchanged.

* Contributors: credit drunkeninja42 as Kushagra Sharma
2026-10-23 17:38:02 -04:00
Jason DandClaude Opus 5.5 6bcfd06b60 contributors: let jasallen's display name follow the GitHub profile
display_name took precedence over sync_github_name, so the sync had no
effect. Without it, About shows the public GitHub profile name.
Raised by CodeRabbit on #8885.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 11:25:19 -04:00
Jason DandClaude Opus 5.5 e6fca0548f Merge current main into split/tiff-extra-samples-codecs
Conflicts: crates/codecs/src/image.rs (main's new `cicp` field next to
this branch's converted extra-sample planes in `meta`) and
contributors/people.toml (main's new entries kept, jasallen's added after
them). The codecs integration tests moved into tests/it/ on main; this
branch's test changes followed them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 08:43:11 -04:00
Ratul Paul b088a6cbac Merge upstream main and retain complete UI scale coverage
Preserve upstream progress documentation alongside the scale-preset notes.
Add numeric preset labels to the newly introduced Hindi catalog, keeping all
21 catalogs covered. Preserve contributors, tests and existing coauthor credit.

Validation: fmt, locked engine/UI tests (6196 passed), Clippy, layers, wasm,
scorecard generation/check, and panic_hunt all passed.
2026-10-23 10:04:33 +06:00
David Mann 837242536b Merge PR #7840: gpu, docs: fix timing test skip guard and document Windows ARM64 build on RTX Spark 2026-10-22 23:40:12 +02:00
aiongg add0fbc706 Integration: merge main (through #8562)
contributors/people.toml: kept both sides' new entries (r4's list and main's benandez).
2026-10-22 15:40:05 +00:00
aiongg 7d0cb444d6 Integration: track t13
# Conflicts:
#	contributors/people.toml
#	docs/ui-parity.md
2026-10-22 15:38:35 +00:00
aiongg 576ba0e02b Integration: track t12
# Conflicts:
#	contributors/people.toml
#	crates/compose/src/lib.rs
#	crates/compose/src/tests.rs
#	crates/engine/src/print_cmds.rs
#	crates/engine/src/print_cmds/tests.rs
#	docs/target-app-parity.md
2026-10-22 15:38:33 +00:00
aiongg 71991b0a03 Integration: track t10
# Conflicts:
#	contributors/people.toml
#	crates/engine/src/prefs.rs
#	crates/ui-egui/src/layer_style/contour.rs
#	docs/ui-parity.md
2026-10-22 15:38:28 +00:00
aiongg 1dc684a2b6 Integration: track t09
# Conflicts:
#	contributors/people.toml
#	crates/engine/src/atn_cmds/tests.rs
#	crates/engine/src/file_cmds.rs
#	crates/engine/src/jobs.rs
#	docs/gaps.md
#	docs/target-app-parity.md
2026-10-22 15:38:26 +00:00
Ratul Paul 8730bd14cc Merge upstream main and retain contributor entries
Keep all upstream contributor records and append the existing Ratul entry.
Preserve UI scale presets, catalogs, tests, documentation and coauthor credit.

Validation: fmt, locked engine/UI tests (5685 passed), Clippy, layers, wasm,
scorecard generation/check, and panic_hunt all passed.
2026-10-22 21:38:23 +06:00
aiongg 9c7cc91f82 Integration: track t05
# Conflicts:
#	crates/ui-egui/src/i18n/tr.tsv
#	crates/ui-egui/src/shortcuts.rs
#	docs/ui-parity.md
2026-10-22 15:38:18 +00:00
aiongg 1f0177f23c Integration: track t04
# Conflicts:
#	ATTRIBUTION.md
#	contributors/people.toml
#	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
#	docs/gaps.md
2026-10-22 15:38:17 +00:00
aiongg 4d1b922ddf Integration: track t02
# Conflicts:
#	contributors/people.toml
#	crates/engine/src/file_cmds/tests.rs
#	crates/engine/src/print_cmds/tests.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
2026-10-22 15:38:14 +00:00
aiongg 82cf3c828c Integration: track t01
# 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/vi.tsv
#	crates/ui-egui/src/i18n/zh-hans.tsv
#	crates/ui-egui/src/i18n/zh-hant.tsv
#	docs/file-format-parity.md
#	docs/gaps.md
2026-10-22 15:38:14 +00:00
aiongg 6c58aab811 Merge PR #6328: Guides: a guide let go over either ruler is removed, not only off the canvas (#6286)
docs/ui-parity.md: header line kept as on main with the PR's #6286 item added once; both change-log rows kept.
2026-10-22 15:37:44 +00:00
aiongg c5abd43a22 Merge PR #6158: Title bar: a window move the window manager finished no longer blocks the next move or resize (#5725)
contributors/people.toml: union of both sides' entries.
2026-10-22 15:37:43 +00:00
a5c70cb0ee Integration: merge main, resolve conflicts (#1199)
Main moved about 2100 commits since the branch's last merge. Resolved:
- smartselect_cmds.rs: main's empty-layer check for Object Selection
  (check_sampled_pixels, #5246) now runs before the SAM branch, which
  returned before it in a plain merge.
- cutout_cmds.rs: the classical path keeps main's cancellable stage;
  the BiRefNet path is unchanged.
- prefs_ui.rs: main split section_fields into field_visible/field_rows;
  the model labels, the filtered model choices and the options struct
  move into that structure.
- apps: main's trusted_local() CLI session, Linux print spooler and frame
  cap kept beside the local-model setup.
- channel_view.rs: main's version (#4915); the branch's change there was
  unrelated to local models.
- i18n, people.toml, SOURCES.md, architecture.md, gaps.md: both sides.
  Cargo.lock and docs/scorecard.md from main, then regenerated.

Co-authored-by: mighty-programmer <83077551+mighty-programmer@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 17:01:01 +02:00
Martin BallandClaude Opus 5.5 4bfeb7889d Fixes #8519 quick export honours extension (#8535)
* fix(engine): Quick Export writes the format its path names (#8519)

Quick Export as PNG renamed to photo.jpeg in the save dialog wrote PNG
bytes under a JPEG name, which upload checks refuse and file managers
don't preview. The path's extension (.jpg/.jpeg/.png/.gif/.webp) now picks
the format; any other extension is refused with a pointer to Export As;
no extension keeps Export Preferences' format.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* contributors: add benandez's real name

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-22 09:28:42 -04:00
aiongg 2d66820811 Merge PR #6974: feat(i18n): add Hindi (hi) language catalog and locale resolution
contributors/people.toml: union of both sides' entries.
2026-10-22 02:25:47 +00:00
aiongg b119da85cb Merge PR #7801: Refuse strict .atn export of an in-place layer duplicate
contributors/people.toml: both sides appended a person; kept both.
2026-10-22 02:23:00 +00:00
aiongg 11c3f1ec92 Merge PR #5180: Type tool: click a path to start type on it (TYPE-218-1, #218)
contributors/people.toml: union of both sides' entries.
crates/ui-egui/src/canvas.rs: main's Move cursor (arrow) plus the PR's Type path-cursor arm.
crates/ui-egui/src/type_tool.rs: main's has_transform in draw_overlay; the PR's earlier `shape` binding kept, the duplicate binding dropped.
crates/ui-egui/src/vector_ui.rs: main's draw_overlay (paths already show with any tool), the PR's vector_tool line dropped.
docs/gaps.md: header line from main, G8 text from main with the click-on-path clause, change-log lines of both.
2026-10-22 02:22:58 +00:00
aiongg e752bb2ec8 Merge PR #6661: fix(print): preserve WinAnsi characters in PDF labels
contributors/people.toml: both sides' new rows kept.
crates/engine/src/print_cmds/tests.rs: both sides' appended tests kept whole.
2026-10-22 02:22:51 +00:00
aiongg 72ca30ab77 Merge PR #8269: contributors: add adi-1108
contributors/people.toml: both sides appended entries at the end; kept both (union).
2026-10-22 02:22:20 +00:00
aiongg 1e5866ebaf Merge PR #4567: Codecs: PCX runs may cross plane boundaries within a scanline
contributors/people.toml: union; main's new entries kept and the PR's webdevtodayjason entry appended.
2026-10-22 02:22:17 +00:00
aiongg 1f01abeebe Merge PR #7808: Add a draggable center diagram for Radial Blur Zoom 2026-10-22 02:22:16 +00:00
aiongg 2a277af23c Merge PR #5062: fix(i18n): Italian Screen blend mode is "Scherma", not "Schermo"
contributors/people.toml: union of both sides' new entries.
2026-10-22 02:22:06 +00:00
aiongg 91966f1ac7 Merge PR #6824: docs(contributors): add Gotix-eg to people.toml
contributors/people.toml: both sides appended entries at the end; kept both (union).
2026-10-22 02:22:02 +00:00
aiongg 8fc95d1b1c Merge PR #6390: Contributors: add Marco Arnulfo 2026-10-22 02:21:48 +00:00
aiongg 8d3d944ad1 Merge PR #5372: Credit Abdul karim mia in contributors 2026-10-22 02:21:45 +00:00
Jason DandClaude Opus 5.5 ef754074b5 contributors: credit jasallen
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 11:25:52 -04:00
Aditya VishwakarmaandClaude Opus 5.5 4c0e2d8613 contributors: add adi-1108
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 19:55:41 +05:30
Marco Arnulfo e6717c7485 Contributors: add my name for the About window 2026-10-21 10:18:38 +02:00
Eddi Andree Salazar MatosandClaude Opus 5.5 4062ac3211 Contributors: add my name (AndreeSalazar)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 01:04:33 -05:00