Commit Graph
2441 Commits
Author SHA1 Message Date
FredApps 1daf3bc079 Merge approved PhotoCraft PR #4890: Add scrollbar visibility preferences (#3262)
Port behavior and regression coverage into current modules; preserve current upstream behavior.
Port visibility preference, choice registration, live panel style and canvas override. Keep current animated camera and toolbar exclusions. Relocate misplaced persistence regression to prefs tests; retain current parity score counts.
2026-10-29 06:09:52 +01:00
FredApps 32f583f1d6 Merge approved PhotoCraft PR #5082: fix(mixer-brush): Alt-click samples the foreground colour like the Brush (#4873)
Port behavior and regression coverage into current modules; preserve current upstream behavior.
Preserve current spatial Mixer Brush Alt-click sampling and live transaction architecture; add compatible point-sample command without foreground mutation. Retain sample across automatic reload until foreground changes and preserve all new regressions.
2026-10-29 06:05:02 +01:00
FredApps 1953077164 Merge approved PhotoCraft PR #5270: Layer Style: Gradient Overlay takes any number of colour stops (#5177)
Port behavior and regression coverage into current modules; preserve current upstream behavior.
Port arbitrary-stop editor into current responsive dialog. Preserve source interpolation and exact model colors; unchanged dense imported snapshot lists roundtrip while edited lists retain 256-stop cap. Retain both validation guards and all original regression tests. Correct saved-path callers, floating-window and crop fixtures found by frozen 88-head all-target check.
2026-10-29 06:02:29 +01:00
FredApps 8323688e1f Merge approved PhotoCraft PR #5453: Shapes: independent fill and stroke paints (solid, gradient, pattern), part 1
Port behavior and regression coverage into current modules; preserve current upstream behavior.
Integrated independent exact shape paints and atomic pattern clipboard snapshots into current modules, preserving current soft-mask coverage, shape cache keys and gradient stop caps. Shared bounded COW pattern sampling now retains minification filtering; shapes/clipboards resolve lazy catalog entries to full pixels. Preserved CPU/GPU/depth/model regression matrices; also corrected missing glow-test enum imports found by the 80-head check.
2026-10-29 05:53:29 +01:00
FredApps c81347aaa8 Merge approved PhotoCraft PR #5493: Import Photoshop custom shape sets into the Shapes panel
Port behavior and regression coverage into current modules; preserve current upstream behavior.
Integrated bounded atomic CSH set parsing, unique shape/group naming and native Shapes panel import with inline-data authorization guards; preserved duplicate-name, inner-hole, malformed-second-record and preferences-reload regressions. Combined independent catalog additions and retained current parity metadata.
2026-10-29 05:47:45 +01:00
FredApps 9df3697de8 Merge approved PhotoCraft PR #5650: Guides: ⌥ turns a dragged guide; dropping one on either ruler deletes it (#5034)
Port behavior and regression coverage into current modules; preserve current upstream behavior.
Added Alt guide rotation in current ruler/tool-input modules and engine Move Guide, retaining click-versus-drag selection, deletion on either ruler, colors, ruler-origin units and snapping. Selection follows the new orientation/index after a successful turn; original guide-turn/deletion regressions retained.
2026-10-29 05:46:02 +01:00
FredApps a72296ee57 Merge approved PhotoCraft PR #6139: Fix painting workflows, File Info and layer selection
Port behavior and regression coverage into current modules; preserve current upstream behavior.
Ported Behind paint across engine/render and shared options-bar/canvas mode menus, preserving Clear and current popup ownership. Added localized responsive picker title/width and File Info multiline fields without dropping ordered fields, Browse or camera metadata; ported Pen anchor repositioning, copy cursor, grayscale-target sampling and authorized select-under-cursor dispatch into current modules with original regressions.
2026-10-29 05:39:00 +01:00
FredApps a62b9ee217 Merge approved PhotoCraft PR #8347: Type: Roman Hanging Punctuation (trailing marks hang, don't steer the alignment)
Port behavior and regression coverage into current modules; preserve current upstream behavior.
Ported hanging punctuation into current line placement and kerning modules, preserving forced breaks, bounded edge-tip row merging, justified-last-line behavior, area exclusions and independent Roman orientation shaping; kept PSD/engine/UI regression coverage.
2026-10-29 05:22:57 +01:00
FredApps 2e2eec3a43 Merge approved PhotoCraft PR #9478: fix(text): vertical type sets roman letters upright, one per em, as Photoshop does (#9470)
Port behavior and regression coverage into current modules; preserve current upstream behavior.
Ported upright Roman classification, independent unkerned/unligated em advances and tab reflow into current Para/VerticalPiece shaping modules; preserved area and paragraph flow; retained vertical geometry and PSD BaselineDirection regressions.
2026-10-29 05:18:29 +01:00
FredApps d98e419542 Merge approved PhotoCraft PR #5176: Play CopyCat, AJ and Line and Color action sets; keep patterns across restarts; Shift Edge scale
Port behavior and regression coverage into current modules; preserve current upstream behavior.
Ported mappings and smart Save into current modules, preserving bounded authorized playback; migrated legacy PAT by committing validated per-pattern assets before atomic authoritative index; preserved same-ID replacements and builtin edits; added temporary-store interruption, corruption, duplicate ID/name and restart regression coverage. Current all-target compilation passed before final ownership guard refinement; focused tests pending.
2026-10-29 05:15:28 +01:00
FredApps 889018cabb Preserve action definition history regression with extended action metadata 2026-10-29 05:05:06 +01:00
FredApps e0bca6baf6 Use explicit float mask format in combined Fill parity regression 2026-10-29 05:02:27 +01:00
FredApps 7da5d15a34 Merge approved PhotoCraft PR #7255: fix(engine): guard trim and duplicate merged against documents exceeding render limits (#7223)
Port behavior and regression coverage into current modules; preserve current upstream behavior.
Preflight existing render-cap helper before allocation, retain post-render completeness checks, and preserve the oversized Trim/Duplicate atomic-refusal regression.
2026-10-29 04:53:33 +01:00
FredApps 99cf87f5ec Merge approved PhotoCraft PR #7742: Actions: a fractional setting an integer field cannot hold is refused, not rounded
Port behavior and regression coverage into current modules; preserve current upstream behavior.
Reuse current ExactLong refusal for Ripple/Crystallize, preserve command-specific rounding rules, improve the diagnostic and retain all fractional/whole-value regression cases.
2026-10-29 04:49:39 +01:00
FredApps 959b41dca4 Merge approved PhotoCraft PR #9606: fix(ui): the Color panel remembers its options across restarts
Port behavior and regression coverage into current modules; preserve current upstream behavior.
Persist and restore Color panel options through the current dock/startup modules and regenerate the scorecard from current source.
2026-10-29 04:46:40 +01:00
FredApps a4862c8fee Merge approved PhotoCraft PR #5515: Selecting subject now automatically applies to selected layer, and us…
Preserve both independent additions and moved regression modules without changing production merge semantics.
2026-10-29 04:40:56 +01:00
FredApps 4546543013 Refresh 61-head progress and adapt filter-result error propagation 2026-10-29 04:37:44 +01:00
FredApps 6c225b13c3 Merge approved PhotoCraft PR #5010: Layer Style: Photoshop's layout (three columns, OK/Cancel/New Style/Preview on the right, one-line rows) [depends on #4938]
Port behavior and regression coverage into current modules; preserve current upstream behavior.
Port responsive three-column Layer Style with owned right-side actions, preserve saved defaults/Blend If and current Curves/modal routing, and keep all original layout/Cancel tests registered.
2026-10-29 04:36:06 +01:00
FredApps 93f11e42aa Adapt Frequency Separation module registration and finish icon attribution reconciliation 2026-10-29 04:22:09 +01:00
FredApps 2f6156bebe Merge approved PhotoCraft PR #5090: Actions: add editable PhotoCraft Essentials starter presets
Port behavior and regression coverage into current modules; preserve current upstream behavior.
Register starter actions and bounded background-blur command in current modules; preserve persistent migration marker and portable JSON defaults compatibility.
2026-10-29 04:18:29 +01:00
FredApps ab9c044fba Merge approved PhotoCraft PR #3461: Replay recorded layer visibility on the intended named layer
Port behavior and regression coverage into current modules; preserve current upstream behavior.
Resolve recorded visibility targets before both engine and shell authorization, preserving bounded playback, paused dialogs and existing journal coalescing; retain ActionState take generation.
2026-10-29 04:16:32 +01:00
FredApps 6e13443ca6 Merge approved PhotoCraft PR #3455: Undo and redo action definition edits from the Actions panel
Port behavior and regression coverage into current modules; preserve current upstream behavior.
Keep action-definition undo separate from document history and preserve upstream panel routing and layout.
2026-10-29 04:12:47 +01:00
FredApps 45e790c216 Merge approved PhotoCraft PR #1991: feat(actions): import and export reusable Actions JSON files
Port behavior and regression coverage into current modules; preserve current upstream behavior.
Register bounded Actions JSON module in current command tree; preserve all ambient path restrictions and inline-data allowances with regressions.
2026-10-29 04:11:37 +01:00
FredApps 17c4dabf90 Merge approved PhotoCraft PR #4305: Filter > Other > Frequency Separation (#1714)
Preserve current module structure and port the approved source/test changes to unique current locations.
2026-10-29 03:56:41 +01:00
FredApps bf33e45694 Merge approved PhotoCraft PR #9342: fix(io, engine): Embed Color Profile writes sRGB for an untagged document (#9325)
Preserve current module structure and port the approved source/test changes to unique current locations.
2026-10-29 03:51:21 +01:00
FredApps 537f206dc3 Merge approved PhotoCraft PR #9509: fix: an edit at full coverage keeps its result over huge 32-bit values
Port unchanged PR hunks to their unique current module locations after upstream file splits.
2026-10-29 03:36:56 +01:00
FredApps cb1c76e6cf Merge approved PhotoCraft PR #5939: fix(paint): scale blur sigma with brush size (#5892)
Port unchanged PR hunks to their unique current module locations after upstream file splits.
2026-10-29 03:36:14 +01:00
FredApps 6ad071b77a Merge approved PhotoCraft PR #9651: perf(algo): row-parallel local_sharpen with fast-path protect_detail (#5426) 2026-10-29 03:30:04 +01:00
FredApps cd6c4464b0 Merge approved PhotoCraft PR #9594: fix(engine): copied type keeps its size across resolutions after an edit 2026-10-29 03:30:01 +01:00
FredApps 7e061febf4 Merge approved PhotoCraft PR #9472: fix(io): import a Displace smart filter that names its map file without embedding it (#9162) 2026-10-29 03:29:54 +01:00
FredApps e8692b87a4 Merge approved PhotoCraft PR #9418: Color Lookup: honour the .3dl Mesh header's cube edge and output depth (#9078, #9073) 2026-10-29 03:29:52 +01:00
FredApps a074b07b4b Merge approved PhotoCraft PR #9172: Gradient Fill layer: default to Foreground to Transparent (#8708) 2026-10-29 03:29:48 +01:00
FredApps ce77d3def1 Merge approved PhotoCraft PR #8931: feat(algo): describe the Gaussian blur as data for other devices 2026-10-29 03:29:42 +01:00
FredApps 86fcbf26ee Merge approved PhotoCraft PR #7648: Pen: Path Operations menu, as in Photoshop (#1397) 2026-10-29 03:29:31 +01:00
FredApps 71e49e861a Merge approved PhotoCraft PR #6387: Video Frames to Layers: every page of a multi-page TIFF (part of #6379) 2026-10-29 03:29:23 +01:00
FredApps b426bd284b Merge approved PhotoCraft PR #4742: fix(macos): bundle photocraft-cli and resolve it from droplet scripts 2026-10-29 03:28:35 +01:00
Brennan StehlingandClaude Opus 5.5 c855685c7f test: cover group and clip-base effect damage, and mask undo coverage (#9329)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-27 23:09:58 -07:00
Brennan StehlingandClaude Opus 5.5 2119158a5e perf: a pixel change damages only the tiles that changed; command rects become checked hints (#9329)
step_damage narrows a layer whose only change is in its surfaces (pixels, mask, type,
smart-object and fill caches) to the bounding box of the tiles that differ: a merge walk of
the two tile maps, pointer compares only. A mask's tiles grow by its feather, all of them by
the layer's effects and the effects of the groups around it, never past the layer's whole
extents. A frame-spanning effect whose frame moved keeps the whole extents (#4053). Undo,
redo and History jumps get it for free: undoing a 60 px dab on a full-canvas layer redraws
its tiles, not the canvas, and so does a fill or filter on a small selection.

The painting commands' own damage rects go through one door, Session::hint_damage, which
intersects them with the edit's damage. Debug and test builds count a hint that misses a
changed tile in Session::damage_misses and log it; nothing panics. refresh_type_layers reports
step_damage instead of None.

Deleted: note_damage and layers_damage (identical to step_damage after layer.setProps and
layer.translate), note_inert_insert (step_damage already steps over inert layers, #1771),
and the engine's siblings_of they used.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-27 23:09:58 -07:00
aiongg 2b1c6b93c3 Merge main into split-filter-adjust-crop-fx-builders
crop_ui.rs moved to tools/; the PR's builders replace main's Clippy extractions of the same code; #6723's Color Lookup save carried into the moved encoder.
2026-10-28 04:22:40 +00:00
Khawar Zamman Wani 8b835a103c Merge origin/main into pen-path-operations 2026-10-28 09:22:55 +05:30
Dylan M. Taylor af45d71447 Refactor engine for strict Clippy checks 2026-10-27 23:47:06 +00:00
Finn NewickandClaude Opus 5.5 d42dd4c630 Merge origin/main into feat/operator-separable
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 22:51:51 +00:00
David MannandClaude Opus 5.5 5ccb6fb723 Merge main
Conflicts with main's batch #9880:
- psd file.rs / layer.rs: #5287 (PSB by encoded size, RLE tables widened on
  promotion) against #6583's lazy reader. Main's new widening and length code
  read `.data`, which #6583 leaves empty while the bytes stay in the source;
  it now goes through `encoded()` / `encoded_len()` (also the auto-merged
  lines in `rle_widening`, `encoded_len` and `LayerRecord::write`), and the
  lazy reader sets `write_as_psb: false`. New test
  `a_lazy_psd_promotes_to_the_same_psb_as_an_eager_one`: a lazily read PSD
  writes the same PSB bytes as an eager one; it fails with a `.data` read.
- direct_select.rs / vector_ui.rs: #9321's Type Path and #6353's hidden
  Work Path both kept.
- io tests main.rs: both modules. scorecard.md regenerated (12 of 181);
  ui-parity.md and gaps.md follow it.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-27 19:49:42 +01:00
aiongg 0e3a6f7e8d Merge #9421: XML: deeply nested ORA, KRA, Camera Raw XMP, .kys and layer XMP are an error, not a crash (#9419) 2026-10-27 17:44:23 +00:00
aiongg d01f2de508 Merge #9393: Preferences: the Generator checkbox reads Enable Generator, as in the reference application (#9392) 2026-10-27 17:44:16 +00:00
aiongg 2f6392574d Merge #9385: Actions: save and read the Lab Lightness channel as Lght (#9384) 2026-10-27 17:44:15 +00:00
aiongg a78414a720 Merge #7412: Print: list printers and spool from one thread at a time 2026-10-27 17:44:09 +00:00
aiongg 6e9fb30dbc Merge #6723: Color Lookup: PSD save keeps a .3dl/.look LUT file as loaded (#6544) 2026-10-27 17:44:05 +00:00
aiongg 01594f1f25 Merge #5890: PSD: Frame layers keep their stroke (#4381) 2026-10-27 17:44:01 +00:00
aiongg 0662885964 Merge #5789: Channels: CMYK channels duplicate, load, split and merge as tone, not ink (#5787) 2026-10-27 17:43:58 +00:00