..
adjust_cmds
Invert (⌘I) inverts the targeted layer mask ( #780 ) ( #838 )
2026-10-07 23:30:53 -04:00
analysis_cmds
Analysis, notes, proof views, workspaces (+ in-progress work of other agents)
2026-10-01 22:49:07 -04:00
artboard_cmds
Format: adopt the craft-family rustfmt.toml and format the workspace
2026-10-04 11:31:17 -04:00
automate_cmds
Format: adopt the craft-family rustfmt.toml and format the workspace
2026-10-04 11:31:17 -04:00
brush_cmds
Bound paint stroke work ( #678 , #679 ) ( #751 )
2026-10-07 17:12:49 -04:00
canvas_geom
Fix flaky canvas_geom undo test: isolate the text-gamma test in its own binary ( #135 )
2026-10-05 01:36:37 -04:00
channel_cmds
Apply Image onto a transparent layer no longer turns it black ( #607 )
2026-10-07 09:12:11 -04:00
comps_cmds
Slice, layer comp and type style ids out of u32 range are rejected, not wrapped onto a real item ( #914 ) ( #930 )
2026-10-07 23:13:41 -04:00
distort_cmds
fix: use wasm-safe timing for Liquify ( #393 )
2026-10-07 10:38:32 +07:00
edit_menu_cmds
Reject geometry params that would silently wrap through i64->i32 narrowing ( #803 )
2026-10-07 18:02:12 -04:00
eraser_cmds
Magic Eraser and Background Eraser tools; canvas rotation/flip/size move vector geometry ( #70 )
2026-10-04 16:17:39 -04:00
file_cmds
Automation: an allowed command can't run a denied one on its behalf ( #861 )
2026-10-07 23:58:26 -07:00
filters_ext
Filter › Render › Relight: redirect a photo's lighting ( #735 )
2026-10-07 16:45:57 -04:00
float_cmds
Selections: drag to move the outline; ⌘-drag floats the selected pixels (engine commands) ( #686 )
2026-10-07 16:45:31 -04:00
gallery_cmds
Analysis, notes, proof views, workspaces (+ in-progress work of other agents)
2026-10-01 22:49:07 -04:00
gradient_fill_cmds
Gradients honour explicit transparency stops; smart filter commands accept an explicit layer target ( #465 , #466 ) ( #544 )
2026-10-07 13:21:22 +07:00
layer_copy_cmds
Drag layers onto another document's tab to copy them there ( #589 ) ( #851 )
2026-10-07 23:37:42 -04:00
layer_menu_cmds
Handle Stack Mode sources with no visible layers ( #770 )
2026-10-07 17:57:43 -04:00
magnetic_cmds
Add the Magnetic Lasso tool ( #864 )
2026-10-07 19:42:45 -04:00
mask_view_cmds
Masks: Alt-click to view mask, Cmd-click vector mask to select, vector-mask target brackets ( #196 ) ( #256 ) ( #256 )
2026-10-05 17:47:46 -04:00
mode_cmds
Format: adopt the craft-family rustfmt.toml and format the workspace
2026-10-04 11:31:17 -04:00
multichannel_cmds
Analysis, notes, proof views, workspaces (+ in-progress work of other agents)
2026-10-01 22:49:07 -04:00
plugin_cmds
Sandboxed WebAssembly plug-ins: photocraft-plugins (wasmi), plugin.* commands, Filter › Plug-ins ( #67 )
2026-10-04 16:08:28 -04:00
prefs
Add rendering modes and CPU fallback recovery ( #434 )
2026-10-07 06:11:06 -04:00
preset_store
Preset store: a store directory that doesn't exist yet reads as empty on Windows too ( #878 )
2026-10-07 16:57:32 -07:00
presets
Layer Style: complete multi-instance effects and dialog parity ( #157 ) ( #786 )
2026-10-07 19:05:15 -04:00
print_cmds
Format: adopt the craft-family rustfmt.toml and format the workspace
2026-10-04 11:31:17 -04:00
retouch_cmds
Add the Content-Aware Move tool ( #213 ) ( #814 )
2026-10-07 18:40:14 -04:00
slice_cmds
Slice, layer comp and type style ids out of u32 range are rejected, not wrapped onto a real item ( #914 ) ( #930 )
2026-10-07 23:13:41 -04:00
smart_cmds
Layer › Smart Objects › Convert to Layers ( #535 ) ( #829 )
2026-10-07 23:44:21 -04:00
type_extra_cmds
History: tool and preset names, Frame from Layers as one step, undo/redo restore the targeted layers ( #513 , #528 , #446 , #496 , #495 ) ( #551 )
2026-10-07 13:54:10 +07:00
type_styles_cmds
Fix document run and ID overflow ( #684 , #685 ) ( #749 )
2026-10-07 13:49:46 -07:00
variables_cmds
Format: adopt the craft-family rustfmt.toml and format the workspace
2026-10-04 11:31:17 -04:00
vector_cmds
Bound paint stroke work ( #678 , #679 ) ( #751 )
2026-10-07 17:12:49 -04:00
video_cmds
Format: adopt the craft-family rustfmt.toml and format the workspace
2026-10-04 11:31:17 -04:00
web_cmds
Save for Web: slices never overwrite each other, and overlapping slices keep their HTML cells ( #908 , #909 ) ( #929 )
2026-10-07 23:12:27 -04:00
actions_cmds.rs
Actions: actions.record/stop/play/list commands for agents and the CLI (part of #219 ) ( #622 )
2026-10-07 17:12:52 -04:00
adjust_cmds.rs
Invert (⌘I) inverts the targeted layer mask ( #780 ) ( #838 )
2026-10-07 23:30:53 -04:00
adjust_params.rs
32-bit documents: Levels don't clip the input and output ranges ( #403 )
2026-10-07 06:53:56 -04:00
align_cmds.rs
Never crash: the engine is panic-free (Rule 9) ( #54 )
2026-10-04 13:26:26 -04:00
analysis_cmds.rs
Arbitrary rotation starts at the ruler line's straightening angle ( #660 )
2026-10-07 16:33:52 -04:00
artboard_cmds.rs
Bound layer-group nesting at import and Group Layers (stack-overflow guard) ( #796 )
2026-10-07 18:46:45 -04:00
automate_cmds.rs
CLI batch: recorded-action steps, --format .ext, strict --quality, refuse --out = --in ( #489 , #490 , #491 , #492 ) ( #545 )
2026-10-07 13:21:07 +07:00
brush_cmds.rs
Brush size and hardness keys are remappable in Keyboard Shortcuts ( #626 ) ( #828 )
2026-10-07 21:49:00 -04:00
brush_key_cmds.rs
Brush size and hardness keys are remappable in Keyboard Shortcuts ( #626 ) ( #828 )
2026-10-07 21:49:00 -04:00
brush_preset_cmds.rs
Brushes: Tilt Scale, Brush Projection, Spacing checkbox, section locks, Mixer Wetness/Mix; Brushes grid + drag and drop; options bar through tools.setBrush ( #174 )
2026-10-05 07:21:23 -04:00
build_info.rs
progress, release workflows
2026-10-01 10:49:51 -04:00
canvas_geom.rs
Smart objects keep their four-corner (Distort / Perspective) placement ( #426 )
2026-10-07 06:58:01 -04:00
channel_cmds.rs
Invert (⌘I) inverts the targeted layer mask ( #780 ) ( #838 )
2026-10-07 23:30:53 -04:00
color_cmds.rs
Monitor profile auto follows each window's display; what is applied is visible ( #569 ) ( #591 )
2026-10-07 09:02:58 -04:00
commands.rs
Drag layers onto another document's tab to copy them there ( #589 ) ( #851 )
2026-10-07 23:37:42 -04:00
comps_cmds.rs
Slice, layer comp and type style ids out of u32 range are rejected, not wrapped onto a real item ( #914 ) ( #930 )
2026-10-07 23:13:41 -04:00
cutout_cmds.rs
fix(layers): a locked group locks the layers inside it ( #847 )
2026-10-07 20:18:27 -04:00
display_color_tests.rs
Monitor profile auto follows each window's display; what is applied is visible ( #569 ) ( #591 )
2026-10-07 09:02:58 -04:00
display_color.rs
Monitor profile auto follows each window's display; what is applied is visible ( #569 ) ( #591 )
2026-10-07 09:02:58 -04:00
distort_cmds.rs
fix(layers): a locked group locks the layers inside it ( #847 )
2026-10-07 20:18:27 -04:00
edit_cmds.rs
Layer via Copy, Copy and Cut read only the selected area: 33x faster on 24 MP ( #668 ) ( #985 )
2026-10-08 03:17:48 -04:00
edit_menu_cmds.rs
fix(layers): a locked group locks the layers inside it ( #847 )
2026-10-07 20:18:27 -04:00
eraser_cmds.rs
fix(layers): a locked group locks the layers inside it ( #847 )
2026-10-07 20:18:27 -04:00
extra_cmds.rs
fix(layers): a locked group locks the layers inside it ( #847 )
2026-10-07 20:18:27 -04:00
file_cmds.rs
Lossy WebP: a pure-Rust VP8 encoder with quality and lossless controls ( #648 ) ( #880 )
2026-10-07 21:12:38 -04:00
fill_cmds.rs
Pencil tool, Edit › Fill… dialog and "Rasterize?" prompt ( #213 ) ( #279 ) ( #279 )
2026-10-05 19:48:03 -04:00
fill_key_cmds.rs
Shortcuts: rebindable fill keys, D/X and held temporary tools ( #249 ) ( #275 ) ( #275 )
2026-10-05 18:50:47 -04:00
filters_ext.rs
fix(algo): Path Blur clamps per-path speeds ( #708 ) ( #840 )
2026-10-07 21:06:10 -04:00
filters.rs
Invert (⌘I) inverts the targeted layer mask ( #780 ) ( #838 )
2026-10-07 23:30:53 -04:00
float_cmds.rs
fix(layers): a locked group locks the layers inside it ( #847 )
2026-10-07 20:18:27 -04:00
frame_cmds.rs
History: tool and preset names, Frame from Layers as one step, undo/redo restore the targeted layers ( #513 , #528 , #446 , #496 , #495 ) ( #551 )
2026-10-07 13:54:10 +07:00
fx_view_cmds.rs
Layers rows: name truncates before the fx/lock/link indicators; fx triangle; Collapse All Groups ( #144 , #143 ) ( #167 )
2026-10-05 03:38:47 -04:00
gallery_cmds.rs
Colours: handle non-hex Unicode values without an internal error ( #261 ) ( #261 )
2026-10-05 18:14:20 -04:00
gradient_fill_cmds.rs
Gradients honour explicit transparency stops; smart filter commands accept an explicit layer target ( #465 , #466 ) ( #544 )
2026-10-07 13:21:22 +07:00
group_view_cmds.rs
Layers groups expand/collapse ( #126 ); every displayed shortcut fires ( #127 ) ( #141 )
2026-10-05 02:28:57 -04:00
image_cmds.rs
Layer › Smart Objects › Convert to Layers ( #535 ) ( #829 )
2026-10-07 23:44:21 -04:00
inspect.rs
Masks: Alt-click to view mask, Cmd-click vector mask to select, vector-mask target brackets ( #196 ) ( #256 ) ( #256 )
2026-10-05 17:47:46 -04:00
jobs_tests.rs
Add the Content-Aware Move tool ( #213 ) ( #814 )
2026-10-07 18:40:14 -04:00
jobs.rs
Automation: an allowed command can't run a denied one on its behalf ( #861 )
2026-10-07 23:58:26 -07:00
layer_copy_cmds.rs
Drag layers onto another document's tab to copy them there ( #589 ) ( #851 )
2026-10-07 23:37:42 -04:00
layer_menu_cmds.rs
fix(layers): a locked group locks the layers inside it ( #847 )
2026-10-07 20:18:27 -04:00
layer_multi_cmds.rs
Drag layers onto another document's tab to copy them there ( #589 ) ( #851 )
2026-10-07 23:37:42 -04:00
layer_nav_cmds.rs
Keyboard layer navigation: Alt+[ / Alt+] / Alt+, / Alt+. and Shift to add (part of #352 ) ( #470 )
2026-10-07 09:31:15 +07:00
layer_style.rs
Layer Style: complete multi-instance effects and dialog parity ( #157 ) ( #786 )
2026-10-07 19:05:15 -04:00
lens_cmds.rs
fix(engine): Camera Raw clamps the noise amounts to their range ( #707 ) ( #839 )
2026-10-07 20:24:42 -04:00
lib.rs
Automation: an allowed command can't run a denied one on its behalf ( #861 )
2026-10-07 23:58:26 -07:00
magnetic_cmds.rs
Add the Magnetic Lasso tool ( #864 )
2026-10-07 19:42:45 -04:00
mask_view_cmds.rs
Masks: Alt-click to view mask, Cmd-click vector mask to select, vector-mask target brackets ( #196 ) ( #256 ) ( #256 )
2026-10-05 17:47:46 -04:00
migrate_cmds.rs
Persist migrated presets with preferences ( #728 )
2026-10-07 15:38:29 -04:00
mode_cmds.rs
fix(layers): a locked group locks the layers inside it ( #847 )
2026-10-07 20:18:27 -04:00
multichannel_cmds.rs
Never crash: the engine is panic-free (Rule 9) ( #54 )
2026-10-04 13:26:26 -04:00
notes_cmds.rs
Photoshop oracles via storytold/photocraft-corpus: pinned corpora, corpus feature, test-corpus, CI job ( #190 ) ( #190 )
2026-10-05 17:47:33 -04:00
paint_cmds.rs
Gradients honour explicit transparency stops; smart filter commands accept an explicit layer target ( #465 , #466 ) ( #544 )
2026-10-07 13:21:22 +07:00
path_edit_cmds.rs
Direct Selection tool: reshape pen and shape paths after they're drawn ( #790 ) ( #865 )
2026-10-07 22:58:31 -04:00
pattern_cmds.rs
Pencil tool, Edit › Fill… dialog and "Rasterize?" prompt ( #213 ) ( #279 ) ( #279 )
2026-10-05 19:48:03 -04:00
photo_cmds.rs
Background jobs: engine job API, progress and cancel (part of #210 ) ( #289 )
2026-10-06 15:41:38 -04:00
pick_cmds.rs
Move tool: Auto-Select on by default; a click picks and drags the layer under the pointer ( #296 ) ( #330 ) ( #330 )
2026-10-06 10:46:55 -04:00
pixels.rs
Invert (⌘I) inverts the targeted layer mask ( #780 ) ( #838 )
2026-10-07 23:30:53 -04:00
plugin_cmds.rs
Invert (⌘I) inverts the targeted layer mask ( #780 ) ( #838 )
2026-10-07 23:30:53 -04:00
prefs.rs
fix(engine): keyboard shortcut bulk set reports in-call clashes ( #719 ) ( #799 )
2026-10-07 14:46:08 -07:00
preset_import_cmds.rs
Background jobs: engine job API, progress and cancel (part of #210 ) ( #289 )
2026-10-06 15:41:38 -04:00
preset_store.rs
Preset store: a store directory that doesn't exist yet reads as empty on Windows too ( #878 )
2026-10-07 16:57:32 -07:00
print_cmds.rs
Format: adopt the craft-family rustfmt.toml and format the workspace
2026-10-04 11:31:17 -04:00
proof_sim.rs
Monitor profile auto follows each window's display; what is applied is visible ( #569 ) ( #591 )
2026-10-07 09:02:58 -04:00
render_cmds.rs
Colours: handle non-hex Unicode values without an internal error ( #261 ) ( #261 )
2026-10-05 18:14:20 -04:00
retouch_cmds.rs
Add the Content-Aware Move tool ( #213 ) ( #814 )
2026-10-07 18:40:14 -04:00
select_extra_cmds.rs
Fix Transform Selection hang on far-off-canvas transforms (Rule 9)
2026-10-04 08:34:23 -04:00
selection_cmds.rs
Add the Magnetic Lasso tool ( #864 )
2026-10-07 19:42:45 -04:00
slice_cmds.rs
Slice, layer comp and type style ids out of u32 range are rejected, not wrapped onto a real item ( #914 ) ( #930 )
2026-10-07 23:13:41 -04:00
smart_cmds.rs
Layer › Smart Objects › Convert to Layers ( #535 ) ( #829 )
2026-10-07 23:44:21 -04:00
smartselect_cmds.rs
Follow-ups to #665 , #666 , #734 : Photoshop's mask-only Remove Background, one-step eye sweep, no-clone Show Only ( #824 )
2026-10-08 04:25:22 +07:00
snap.rs
Layout documents: fix GPU device loss, live Move tool, local damage, no per-frame work ( #125 , #128 ) ( #226 ) ( #226 )
2026-10-05 10:53:15 -04:00
stamp_cmds.rs
fix(layers): a locked group locks the layers inside it ( #847 )
2026-10-07 20:18:27 -04:00
symmetry_cmds.rs
Start context-menu parity across canvas, paths, and document tabs ( #556 )
2026-10-07 07:45:26 -04:00
tests.rs
Drag-and-drop: place onto the canvas in Free Transform, open at a tab slot ( #739 )
2026-10-07 18:57:50 -04:00
timeline_cmds.rs
Format: adopt the craft-family rustfmt.toml and format the workspace
2026-10-04 11:31:17 -04:00
transform_cmds.rs
fix(layers): a locked group locks the layers inside it ( #847 )
2026-10-07 20:18:27 -04:00
trap_cmds.rs
Format: adopt the craft-family rustfmt.toml and format the workspace
2026-10-04 11:31:17 -04:00
type_caret_cmds.rs
Type: hitTest, caret and navigate commands so agents can edit text by position (part of #219 ) ( #623 )
2026-10-07 17:02:09 -04:00
type_cmds.rs
M9: create vertical type from the Type tool flyout ( #784 )
2026-10-07 18:53:56 -04:00
type_extra_cmds.rs
Type layers keep their name in step with their text ( #483 ) ( #501 )
2026-10-07 06:12:13 -04:00
type_spell_cmds.rs
fix(layers): a locked group locks the layers inside it ( #847 )
2026-10-07 20:18:27 -04:00
type_styles_cmds.rs
Slice, layer comp and type style ids out of u32 range are rejected, not wrapped onto a real item ( #914 ) ( #930 )
2026-10-07 23:13:41 -04:00
variables_cmds.rs
fix(automation): judge image.applyDataSet by the files it would read ( #870 )
2026-10-07 21:25:19 -04:00
vector_cmds.rs
Direct Selection tool: reshape pen and shape paths after they're drawn ( #790 ) ( #865 )
2026-10-07 22:58:31 -04:00
video_cmds.rs
Atomic saves: one crash-safe atomic_write for every document write ( #230 ) ( #230 )
2026-10-05 11:16:13 -04:00
vp_cmds.rs
fix(layers): a locked group locks the layers inside it ( #847 )
2026-10-07 20:18:27 -04:00
warp_cmds.rs
fix(warp): reject extreme rect params with BadParams ( #808 follow-up) ( #849 )
2026-10-07 21:04:05 -04:00
web_cmds.rs
Save for Web: slices never overwrite each other, and overlapping slices keep their HTML cells ( #908 , #909 ) ( #929 )
2026-10-07 23:12:27 -04:00
wia_cmds.rs
File > Import > WIA Support: 625/625 menu items live (100%)
2026-10-03 02:56:15 -04:00