aiongg
dfcdb011da
Merge PR #8186 : fix(paths): the Work Path is drawn only while selected or a path tool is active ( #6551 )
2026-10-22 15:37:32 +00:00
aiongg
26919b7a9a
Merge PR #8152 : fix(ui): grey out Select and Mask in the options bar without a selection ( #7520 )
2026-10-22 15:37:32 +00:00
aiongg
b18d7f1749
Merge PR #7922 : Create Rectangle and the other shape dialogs: right-click Width or Height to pick their unit ( #7786 )
2026-10-22 15:37:31 +00:00
aiongg
05b0ae05e4
Merge PR #6896 : fix: detect dominant foregrounds with Object Finder
...
docs/gaps.md: header and change-log row once each (the PR's row on top).
docs/ui-parity.md: header and change-log row once each; the Selection row keeps main's #6549 sentence and adds the PR's #6548 sentence.
2026-10-22 15:37:31 +00:00
aiongg
7e3517c090
Merge PR #6835 : Object Finder: hovering with an empty active layer shows the status-bar hint ( #6549 )
2026-10-22 15:37:30 +00:00
aiongg
704a420860
Merge PR #6692 : Find small objects in large documents with the Object Finder
2026-10-22 15:37:30 +00:00
aiongg
a1d23fd2a6
Merge PR #6484 : Shapes: the Color panel, Swatches and Gradients fill the selected shape ( #5568 )
...
crates/engine/src/presets/tests.rs: tests appended by both sides, kept whole (the PR's before main's persistence sections).
crates/ui-egui/src/swatches_ui.rs: tests appended by both sides, kept whole.
2026-10-22 15:37:30 +00:00
aiongg
afc3619b52
Merge PR #6252 : Paths panel: rename a path in place, and name the Work Path when saving it
...
crates/ui-egui/src/vector_ui.rs: kept both sides in paths_panel (main's trash-drag state, the PR's rename id) and both new tests; the PR's tests call path_context_actions with main's added layer argument (None).
2026-10-22 15:37:29 +00:00
aiongg
c9173cc9f2
Merge PR #6201 : Add hex color input to shape Fill and Stroke popovers
...
docs/ui-parity.md: header keeps main's date and gains the PR's change entry; change-log rows for both, newest first.
2026-10-22 15:37:29 +00:00
aiongg
26dbd7953b
Merge PR #5834 : Shapes: rounded corners on live triangles, polygons and stars (TOOL-214-12)
...
docs/scorecard.md: ours (regenerated at combine).
docs/ui-parity.md: kept main's header and added the PR's change entry once.
2026-10-22 15:37:29 +00:00
aiongg
f094216481
Merge PR #5412 : fix(pen): an unclosed path stays with its document ( #5373 )
...
crates/ui-egui/src/lib.rs: kept both cancel_stale calls (perspective crop from main, pen from the PR).
crates/ui-egui/src/vector_ui.rs pen_down: kept main's resume-at-endpoint block and the PR's pen_doc claim; the claim comes first so a resumed path is claimed by its document too.
2026-10-22 15:37:29 +00:00
aiongg
7654482fd1
Merge PR #3330 : Moving a shape keeps its rendering: Artboards to Files matches the reference app
...
crates/engine/src/layer_multi_cmds.rs: took the PR's call to shift_shape; main's added check that the moved path (plus stroke) stays inside the canvas moved into shift_shape (vector_cmds.rs) so both behaviours hold.
2026-10-22 15:37:29 +00:00
Zuujis
38bc5e916c
refactor(atn): build the clipping-mask and three adjustment events with macros ( #8401 )
...
Create/Release Clipping Mask and Brightness/Contrast, Black & White and
Gradient Map were written out by hand with the same body as
adjustment_event! or each other, which SonarCloud counts as duplicated new
code (photocraft's quality gate fails on 9.8% duplication from the GrpL
entry). adjustment_event! takes an optional command id, and clipping_event!
builds the two clipping events. The mapping table is unchanged.
2026-10-21 20:28:12 -04:00
Dylan M. Taylor
f4bc90b93f
ci: pin GitHub Actions to full commit SHA (SonarCloud githubactions:S7637) ( #8368 )
...
Pin third-party actions to full-length commit SHAs (with version comments)
instead of mutable tags/branches to prevent supply-chain tampering via
retagged releases. Resolves SonarCloud rule githubactions:S7637.
2026-10-21 20:12:22 -04:00
Dylan M. Taylor
3ec52a9ff1
security: enforce HTTPS on curl downloads (SonarCloud S6506) ( #8369 )
...
Add --proto '=https' to curl invocations so redirects cannot downgrade to
plaintext HTTP. Resolves SonarCloud S6506 (shell/docker/githubactions).
2026-10-21 20:11:03 -04:00
Dylan M. Taylor
9b18f57344
test: use tokio::time::sleep in async test poll loop (SonarCloud rust:S7488) ( #8373 )
...
The multi-thread #[tokio::test] polled with a blocking std::thread::sleep,
stalling a runtime worker. Use tokio::time::sleep(..).await instead.
2026-10-21 19:35:38 -04:00
aiongg
ad694eb17d
Merge pull request #8370 from storytold/sonar-fix/actions-script-injection
...
security: prevent script injection in fuzz workflow (SonarCloud S7630)
2026-10-21 19:26:09 -04:00
aiongg
ba40dffb25
Merge pull request #8355 from aiongg/integration-10
...
Integration batch: #8229 , David's follow-ups and 85 FredApps-approved PRs on main
2026-10-21 19:02:54 -04:00
aiongg
ce85a5ae78
Merge PR #8229 : Integration batch: 8 PRs on main
2026-10-21 22:30:00 +00:00
aiongg
33214b70f4
Merge PR #6708 : Paths: the path selected in the Paths panel is drawn on the canvas ( #6550 )
2026-10-21 22:30:00 +00:00
aiongg
989a685b3f
Merge PR #6208 : Preferences: Save in Background off saves in the foreground ( #6207 )
2026-10-21 22:29:59 +00:00
aiongg
3b04ff873c
Merge PR #5840 : Export As: Resample menu, incl. Nearest Neighbor ( #5838 )
2026-10-21 22:29:59 +00:00
aiongg
f32f882f3a
Merge main into integration-10
...
# Conflicts:
# apps/photocraft-web/src/web.rs
# apps/photocraft/src/services.rs
# crates/engine/src/file_cmds/tests.rs
# crates/engine/src/float_cmds.rs
# crates/engine/src/float_cmds/tests.rs
# xtask/src/corpus.rs
# xtask/src/corpus_pins.rs
# xtask/src/main.rs
2026-10-21 21:56:26 +00:00
aiongg
21a952698a
Integration: Lens Flare and the render filters' colours read with main's double and typed enum_name helpers, for #6160
2026-10-21 21:56:22 +00:00
aiongg
1a388f8ba7
Merge PR #8229 : Integration batch: 8 PRs on main
...
# Conflicts:
# crates/io/src/smart_map.rs
# docs/file-format-parity.md
2026-10-21 21:56:22 +00:00
aiongg
64d042aef5
Integration: Create Clipping Mask also maps the GrpL code and a named-layer target, for #6881 and #4496
2026-10-21 21:56:21 +00:00
aiongg
0e9cbbc88e
Integration: one tools.setColors and one clipping-mask mapping in .atn export, for #6881 and #4496
2026-10-21 21:56:21 +00:00
aiongg
719fb44d42
Merge PR #6881 : Actions: .atn Select Subject, Select and Mask, Color Range, clipping and layer masks, colours map to commands (part of #6745 )
2026-10-21 21:56:21 +00:00
aiongg
3b16c2bc98
Merge PR #5729 : Move tool: ΔX/ΔY readout beside the pointer while dragging ( #5727 )
2026-10-21 21:56:21 +00:00
aiongg
bd133eee81
Merge PR #5855 : Displace: OK asks for the displacement map, as in Photoshop ( #5806 )
2026-10-21 21:56:21 +00:00
aiongg
43e9587590
Merge PR #6363 : New Document: Color Profile, the working space or another profile of the mode ( #321 )
2026-10-21 21:56:21 +00:00
aiongg
20adb5f1d7
Merge PR #6410 : Artboards: layers outside the boards stay visible over the pasteboard ( #5712 )
2026-10-21 21:56:21 +00:00
aiongg
1bc45862cb
Merge PR #6813 : A layer that doesn't fit in GPU memory no longer breaks GPU drawing: older pages are freed and the layer is retried
2026-10-21 21:56:21 +00:00
aiongg
64526a6c28
Merge PR #7904 : Filter Gallery › Halftone Pattern: a tone-keeping screen at 45°
2026-10-21 21:56:21 +00:00
aiongg
f97c28828d
Merge PR #6873 : HEIF: honour the nclx colour description; HLG/PQ HEICs open as linear BT.2020 32-bit ( #6752 )
2026-10-21 21:56:21 +00:00
aiongg
1837a19362
Merge PR #6908 : Background redraw: keep the last finished composites, so a solo's restore uploads instead of recompositing (part of #6528 )
2026-10-21 21:56:21 +00:00
aiongg
29388de427
Merge PR #6919 : Selections don't mark a document modified ( #6865 )
2026-10-21 21:56:21 +00:00
aiongg
c71322043c
Merge PR #7941 : Light themes outline the slider knob (UI-217-11, #7927 )
2026-10-21 21:56:21 +00:00
aiongg
e4a413241a
Merge PR #8004 : Windows on ARM: auto picks DirectX 12 for Qualcomm graphics ( #7537 )
2026-10-21 21:56:21 +00:00
aiongg
403dc5043a
Merge PR #8096 : CodeRabbit follow-ups for the #8095 batch
2026-10-21 21:56:21 +00:00
aiongg
07e4020360
Merge PR #8098 : PSD layer comps: an entry without enab inherits the previous visibility, as in Photoshop ( #8093 )
2026-10-21 21:56:21 +00:00
aiongg
3b6fabb04a
Merge PR #6801 : Actions that start with Deselect play on when nothing is selected
2026-10-21 21:56:21 +00:00
aiongg
a06c4639f6
Merge PR #5590 : Warp: apply a large layer's warp in the background, with progress and Esc to cancel ( #1015 )
2026-10-21 21:56:21 +00:00
aiongg
7b81efddcb
Merge PR #5436 : IO: open .psd through the PSD reader, not codecs ( #5258 )
2026-10-21 21:56:21 +00:00
aiongg
dd83f87d3c
Merge PR #5581 : Layers: Group Layers creates the group collapsed ( #5571 )
2026-10-21 21:56:20 +00:00
aiongg
0fe1d3233d
Merge PR #5907 : Text: apply anti-alias mode shaping when rasterizing type ( #5902 )
2026-10-21 21:56:20 +00:00
aiongg
c865e3b93b
Merge PR #5928 : BMP export: Indexed Color documents save as palette BMPs
2026-10-21 21:56:20 +00:00
aiongg
b9b97f15ff
Merge PR #6243 : GPU: pin the keep-overlap ordering with a tile-growth regression test
2026-10-21 21:56:20 +00:00
aiongg
5eada4996a
Merge PR #7219 : Actions: record File › Export › Export As and replay it with its settings ( #7207 )
2026-10-21 21:56:20 +00:00
aiongg
abfb8cce96
Merge PR #8042 : Codecs: Fix corrupted CMYK JPEG exports ( #8008 )
2026-10-21 21:56:11 +00:00