Commit Graph
3466 Commits
Author SHA1 Message Date
aiongg ccb62fcd8f Merge PR #6038: Type: Korean paragraph text wraps between words, not syllables (fixes #5959) 2026-10-18 14:18:59 +00:00
aiongg 9692eea083 Merge PR #6346: File › Open: a file type filter per format (fixes #6337) 2026-10-18 14:18:59 +00:00
aiongg 17e3490142 Merge PR #6035: Image Size: Indexed Color resamples with Nearest Neighbor only (fixes #6019) 2026-10-18 14:18:58 +00:00
aiongg b9b4a73cc0 Merge PR #6338: Smart filters: an edited filter's dialog previews again (fixes #6324) 2026-10-18 14:18:58 +00:00
aiongg dad0881247 Merge PR #6366: Type: the text caret shows on a white background (part of #6085) 2026-10-18 14:18:57 +00:00
aiongg eb2b1517a8 Merge PR #6505: Character and Paragraph panels: size, leading, baseline shift and indents follow the Type units preference 2026-10-18 14:18:57 +00:00
aiongg b5fed83c79 Merge PR #6335: Replace Color: the sample eyedropper is armed when the dialog opens (fixes #6279) 2026-10-18 14:18:56 +00:00
aiongg c5c68d5de7 Merge PR #6344: Replace Color: a Result swatch whose Color Picker sets the sliders (fixes #6278) 2026-10-18 14:18:56 +00:00
aiongg fb678d7463 Merge PR #6476: Automation: a control token authenticates in either letter case (#6425) 2026-10-18 14:18:55 +00:00
Michael Higgins cd3ef1444f Merge branch 'main' into fix/5799-batch-same-format-raw 2026-10-18 10:16:37 -04:00
Michael Higgins 49e1ae898b Merge branch 'main' into fix/4845-autohide-taskbar 2026-10-18 10:15:00 -04:00
Michael Higgins d7760fd7c4 Merge branch 'main' into fix/6884-pen-tool 2026-10-18 10:14:26 -04:00
Michael Higgins e8e745b7c2 Merge branch 'main' into fix/txt2-edited-object-6968 2026-10-18 10:14:21 -04:00
Michael Higgins 62f94d3f9f Merge branch 'storytold:main' into fix/5713-smoothing-pressure-follows-brush 2026-10-18 10:10:31 -04:00
Michael Higgins 43ad6f2990 Merge branch 'storytold:main' into fix/5884-delay-load-windows-data-pdf 2026-10-18 09:44:31 -04:00
aiongg 19e3292c9f Merge PR #7141: perf(camera-raw): Shadows/Highlights 1.5× faster, bit for bit the same 2026-10-18 13:23:03 +00:00
aiongg 811abbc3e9 Merge PR #6333: Help › Search: ← / → and Space edit the field instead of driving the menu (#6332) 2026-10-18 13:23:02 +00:00
aiongg 94bb46f5cc Merge PR #6834: Object Selection: enclosed background gaps stay unselected, only object-like holes fill (#6556) 2026-10-18 13:23:02 +00:00
aiongg d5b9de755a Merge PR #6814: Re-saving a Photoshop 16-bit PSB no longer adds a second Transparency channel 2026-10-18 13:23:01 +00:00
aiongg 2437fc36c5 Merge PR #6046: fix(path): validate Make Selection options and guard selection state 2026-10-18 13:23:00 +00:00
aiongg 58d8d911a2 Merge PR #6003: Count: reject unknown groups instead of adding markers to the wrong group 2026-10-18 13:23:00 +00:00
aiongg eef436de45 Merge PR #5654: Count tool: deleting an earlier count group keeps the active group (#5653) 2026-10-18 13:22:59 +00:00
aiongg 785b9478d7 Merge PR #6771: Plug-ins: running a filter plug-in respects layer locks (#6770) 2026-10-18 13:22:59 +00:00
aiongg da96d71506 Merge PR #6863: Native format: refuse a .pcraft with out-of-range numbers when it is opened (#6862) 2026-10-18 13:22:58 +00:00
aiongg 45c5f41af0 Merge PR #7046: Render Video: GIF frame delay follows timelines under 1 fps (#7045) 2026-10-18 13:22:58 +00:00
aiongg c9ac35b3b1 Merge PR #7139: Perspective Crop and Rotate Arbitrary keep the Background opaque (#7138) 2026-10-18 13:22:57 +00:00
aiongg 71a5bc44be Merge PR #6499: Desktop: a control/automation flag without its value is a usage error (#6429)
apps/photocraft/src/main.rs: #6499's parse_launch_args is the one parser; it also takes main's --help/-h, -- and unknown-option errors (#6435); usage_exit_code is the one exit helper
2026-10-18 13:19:41 +00:00
aiongg e452f6ad80 Merge PR #6414: Web: a requested download no longer marks the document saved (#4962)
crates/ui-egui/src/lib.rs: Services keeps both main's file_stamp and #6414's write_unconfirmed
2026-10-18 13:16:00 +00:00
aiongg cab62b9516 Merge PR #6399: Brush: the Dual Brush tip keeps its proportion at tiny main sizes (#4809) 2026-10-18 13:15:52 +00:00
aiongg 2c8314165e Merge PR #6506: Refuse Affinity spot colours nested more than 4 levels deep 2026-10-18 13:15:51 +00:00
aiongg d072538dae Merge PR #5992: Retouch: bound every stroke command before its dense buffers (#4961, #6110) 2026-10-18 13:15:51 +00:00
aiongg 4127604122 Merge PR #6502: Engine: reject numeric overflow before document edits 2026-10-18 13:15:50 +00:00
aiongg 5676d7c5b0 Merge PR #5671: fix(svg): budget rasterised fallback layers across imports 2026-10-18 13:15:50 +00:00
Higgs32584andClaude Opus 5.5 98f4c9e1b8 test(psd): write the NUL in psd16_merged_transparency.rs as an escape
The test file held a literal NUL byte, so git treated it as binary.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 08:54:20 -04:00
PerchenkoAntonandBrandon Thomas 8d2e615ab9 i18n(uk): translate color picker titles and rasterization warnings (#6153)
Co-authored-by: Brandon Thomas <echelon@gmail.com>
2026-10-18 03:50:35 -04:00
MarekSpodBiedryandBrandon Thomas c39d752758 Translate the brush size and hardness shortcut rows in every language (#6742) (#6831)
Co-authored-by: Brandon Thomas <echelon@gmail.com>
2026-10-18 03:48:59 -04:00
Marco ArnulfoandBrandon Thomas d6ea04299f Document tabs: keep whole names, hide what doesn't fit, list every document in the » menu (#4525)
* Document tabs: keep whole names, hide what doesn't fit, list every document in the » menu (fixes #4487)

* Document tabs: check the active document in the » menu (#4487)

Like Photoshop's, the » menu marks the active document with a check mark,
drawn as the menu bar's menus draw theirs.

---------

Co-authored-by: Brandon Thomas <echelon@gmail.com>
2026-10-18 03:48:54 -04:00
dotCooCoo 99031545b2 Merge main into fix/abr-repeated-brush-names 2026-10-18 00:48:20 -07:00
cc772ad9dc Saving onto a dangling symlink writes through to its target (#6605) (#6649)
* fix(format): saving onto a dangling symlink writes through to its target (#6605)

resolve_symlink fell back to the link path when canonicalize failed, so an
atomic save renamed over the symlink and replaced it with a regular file.
Dangling chains now resolve lexically (relative targets included, with a
depth cap), so the bytes land at the target and the link survives; a
symlink loop is a clear error instead of a silent link replacement.

* Follow dangling links without folding .. by text

A folder on the way may itself be a symlink, so leave .. for the OS to resolve.

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

---------

Co-authored-by: highperfocused <highperfocused@pm.me>
Co-authored-by: Brandon Thomas <echelon@gmail.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 03:35:35 -04:00
wwew 04967b12f9 docs: write product name as PhotoCraft in engine module doc, LUT export header and image sources (#5454) 2026-10-18 03:35:28 -04:00
JunHyun ParkandClaude Opus 5.5 386368956f Korean: consistent terms in the Gradient Editor, Object Selection messages and shortcut hints (#6882)
Eighteen labels in ko.tsv used a different word than the rest of the
Korean catalog for the same term, or named a menu item by a label the
menu does not use (Reset All to Defaults reads 모두 기본값으로 초기화).
Only translation values change; placeholders and ellipses are untouched.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 03:35:22 -04:00
Tom InglingandClaude Opus 5.5 b3c8a2a7f3 Assign Profile and Convert to Profile: Preview, as in Photoshop; Black Point Compensation spelled out (#6825)
- Both dialogs get the Preview checkbox (`PREVIEWED`).
- The canvas shows a filter preview through the preview's own colour management (its profile and
  mode), not the committed document's: Assign Profile changes only the profile, so its preview
  looked unchanged. The preview keeps the document's id, so Proof Colors still apply.
- Previews run with the app's Color Settings: `working` is the chosen working space, not the
  built-in default.
- The `bpc` checkbox (Convert to Profile, Proof Setup) reads "Black Point Compensation" instead of
  "Bpc"; every catalog already translates it.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 03:35:17 -04:00
Carter Smith e9036c72c6 Focus font search when opening the picker (#7222)
* Focus font search when reopening the picker

* Keep font search focused through the opening click release
2026-10-18 03:35:12 -04:00
Jason Xiang 37beb18454 fix(codecs): keep EXR color channels within one layer (#5866) 2026-10-18 03:35:05 -04:00
David MannandClaude Opus 5.5 8a5a680674 Menus: one checkmark column keeps every label aligned (#5705) (#5809)
Menu rows prefixed their label with "✔ ", three spaces or nothing, so
unchecked toggles (Lock Guides, Lock Slices) sat at a different x than
checked and plain rows, most visibly in CJK translations. Every row,
submenu headers included, now reserves one fixed-width checkmark column
(the width of "✔ " in the button font) and draws the mark in it.

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-18 03:34:58 -04:00
Korg1ch 295a28a50b fix(ui): Ctrl/Cmd-drag in the Navigator zooms to the drawn rectangle, as in Photoshop (#6872) (#7140)
* fix(ui): Ctrl/Cmd-drag in the Navigator zooms to the drawn rectangle, as in Photoshop (#6872)

* test(ui): cover the Navigator zoom rectangle (#6872)
2026-10-18 03:34:52 -04:00
David MannandClaude Opus 5.5 44dc7c2c77 OpenRaster: layer locks no longer change silently on save (#7018) (#7019)
* OpenRaster: layer locks no longer change silently on save (#7018)

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

* ORA: the Background's position lock is not reported as lost (#7018)

Every new document's Background carries a position lock, so the warning made a
plain .ora unsavable in place.

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 03:34:47 -04:00
Michael HigginsandClaude Opus 5.5 a914c58a63 fix(ui): wide ellipse for Elliptical Marquee, dashed C + brush for Quick Selection (#6875) (#6917)
The Elliptical Marquee used a dashed circle and Quick Selection a brush
inside a dashed circular arc, so the two read alike. Photoshop draws the
marquee as a horizontal ellipse and Quick Selection as a brush in an
upright dashed rounded C. New original ellipse-dashed.svg; quick-selection.svg
redrawn; tests check the ellipse is wider than tall and the C runs down
the left edge.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 03:34:42 -04:00
NetterSilverandClaude Haiku 5.5 866e7bfe4e Upload 16-bit layer masks as R16Float instead of R32Float (#6845)
Fixes #6534

Co-authored-by: Claude Haiku 5.5 <noreply@anthropic.com>
2026-10-18 03:34:37 -04:00
NetterSilverandClaude Haiku 5.5 dfb4aa70ae Keep Color Sampler points on their pixel after flips and turns (#6720)
Found while testing crates/engine/src/commands.rs:117-120 (turn) with crates/engine/src/canvas_geom.rs:224 (Turn::affine); applied in crates/engine/src/lib.rs:807-814 (Session::edit)

Co-authored-by: Claude Haiku 5.5 <noreply@anthropic.com>
2026-10-18 03:34:32 -04:00