Korg1ch
0c1a59495f
test(actions): Hue/Saturation writes and reads hue under H in .atn ( #8302 , #8308 )
2026-10-21 20:46:33 +03:00
Korg1ch
e3de56c639
fix(actions): Hue/Saturation uses Photoshop's hue key H in .atn files ( #8302 , #8308 )
...
The Hst2 adjustment wrote and read hue under 'Hue '; Photoshop's key is 'H ' (stringID hue, as PhotoCraft's PSD Hue/Saturation smart filter already uses). Exported actions failed in Photoshop with a program error, and Photoshop-recorded actions imported without their hue. Export writes 'H '; import reads it, and still reads 'Hue ' from PhotoCraft's own older files.
2026-10-21 20:26:44 +03:00
Korg1ch
c2ddc8045e
test(ui): the tab strip's » button stays at the right end however many tabs fit ( #8290 )
2026-10-21 20:05:44 +03:00
Korg1ch
4ee0acbb20
fix(ui): pin the document tabs' » button to the strip's right end ( #8290 )
...
The overflow button sat right after the last tab that fit, leaving a gap of up to a tab's width at the end of the strip. Photoshop keeps it at the strip's right end; so do both the Pro and the Studio tab strips now.
2026-10-21 20:05:44 +03:00
Korg1ch
a6b950c4fc
test(actions): Export As is recorded and replayed; a bad recorded step is an error ( #7207 )
2026-10-21 19:29:16 +03: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
Korg1ch
01784f104f
test(raw): a developed raw takes the Raw Defaults resolution on every open path; other files keep theirs ( #7789 )
2026-10-21 18:28:11 +03:00
Korg1ch
699bbd4b85
fix(engine): a developed raw opens at Preferences › Raw Defaults › Resolution ( #7789 )
2026-10-21 18:28:11 +03:00
Korg1ch
3d3b67b74c
test(ui-egui): light themes outline the slider knob at 3:1 ( #7927 )
2026-10-21 18:28:10 +03:00
Korg1ch
76e4e81e33
fix(ui-egui): outline the slider knob in the light themes ( #7927 )
2026-10-21 18:28:10 +03:00
Korg1ch
bf47df8907
test(ui-egui): Save a Copy suggests the document's own name with the preference on ( #8080 )
2026-10-21 18:28:09 +03:00
Korg1ch
5f4c636b09
fix(ui-egui): File Handling preference to not append "copy" when saving a copy, as in Photoshop ( #8080 )
2026-10-21 18:28:09 +03:00
Korg1ch
66ff3bf7eb
test(engine): a Displace smart filter keeps its embedded map; an outside new map is refused before it is read ( #7423 )
2026-10-21 18:26:00 +03:00
Korg1ch
d13facdc28
test(ui): slice handles resize their edges; the middle still moves; locked slices keep their size ( #7863 )
2026-10-21 18:25:43 +03:00
Korg1ch
dcfac95286
test(ui): Slice Select and Slice refuse presses while slices are locked ( #7865 )
2026-10-21 18:25:36 +03:00
Korg1ch
06d55f7adb
fix(ui): locked slices can't be selected with Slice Select, and both slice tools say why ( #7865 )
2026-10-21 18:25:35 +03:00
Korg1ch
3c7ee9eded
fix(engine): Displace on a Smart Object embeds its map in the smart filter, as Photoshop does ( #7423 )
2026-10-21 18:23:45 +03:00
Korg1ch
019eb273cc
fix(ui): Slice Select's handles resize the selected slice ( #7863 )
2026-10-21 18:23:27 +03:00
Korg1ch
4919146079
test(ui-egui): the dock's width range follows the window; 700 is no longer cut to 520 ( #7896 )
2026-10-21 07:52:48 +03:00
Korg1ch
c9cd56e165
fix(ui-egui): the dock can be dragged as wide as the window allows, not only 520 points ( #7896 )
2026-10-21 07:52:48 +03:00
Korg1ch
c41a569dd8
test(ui-egui): Alt pressed during a drag leaves the menu bar alone in either release order ( #8113 )
2026-10-21 07:33:58 +03:00
Korg1ch
1e93f2cbb7
fix(ui-egui): Alt held during a drag is no menu-bar tap, so Enter commits the transform ( #8113 )
2026-10-21 07:33:58 +03:00
Korg1ch
ee19856487
test(ui-egui): clicking below the layers deselects them; a row still selects ( #8100 )
2026-10-21 05:28:32 +03:00
Korg1ch
18aa6a199b
fix(ui-egui): a click on the empty Layers panel space deselects every layer, as in Photoshop ( #8100 )
2026-10-21 05:28:31 +03:00
Korg1ch
3d7d62e349
test(io): cmls entries without enab inherit the last visibility or start visible ( #8093 )
2026-10-21 05:05:56 +03:00
Korg1ch
385d2a7a01
fix(io): a layer comp entry without enab inherits the previous visibility, as Photoshop reads cmls ( #8093 )
2026-10-21 05:05:55 +03:00
Korg1ch
773fc08763
test(i18n): Simplified Chinese counted messages are translated
2026-10-21 04:17:38 +03:00
Korg1ch
576fd9d353
fix(i18n): translate the 14 counted status messages missing from Simplified Chinese
2026-10-21 04:17:37 +03:00
Korg1ch
322c61c765
test(i18n): Korean counted messages are translated
2026-10-21 04:17:32 +03:00
Korg1ch
b0171aa9ee
fix(i18n): translate the 14 counted status messages missing from Korean
2026-10-21 04:17:32 +03:00
Korg1ch
d0b371f92a
test(i18n): Polish counted messages use all three plural forms
2026-10-21 04:17:25 +03:00
Korg1ch
fc95c055dc
fix(i18n): translate the 14 counted status messages missing from Polish
2026-10-21 04:17:24 +03:00
Korg1ch
9461446919
test(i18n): Indonesian counted messages are translated
2026-10-21 04:17:09 +03:00
Korg1ch
dc428e4db6
fix(i18n): translate the 14 counted status messages missing from Indonesian
2026-10-21 04:17:09 +03:00
Korg1ch
53b2e1fc9a
test(ui-egui): page keys scroll a zoomed canvas a screen, a step, sideways and to its corners ( #8057 )
2026-10-21 01:35:08 +03:00
Korg1ch
fdbac3ca03
fix(ui-egui): Page Up/Down, Home and End scroll the canvas, as in Photoshop ( #8057 )
2026-10-21 01:35:08 +03:00
Korg1ch
4d6d735ff9
test(io): developed CR2 and RW2 raws carry their EXIF, without orientation or pixel dimensions ( #6957 )
2026-10-20 18:28:13 +03:00
Korg1ch
7296d0d8b2
fix(io): a developed camera raw keeps the raw's EXIF for File Info's Camera Data ( #6957 )
2026-10-20 18:28:13 +03:00
Korg1ch
5f8b124efa
test(ui-egui): Slice Select's icon differs from Object Selection's and Slice's ( #7859 )
2026-10-20 16:27:12 +03:00
Korg1ch
5634b5155a
fix(ui-egui): Slice Select gets its own icon, the Slice knife with a pointer ( #7859 )
2026-10-20 15:50:02 +03:00
Korg1ch
52312331d8
test(engine): Emboss saves as Embs with integer Angl/Hght/Amnt and loads back ( #7946 )
2026-10-20 14:56:00 +03:00
Korg1ch
38611da546
fix(engine): .atn save and load map Filter › Stylize › Emboss to Photoshop's Embs ( #7946 )
2026-10-20 14:56:00 +03:00
Korg1ch
9819df5002
test(ui-egui): clicking a note shows its author and colour ( #7940 )
2026-10-20 13:59:18 +03:00
Korg1ch
d26d32cafe
fix(ui-egui): a selected note shows its author and colour in the Note options bar ( #7940 )
2026-10-20 13:59:17 +03:00
Korg1ch
09749739ad
test(io): a PSB's lnk2/pths/cinf are written as 8B64 with an 8-byte length ( #7937 )
2026-10-20 13:38:41 +03:00
Korg1ch
c706938bde
fix(io): PSB writes 8-byte-length global blocks with the 8B64 signature ( #7937 )
2026-10-20 13:38:07 +03:00
Korg1ch
4fea6ffda4
test(ui-egui): Fixed Size fields show and take the unit picked on them ( #7910 )
2026-10-20 12:39:05 +03:00
Korg1ch
53c3ff543b
fix(ui-egui): Fixed Size marquee width and height take any length unit ( #7910 )
2026-10-20 12:39:05 +03:00
Korg1ch
258e17b017
test(ui-egui): ⌘ over a thumbnail shows the load cursor and badge ( #7824 )
2026-10-20 12:10:41 +03:00
Korg1ch
feb0ea6a5b
fix(ui-egui): the pointer over a layer thumbnail shows what a ⌘-click loads ( #7824 )
2026-10-20 12:10:40 +03:00
Korg1ch
295901cf3f
test(ui): the shape dialog shows Width and Height in the picked unit and remembers it ( #7786 )
2026-10-20 11:02:35 +03:00
Korg1ch
db2b55f66e
fix(ui): Create Rectangle/Ellipse/Triangle/Polygon: right-click Width or Height to pick their unit ( #7786 )
2026-10-20 11:02:35 +03:00
Korg1ch
4a3f3ba665
test(ui): an Alt+right-drag in the Liquify dialog resizes the brush where it was, with no stroke ( #7884 )
2026-10-20 10:30:33 +03:00
Korg1ch
24b8b027e9
fix(ui): Liquify's Alt-drag brush resize keeps the brush in place and doesn't paint ( #7884 )
2026-10-20 10:30:32 +03:00
Korg1ch
aede66995d
test(ui): Delete and Backspace delete the selected slice; locked and auto slices keep the layer ( #7862 )
2026-10-20 06:44:12 +03:00
Korg1ch
2c030a300c
fix(ui): Delete with Slice Select deletes the selected slice, not the layer ( #7862 )
2026-10-20 06:44:11 +03:00
Korg1ch
e92e5164a8
test(io): an indexed GIF keeps its table and transparent entry; malformed GIFs give no table ( #7886 )
2026-10-20 06:18:48 +03:00
Korg1ch
04a2169b44
fix(io): an indexed GIF opens in Indexed Color with its colour table ( #7886 )
2026-10-20 05:45:16 +03:00
Korg1ch
ec0fc7cb0e
test(atn): strict export refuses Minimum / Maximum with Roundness; Squareness round-trips ( #7233 )
2026-10-19 21:37:45 +03:00
Korg1ch
59b03f2948
fix(atn): a Minimum / Maximum step with Preserve: Roundness is not exported as Squareness ( #7233 )
2026-10-19 21:37:21 +03:00
Korg1ch
b287a884f4
test(engine): a job applied during a later recording is not recorded there ( #7289 )
2026-10-19 21:36:24 +03:00
Korg1ch
07b9600561
fix(engine): a background job's step goes only to the recording it was started in ( #7289 )
2026-10-19 21:36:23 +03:00
Korg1ch and Brandon Thomas
990483a95e
Actions: Apply Layer Comp is recorded by the comp's name, so it plays in any document ( #7181 ) ( #7790 )
...
* fix(engine): record Apply Layer Comp by the comp's name, not its document-local id (#7181 )
* test(engine): a recorded Apply Layer Comp applies the comp of that name in another document (#7181 )
---------
Co-authored-by: Brandon Thomas <echelon@gmail.com >
2026-10-19 13:44:51 -04:00
Korg1ch
8c2cfdba6a
fix(linux): keep crash-recovery autosaves in $XDG_STATE_HOME, out of the config folder ( #6612 ) ( #6941 )
...
* fix(linux): keep crash-recovery autosaves in $XDG_STATE_HOME, out of the config folder (#6612 )
* test(linux): cover the XDG state recovery folder (#6612 )
2026-10-19 13:32:14 -04:00
Korg1ch
af0857372b
test(web): the boot module tells gzip from wasm the browser already inflated ( #7639 )
2026-10-19 12:37:55 +03:00
Korg1ch
cb1b479452
fix(web): start the app when the server already inflated its gzip part ( #7639 )
2026-10-19 12:37:54 +03:00
Korg1ch
f3fb5781ef
Lens Blur: an alpha channel as the depth map source, as in Photoshop ( #7400 ) ( #7508 )
...
* fix(filters): Lens Blur reads its depth from an alpha channel, listed in Depth Map › Source as in Photoshop (#7400 )
* test(filters): Lens Blur depth from an alpha channel by name or index, its errors, and the Source menu (#7400 )
2026-10-18 17:23:32 -04:00
Korg1ch
2a9a35f038
test(menus): Ctrl+Alt+I then Alt up leaves the bar alone and Enter confirms Image Size ( #7481 )
2026-10-19 00:04:38 +03:00
Korg1ch
8c6166849a
fix(menus): Alt held through a shortcut no longer puts the keyboard on the menu bar, so Enter reaches the dialog ( #7481 )
2026-10-19 00:04:38 +03:00
Korg1ch
f8e4a1344f
Print: the last print's settings survive a relaunch, as in Photoshop ( #7410 ) ( #7526 )
...
* fix(print): the last print's settings are kept in the preferences, so Print opens with them after a relaunch (#7410 )
* test(print): the last print's settings survive a relaunch for Print and Print One Copy (#7410 )
2026-10-18 16:57:24 -04:00
Korg1ch
a4436074c9
Font field: ↑/↓ step through the fonts after a pick, as in Photoshop ( #7407 ) ( #7426 )
...
* fix(type): ↑/↓ on the focused font field step through the families after a pick, as in Photoshop (#7407 )
* test(type): the font field keeps the focus after a pick and ↑/↓ step the families (#7407 )
2026-10-18 16:56:10 -04:00
Korg1ch
9b4648e195
Font menu: hovering a font no longer grows its row and makes the list jump ( #7406 ) ( #7425 )
...
* fix(type): font menu rows keep their size when hovered or selected, so the list no longer jumps (#7406 )
* test(type): hovering a font row moves no row and keeps the menu width (#7406 )
2026-10-18 16:56:04 -04:00
Korg1ch
ccdf082c62
test(caf): erased sampling area previews as an error; a failed OK keeps the workspace open ( #7384 )
2026-10-18 17:49:09 +03:00
Korg1ch
f0ef89baf6
fix(caf): an erased sampling area previews as an error, and a failed OK keeps the workspace open ( #7384 )
2026-10-18 17:48:53 +03: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
Korg1ch
84f326fa25
Actions: a Paint Bucket step keeps its explicit colour through .atn ( #7199 ) ( #7208 )
...
* fix(atn): a Paint Bucket step keeps its explicit colour through .atn export and import (#7199 )
* test(atn): an explicit Paint Bucket colour survives an .atn round trip (#7199 )
2026-10-18 03:07:23 -04:00
Korg1ch
f04fc80267
fix(engine): flip and rotate presets turn about the selection's bounds, as Free Transform does ( #6928 ) ( #6967 )
...
* fix(engine): flip and rotate presets turn about the selection's bounds, as Free Transform does (#6928 )
* test(engine): cover flips and turns about the selection (#6928 )
2026-10-18 03:07:18 -04:00
Korg1ch
36d6b669d4
test(engine): Content-Aware Fill with an empty sampling area is refused and changes nothing ( #6532 )
2026-10-18 09:46:18 +03:00
Korg1ch
0f12ac151f
fix(engine): refuse a Content-Aware Fill with nothing to sample instead of filling black ( #6532 )
2026-10-18 09:19:41 +03:00
Korg1ch
cc3ca41c6d
test(liquify): zoom keys step the preview, not the canvas; pinch and wheel zoom about the pointer ( #7210 )
2026-10-18 04:17:32 +03:00
Korg1ch
5ed2a1ff99
fix(liquify): zoom the preview with ⌘+/⌘−/⌘0/⌘1, a trackpad pinch and ×1.1 wheel notches, as in Photoshop ( #7210 )
2026-10-18 04:17:32 +03:00
Korg1ch
3ee6620935
test(ui): cover the Adaptive Wide Angle constraint menu and the orient op
2026-10-18 03:00:09 +03:00
Korg1ch
7e5a97385e
fix(ui): right-click an Adaptive Wide Angle constraint for its orientation menu, as in Photoshop
2026-10-18 03:00:09 +03:00
Korg1ch
00e4423fcc
test(compose): Dissolve effects are speckled, tile-independent and match on the GPU ( #6995 )
2026-10-18 02:57:55 +03:00
Korg1ch
e0d90b2896
fix(compose): layer effects in Dissolve mode speckle instead of painting as Normal ( #6995 )
2026-10-18 02:57:44 +03:00
Korg1ch
4c881326ea
fix(windows): keep crash-recovery autosaves out of the roaming profile ( #5648 ) ( #6412 )
...
* fix(windows): keep crash-recovery autosaves out of the roaming profile (#5648 )
* test(windows): cover the local recovery folder and moving old autosaves (#5648 )
2026-10-16 20:19:06 -06:00
Korg1ch
3c75db7a80
fix(linux): avoid duplicate AppImage desktop launcher when managed by AM / AppMan ( #6392 ) ( #6394 )
...
* fix(linux): avoid duplicate AppImage desktop launcher when managed by AM / AppMan (#6392 )
* test(linux): cover AM / AppMan launcher detection in AppRun smoke test (#6392 )
2026-10-16 16:37:17 -06:00
1874214f79
fix(ui): keep brush settings section lock icons permanently visible ( #4278 ) ( #4300 )
...
* fix(ui): keep brush settings section lock icons permanently visible (#4278 )
* test(ui): verify brush settings locks stay visible and toggle on click (#4278 )
* Format the lock-icon test
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
---------
Co-authored-by: Brandon Thomas <echelon@gmail.com >
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-12 21:00:58 -04:00
Korg1ch
0d6a83e3ce
fix(ui): add Brushes button at top of Brush Settings control list ( #4265 ) ( #4354 )
...
* fix(ui): add Brushes button at top of Brush Settings control list (#4265 )
* test(ui): verify Brushes button at top of Brush Settings opens Brushes panel (#4265 )
2026-10-12 20:56:18 -04:00
Korg1ch
4122bc6918
fix(ui): use a linear gradient ramp glyph for the Gradient tool icon ( #4172 ) ( #4335 )
...
* fix(ui): use a linear gradient ramp glyph for the Gradient tool icon (#4172 )
* test(ui): verify Gradient tool icon rasterizes a left-to-right ramp (#4172 )
2026-10-12 20:56:09 -04:00
Korg1ch
ec61df6f06
fix(ui): make clickable tab, checkbox, and radio labels non-selectable ( #3972 ) ( #4331 )
...
* fix(ui): make clickable tab and radio labels non-selectable with pointing hand cursor (#3972 )
* test(ui): verify New Document preset tabs show pointing hand cursor instead of text caret (#3972 )
2026-10-12 20:55:47 -04:00
Korg1ch
dc35ce7630
fix(linux): avoid duplicate AppImage desktop launcher ( #3623 ) ( #3641 )
2026-10-12 10:35:47 -04:00