Commit Graph
2428 Commits
Author SHA1 Message Date
Hector VillarrealandClaude Opus 5.5 fa5dfb3e19 Regenerate the parity checklist
Main added a Layer menu item of its own, so after the rebase the menu
counts 663 items; raise the floor to match.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 23:23:58 -06:00
Triwarr 2d16a609ea Merge remote-tracking branch 'origin/main' into pdf
# Conflicts:
#	docs/scorecard.md
2026-11-08 03:48:47 +01:00
David Mann fda05f7b02 Regenerate docs/scorecard.md (merge queue)
On main + #10448, so main's gate stays green after the merge.
2026-11-08 03:45:37 +01:00
David Mann 4da02a98a6 Merge pull request #9975 from ljkx/feat/cli-metadata-option
CLI: --metadata none|all leaves document XMP out of convert, run --out and batch exports (#9466)
2026-11-08 02:40:35 +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 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
50b877645f Merge origin/main into feat/cli-metadata-option (#9975)
Conflicts with main's --no-maximize-compatibility (#8064) in the CLI
export args, output mapping and dev-dependencies, and in the
file-format parity status line and revision history: both sides kept.

Co-Authored-By: ljkx <ljkx@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 01:26:47 +01:00
Triwarr 0525197133 Merge remote-tracking branch 'origin/main' into pdf
# Conflicts:
#	docs/scorecard.md
2026-11-08 01:09:29 +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 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 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 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 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 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 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
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
Triwarr d297dd3a2d PDF: validate --pdf-dpi, band the raster conversion, complete the notices
- --pdf-dpi now rejects zero, negative, NaN and infinite values at parse time (unit-tested) instead of silently falling back to 300 DPI.
- The RGBA8 raster is converted and written in 256-row bands with a cancellation check per band, so the f32 buffer no longer duplicates a whole page; the pixel-memory estimate charges the retained raster instead of that buffer.
- docs/file-format-parity.md: the 2026-11-07 revision row is inside the revision table.
- NOTICE now reproduces the Hayro MIT notice, the Foxit/PDFium BSD-3-Clause text, Adobe's CMaps BSD-3-Clause text and the CC0 statement for the ICC profile; package.ps1 ships NOTICE and ATTRIBUTION.md in both installers.
2026-11-07 20:12:46 +01:00
Triwarr 060d35265a PDF: keep the raster importer clippy-clean and refresh the scorecard
- Iterate the page sizes with their index instead of indexing the vector (clippy::needless_range_loop).
- Fix the .ai dispatch test's module path.
- Regenerate docs/scorecard.md after the merge (10 of 197 settings).
2026-11-07 19:46:18 +01:00
Triwarr ca92d936c0 PDF: import raster pages through craft-pdf instead of PDFium
- craft-pdf (the shared Rust/Hayro reader in craft-libs, rev c5a1cbf) renders each page; no shared library is loaded or shipped, and every desktop platform works.
- Raster pages only: editable text/vector import and the pdf_text/pdf_vectors options are removed (they can return later through craft-pdf's interpret device). Page geometry, artboards, page range, budgets, cancellation and warnings are kept; the effective DPI now respects craft-pdf's 8192 px side and 64M px page limits.
- Drops pdfium-render, the PDFium download in CI, the build-script copy and the packaging/licence staging; records the Hayro/fonts/CMaps/ICC assets in ATTRIBUTION.md and NOTICE.
- \.ai\ files starting with %PDF- now take the PDF importer, matching the comment.
- Attribution, architecture and file-format-parity docs updated.
2026-11-07 19:41:22 +01:00
ba3ea95007 raw: honour ActiveArea in Hasselblad 3FR/FFF (PR #9058)
The decoder set the active area and the crop to the whole plane and never
read ActiveArea, so a file with masked borders and no DefaultCrop developed
with the borders in. Read ActiveArea like the DNG path, use it as the
initial crop, and place DefaultCrop relative to it as DNG does. Also give
3FR/FFF its own row in the camera raw table instead of "embedded preview
only".

Co-Authored-By: Gotya-OFFCIAL <Gotya-OFFCIAL@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 19:39:30 +01: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 Mann b8b539c845 Merge origin/main into PR #9058 (raw: Hasselblad 3FR/FFF) 2026-11-07 19:37:23 +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 e6ba4aca42 Merge pull request #5845 from devius/ka-language
i18n: Georgian (ka) interface language
2026-11-07 19:19:01 +01:00
David MannandClaude Opus 5.5 7c0cc59ca3 Merge main into feat/auto-219-8-panel-command-check
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 19:13:19 +01: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 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
74570b1f53 PR #8485: regenerate the scorecard after merging main
main added preferences since the PR's last merge, so the toolColors field now
makes it 10 of 195 settings that do nothing (was 10 of 194 on main); the
ui-parity preference row follows the scorecard.

Co-Authored-By: GyoJoong Kum <david32123kr@gmail.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 18:02:02 +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
a3712435c3 Merge main into #5269 (Brush Tip Shape Angle/Roundness layout)
main moved brush_sections.rs to panels/ with its tests in
panels/brush_sections/tests.rs, and gave the Angle and Roundness fields
accessible names. Keep the PR's left column and right-hand widget with
main's accessible names, move the PR's three layout tests and
section_harness_width into the new tests file, and find the captions with
main's caption_rect (get_by_label now also matches the named fields).
Docs: both sides' status entries kept.

Co-Authored-By: augrclk <217665348+augrclk@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 17:07:55 +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 6d408847ae Merge pull request #9876 from SvenCarstensen/codex/guide-position-units
Guide dialogs: add Position Tab navigation and preserve exact positions
2026-11-07 16:49:49 +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 f98218cbe8 Merge pull request #10529 from luben93/raw/nef-lossy-after-split-v2
raw: decode Nikon "lossy after split" NEFs
2026-11-07 16:06:23 +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
Hartmut Nörenberg 2b68188779 Regenerate the scorecard after merging main 2026-11-07 15:42:23 +01:00
FredApps 0c88c596bf Merge pull request #11684 from RickiNano/fix/windows-pen-eraser-end-2285
Windows: the pen's eraser end selects the Eraser (#2285)
2026-11-07 15:40:37 +01: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
Hartmut Nörenberg 819e6382fd chore(docs): regenerate the scorecard after the skip-transform-when-placing preference
53917dc17 (#9075, Preferences: Skip Transform when Placing, #8492) added
General::skip_transform_when_placing to crates/engine/src/prefs.rs, so the
prefs audit total in the scorecard is 194, not the 193 the committed file
says (the unread count stays 10). The regeneration in 3c4431945 (#11984)
covered #11322's total of 193 but predated this merge, so every open PR's
gate job fails with "docs/scorecard.md is stale: run cargo xtask scorecard
and commit the result".

This is the committed output of `cargo xtask scorecard` at base 67e3457b0:
the Workspace and UI summary row and the prefs-audit prose, 193 -> 194, two
lines, no source changes. `cargo xtask parity` produces no change here.
2026-11-07 14:55:05 +01: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
Hartmut Nörenberg c5defde144 docs: regenerate parity and scorecard after merging main
From the merged tree: the menu count goes to 662 of 662 live, main's 661
plus the Reset Transform item this PR adds, and the prefs audit counts
193 `Preferences` leaves where the committed scorecard still said 192
because main's #11322 added the pref `group_tools` without regenerating.
Both files are `cargo xtask parity` and `cargo xtask scorecard` output,
not hand-edited.
2026-11-07 14:22:33 +01: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 MannandClaude Opus 5.5 3c44319455 docs: regenerate the scorecard after #11322 added a setting (#11983)
The prefs audit counts 193 settings since Preferences.groupTools landed;
docs/scorecard.md still said 192, which failed the gate and the Windows
staleness test on main.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 13:56:20 +01:00
David Mann 41aa2b86f5 Merge pull request #3693 from funkvay-star/feat/levels-reset-clipping
Levels: Alt-drag clipping display (#3328)
2026-11-07 13:38:09 +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
Sven Carstensen 2928191557 Merge main and retain guide keyboard and exact-position fixes 2026-11-07 11:54:29 +01:00