{ "selected_count": 108, "integrated_count": 70, "pending_count": 38, "integrated_prs": [ 9703, 9651, 9623, 9606, 9598, 9597, 9596, 9595, 9594, 9590, 9589, 9584, 9523, 9517, 9512, 9509, 9504, 9493, 9481, 9472, 9457, 9436, 9418, 9416, 9401, 9354, 9342, 9339, 9172, 9110, 9019, 9015, 9004, 8985, 8931, 8905, 8903, 8897, 8896, 8193, 8192, 8191, 7903, 7743, 7742, 7648, 7255, 7153, 6510, 6387, 6383, 6236, 5939, 5870, 5515, 5165, 5090, 5010, 4985, 4938, 4883, 4742, 4547, 4305, 3874, 3554, 3520, 3461, 3455, 1991 ], "pending_prs": [ 9478, 9282, 8986, 8892, 8347, 8074, 8039, 7848, 6621, 6492, 6449, 6139, 6026, 5744, 5650, 5493, 5453, 5270, 5176, 5082, 4993, 4992, 4890, 4783, 4763, 4711, 4042, 4035, 4023, 3967, 3748, 3519, 3464, 3387, 3345, 3142, 3139, 2300 ], "state": "PARTIAL INTEGRATION \u00e2\u20ac\u201d RESOLVING CONFLICTS; NOT READY FOR PORTABLE ACCEPTANCE BUILD", "manual_tests": "NOT RUN", "integrated_validation": "NOT RUN", "branch": "integration/approved-bugfix-parity-2026-10-29", "prs": [ { "number": 9703, "title": "Fix adjustment layer name clicks targeting masks", "head": "3605d30c38294c4d970e52f4a02f44f97e8bc1a9", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/9703#pullrequestreview-5655990760", "conflicts": [ "crates/ui-egui/src/panels.rs" ] }, { "number": 9651, "title": "perf(algo): row-parallel local_sharpen with fast-path protect_detail (#5426)", "head": "67666bdf72a58066df868868cef82e5b9cc838de", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/9651#pullrequestreview-5651366614", "conflicts": [] }, { "number": 9623, "title": "Pencil: keep a 1 px freehand line connected where it turns", "head": "652075f4da7fe905ad651eebc3a6c276fe1d7a5d", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/9623#pullrequestreview-5649212328", "conflicts": [] }, { "number": 9606, "title": "fix(ui): the Color panel remembers its options across restarts", "head": "6cc516a3d20120b678040050d95ccadc8d1dfd3f", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/9606#pullrequestreview-5647898187", "conflicts": [ "crates/ui-egui/src/panels.rs", "crates/ui-egui/src/prefs_ui.rs", "docs/scorecard.md" ] }, { "number": 9598, "title": "fix(ui): Liquify's Twirl Counterclockwise gets a mirrored twirl icon", "head": "47aea89e9220b996f0d5a0d2bb8b5938100b4ad1", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/9598#pullrequestreview-5647858443", "conflicts": [ "ATTRIBUTION.md" ] }, { "number": 9597, "title": "fix(ui): the layer list doesn't move with no layer selected", "head": "9429df26b371c04c2afa65228a60ded739b5fbc2", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/9597#pullrequestreview-5648898287", "conflicts": [ "crates/ui-egui/src/panels.rs" ] }, { "number": 9596, "title": "fix(io): drop a kept Txt2 once no type layers are left", "head": "e62013cfd652fa60470a0f7a185fbc8f3d2a2c92", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/9596#pullrequestreview-5647870259", "conflicts": [] }, { "number": 9595, "title": "fix(compose, gpu): a Pass Through group with Blend If renders isolated", "head": "75fa71a4f55a098061b12d91508b514565ab8dcf", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/9595#pullrequestreview-5647882992", "conflicts": [] }, { "number": 9594, "title": "fix(engine): copied type keeps its size across resolutions after an edit", "head": "46512521fec2b4b462c29d9fefd16398cb81212c", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/9594#pullrequestreview-5647890395", "conflicts": [] }, { "number": 9590, "title": "fix(io): PSD layer-effect contours keep at most 16 points", "head": "a9744ed44dc782613b19a97b8c159a091f73e669", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/9590#pullrequestreview-5647923229", "conflicts": [ "crates/io/src/effects_map.rs" ] }, { "number": 9589, "title": "fix(compose, gpu): an adjustment layer's This Layer range judges its result before Opacity", "head": "da157945077190e550b53a5e14b0536f62761292", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/9589#pullrequestreview-5647036365", "conflicts": [ "crates/compose/src/lib.rs", "crates/gpu/src/plan.rs" ] }, { "number": 9584, "title": "fix(compose, gpu): Blend If hard points match Photoshop at 16 bits and for Gray", "head": "fc0f7b1132f799b5bba7be642c9047499d95a887", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/9584#pullrequestreview-5647082363", "conflicts": [] }, { "number": 9523, "title": "Fix Type on a Path wrapping and caret positioning across closed-path seams", "head": "728782c595e768bdb6febc7f30e4d1456d13fd36", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/9523#pullrequestreview-5645920841", "conflicts": [ "crates/ui-egui/src/type_tool.rs" ] }, { "number": 9517, "title": "fix(ui): Layer Style scrolls on a short window so OK stays on screen", "head": "81b434c6149732eadc94e0465fea81bd075facd4", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/9517#pullrequestreview-5644911791", "conflicts": [ "crates/ui-egui/src/dialogs.rs" ] }, { "number": 9512, "title": "fix(compose, gpu): adjustment layers apply Fill inside the special eight blend modes", "head": "6c55561128caf5ac917eb3d174e8e7bb4bd48e23", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/9512#pullrequestreview-5644863033", "conflicts": [ "crates/compose/src/lib.rs", "crates/gpu/src/plan.rs" ] }, { "number": 9509, "title": "fix: an edit at full coverage keeps its result over huge 32-bit values", "head": "d78d7493d3f0b6e760c88de969ac810e9bc5d910", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/9509#pullrequestreview-5644707748", "conflicts": [] }, { "number": 9504, "title": "fix(ui): Keyboard Shortcuts records \u00e2\u0152\u02dcZ instead of undoing the capture", "head": "993c9ed167c6acd9bc8f87c6cff6e2c7abba17a8", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/9504#pullrequestreview-5644657832", "conflicts": [] }, { "number": 9493, "title": "fix(vector): a mask feather continues the mask past the canvas edge", "head": "61a413d8df9e90ee545eb08e57c5615aa2b29cea", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/9493#pullrequestreview-5644672718", "conflicts": [] }, { "number": 9481, "title": "fix(ui): new layer effects start from the Make Default values", "head": "7937adff961027154d795b8905e821244ae4f929", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/9481#pullrequestreview-5644538284", "conflicts": [ "crates/ui-egui/src/dialogs/layer_style.rs" ] }, { "number": 9478, "title": "fix(text): vertical type sets roman letters upright, one per em, as Photoshop does (#9470)", "head": "cc208ee0440bbdf1858565dca49667272a490c56", "status": "CONFLICT_PENDING", "receipt": "https://github.com/storytold/photocraft/pull/9478#pullrequestreview-5644503679", "conflicts": [ "crates/text/src/layout.rs", "crates/text/src/psd.rs" ] }, { "number": 9472, "title": "fix(io): import a Displace smart filter that names its map file without embedding it (#9162)", "head": "4bab657cd4fb4a91ced44d3721e63a002ca5068c", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/9472#pullrequestreview-5644841088", "conflicts": [] }, { "number": 9457, "title": "raw: faster tone stage (Shadows, Highlights, Clarity, Texture, Dehaze), same bytes", "head": "2863c3281c2a22dade0ce92d42bf8900074f76c6", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/9457#pullrequestreview-5643852329", "conflicts": [] }, { "number": 9436, "title": "Startup: a failed launch says why in a dialog instead of closing silently (#7643)", "head": "819f2692db4302019638c57b6ea34cd1e8f4c24b", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/9436#pullrequestreview-5645623601", "conflicts": [] }, { "number": 9418, "title": "Color Lookup: honour the .3dl Mesh header's cube edge and output depth (#9078, #9073)", "head": "da4b838e54f6073cda4798fa7b63b3b7214aaf93", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/9418#pullrequestreview-5644614398", "conflicts": [] }, { "number": 9416, "title": "Affinity reader: contiguous curve records and a cheaper object tag index", "head": "742b06805284d8d76d5a29ec1821193f4835fedf", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/9416#pullrequestreview-5642992245", "conflicts": [] }, { "number": 9401, "title": "fix(format): a save on macOS keeps the file's creation time (#9388)", "head": "f241bba1adfb9c7ec5dd5ed9d86f95b63c7bc2c3", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/9401#pullrequestreview-5642877921", "conflicts": [ "crates/automation/src/workspace.rs" ] }, { "number": 9354, "title": "fix(ui): Full Screen Mode needs a document (#9349)", "head": "41eb1de5cff17f5f5b9c22913e48b71565b56a2a", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/9354#pullrequestreview-5641946837", "conflicts": [ "crates/ui-egui/src/lib.rs", "crates/ui-egui/src/panels.rs", "crates/ui-egui/src/view_cmds.rs" ] }, { "number": 9342, "title": "fix(io, engine): Embed Color Profile writes sRGB for an untagged document (#9325)", "head": "c46a74621d36adae9707ab8f3eb39cf6b4c302b9", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/9342#pullrequestreview-5642054720", "conflicts": [ "crates/engine/src/web_cmds.rs" ] }, { "number": 9339, "title": "fix(export): embed requested sRGB profile for untagged sources (#9325)", "head": "393645ab91460af2e37cc3ba8f6921e7551f676e", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/9339#pullrequestreview-5642090549", "conflicts": [ "crates/ui-egui/src/dialogs/export_dialog.rs" ] }, { "number": 9282, "title": "feat(ui): Preset menus for Levels, Exposure, Black & White and Channel Mixer", "head": "20803d1f15900ed6ecc7b5c79b4c68f6c3d6dcce", "status": "CONFLICT_PENDING", "receipt": "https://github.com/storytold/photocraft/pull/9282#pullrequestreview-5647322262", "conflicts": [ "crates/ui-egui/src/adjust_dialog.rs", "crates/ui-egui/src/adjust_editors.rs", "crates/ui-egui/src/lib.rs", "docs/ui-parity.md" ] }, { "number": 9172, "title": "Gradient Fill layer: default to Foreground to Transparent (#8708)", "head": "8ebb04999d25790f71f9bd88f7a268a6a2754aec", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/9172#pullrequestreview-5639390920", "conflicts": [] }, { "number": 9110, "title": "test: GPU tests honour WGPU_BACKEND, so they run on Windows with an Intel GPU (#4)", "head": "2e716f93b2e2135944e07d821be4eb38fce13ec9", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/9110#pullrequestreview-5639002103", "conflicts": [] }, { "number": 9019, "title": "fix(xtask): reject unknown performance benchmark selections", "head": "364c4be1c19728aefa601ee924bc7a0cd6a09789", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/9019#pullrequestreview-5638973719", "conflicts": [ "xtask/src/perf.rs" ] }, { "number": 9015, "title": "fix(xtask): reject leading zeroes in numeric prerelease identifiers", "head": "afb4364a8795c42e6353762891b4890d878f9a68", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/9015#pullrequestreview-5638974295", "conflicts": [] }, { "number": 9004, "title": "fix(ui): enlarge Move tool alignment icons for legibility", "head": "39cf823cdfe486bb967cf81df725d229f7eed903", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/9004#pullrequestreview-5638974843", "conflicts": [] }, { "number": 8986, "title": "Path tools: edit the saved path selected in the Paths panel (#8478)", "head": "390dfbbcb026b33d46c52c62360b65deca00f258", "status": "CONFLICT_PENDING", "receipt": "https://github.com/storytold/photocraft/pull/8986#pullrequestreview-5638981860", "conflicts": [ "crates/ui-egui/src/tools/direct_select.rs", "crates/ui-egui/src/vector_ui.rs" ] }, { "number": 8985, "title": "Color panel and Color Picker: clip the round cursor to the colour field", "head": "8e695caf885b529f01f482b3f0c90cdb34df1915", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/8985#pullrequestreview-5638975214", "conflicts": [ "crates/ui-egui/src/dialogs/color_picker_ui.rs", "crates/ui-egui/src/panels.rs" ] }, { "number": 8931, "title": "feat(algo): describe the Gaussian blur as data for other devices", "head": "d42dd4c6302c77c1f9dc46b7b53ffa5eb0047a13", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/8931#pullrequestreview-5639059166", "conflicts": [] }, { "number": 8905, "title": "fix(plugins): bound a run's total plug-in memory, not just each instance", "head": "0fdc6259193aab32b8feab7347ddc36196f40a19", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/8905#pullrequestreview-5638989196", "conflicts": [ "crates/plugins/tests/abi.rs" ] }, { "number": 8903, "title": "Box-filter minified patterns in the CPU and GPU samplers (#8831)", "head": "d387f52f1f2f5681b2c7d1c517aa5b5992c7bc88", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/8903#pullrequestreview-5638989541", "conflicts": [] }, { "number": 8897, "title": "fix(io): read linked smart objects for PSD export as regular files only", "head": "eb06798f15516eb7e4fac24c98346fd9052e7f8e", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/8897#pullrequestreview-5638990476", "conflicts": [ "crates/io/src/psd_export.rs" ] }, { "number": 8896, "title": "Select and Mask: Photoshop's full-window workspace (#7069, #8148)", "head": "19fa473039ef11deda7c3200c8fac1de41309086", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/8896#pullrequestreview-5683297464", "conflicts": [] }, { "number": 8892, "title": "ui: larger Align icons and overflow button; Save for Web keeps its width on an invalid Matte", "head": "9267c4fcf83a260d4bae0e441dc1af9bc48aa23b", "status": "CONFLICT_PENDING", "receipt": "https://github.com/storytold/photocraft/pull/8892#pullrequestreview-5638996509", "conflicts": [ "crates/ui-egui/src/file_ui.rs", "crates/ui-egui/src/tools/align_bar.rs", "crates/ui-egui/src/widgets/tab_strip.rs" ] }, { "number": 8347, "title": "Type: Roman Hanging Punctuation (trailing marks hang, don't steer the alignment)", "head": "2b1364393cfcd09380cf18a221e7cdd325fc4deb", "status": "CONFLICT_PENDING", "receipt": "https://github.com/storytold/photocraft/pull/8347#pullrequestreview-5644437741", "conflicts": [ "crates/engine/src/cmd/type_cmds.rs", "crates/text/src/layout.rs", "crates/text/src/psd.rs", "crates/ui-egui/src/type_tool.rs", "docs/scorecard.md", "docs/ui-parity.md" ] }, { "number": 8193, "title": "Filter Gallery \u00e2\u20ac\u00ba Cutout 3/4: edges and curves stage", "head": "864024609b872de3d869879f1632b951c896c6cd", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/8193#pullrequestreview-5643244034", "conflicts": [] }, { "number": 8192, "title": "Filter Gallery \u00e2\u20ac\u00ba Cutout 2/4: regions stage", "head": "412e3b7cf1f4836a5772d93391d21728dbe1f74f", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/8192#pullrequestreview-5642599218", "conflicts": [] }, { "number": 8191, "title": "Filter Gallery \u00e2\u20ac\u00ba Cutout 1/4: colour and palette stage", "head": "91e4cec43525ca739c05cff614701fbd3576e389", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/8191#pullrequestreview-5642584382", "conflicts": [] }, { "number": 8074, "title": "Transform: remember selected interpolation (#8067)", "head": "290f924d0fecc3bf6bea159c0d9e86255d326a96", "status": "CONFLICT_PENDING", "receipt": "https://github.com/storytold/photocraft/pull/8074#pullrequestreview-5612886202", "conflicts": [ "crates/ui-egui/src/prefs_ui.rs", "crates/ui-egui/src/state.rs", "crates/ui-egui/src/transform_tool.rs" ] }, { "number": 8039, "title": "Compose: Extend Softer outer glows past Size (#7899)", "head": "5579cf5439856fed93f41a669a3fc9b56d5813cf", "status": "CONFLICT_PENDING", "receipt": "https://github.com/storytold/photocraft/pull/8039#pullrequestreview-5592809677", "conflicts": [ "crates/compose/src/effects.rs", "crates/gpu/src/fx.rs" ] }, { "number": 7903, "title": "Filter Gallery \u00e2\u20ac\u00ba Cutout 4/4: trace the image into flat paper shapes", "head": "5c30699087b02edcaa23397a0f7076bf503be048", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/7903#pullrequestreview-5643279271", "conflicts": [] }, { "number": 7848, "title": "fix(retouch): preserve Smudge pickup with live-pixel stroke commits", "head": "389a1d5bd67072d5581c27989080222a7065b585", "status": "CONFLICT_PENDING", "receipt": "https://github.com/storytold/photocraft/pull/7848#pullrequestreview-5586186420", "conflicts": [ "crates/engine/src/retouch_cmds.rs" ] }, { "number": 7743, "title": "packaging: the portable zip holds the files, not a folder with the files in it", "head": "fd6fc92015fd08560362b4b32844edf97722f292", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/7743#pullrequestreview-5574964336", "conflicts": [] }, { "number": 7742, "title": "Actions: a fractional setting an integer field cannot hold is refused, not rounded", "head": "ab844f9cbcd1f1839ed7f286776331cb72e399aa", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/7742#pullrequestreview-5586281249", "conflicts": [ "crates/engine/src/atn_cmds.rs", "crates/engine/src/atn_cmds/tests.rs" ] }, { "number": 7648, "title": "Pen: Path Operations menu, as in Photoshop (#1397)", "head": "d24669d412f64ab079a668b0b8520ddbc607410c", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/7648#pullrequestreview-5686770506", "conflicts": [] }, { "number": 7255, "title": "fix(engine): guard trim and duplicate merged against documents exceeding render limits (#7223)", "head": "1b810052bc3a876c1eaf1a8766870ffdba9f8a80", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/7255#pullrequestreview-5579038009", "conflicts": [ "crates/engine/src/image_cmds.rs" ] }, { "number": 7153, "title": "Smart Filters: double-clicking a Liquify filter reopens it in the Liquify workspace", "head": "6f5d929d6172cf211a070f12cde9507aca9eb30a", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/7153#pullrequestreview-5675752399", "conflicts": [] }, { "number": 6621, "title": "Crop: right-click on the pending crop opens the crop menu (#6561)", "head": "ead45134d320cb1002724d5ef44f5c56588bbe1d", "status": "CONFLICT_PENDING", "receipt": "https://github.com/storytold/photocraft/pull/6621#pullrequestreview-5643879866", "conflicts": [ "crates/ui-egui/src/canvas.rs", "crates/ui-egui/src/canvas_tool_menu.rs", "crates/ui-egui/src/control.rs", "crates/ui-egui/src/crop_ui.rs", "crates/ui-egui/src/transform_type_tests.rs", "docs/context-menu-parity.md", "docs/scorecard.md" ] }, { "number": 6510, "title": "Automation: resolve configured root aliases for absolute paths (#6426)", "head": "8bb0a5e67474d36ae08d565251edb1ae780dd044", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/6510#pullrequestreview-5664421033", "conflicts": [] }, { "number": 6492, "title": "Fail control startup promptly when its port is occupied", "head": "657cfd503d4ce276df6b5e9f763cb3a5cf2deaeb", "status": "CONFLICT_PENDING", "receipt": "https://github.com/storytold/photocraft/pull/6492#pullrequestreview-5583441089", "conflicts": [ "apps/photocraft/src/control_server.rs", "apps/photocraft/src/main.rs", "apps/photocraft/tests/it/control_exit_code.rs" ] }, { "number": 6449, "title": "Hand tool: Cmd held zooms in and Alt zooms out, as in Photoshop", "head": "25c38a0b69b7bff31badcdbe2ef9f2ff6aba1c63", "status": "CONFLICT_PENDING", "receipt": "https://github.com/storytold/photocraft/pull/6449#pullrequestreview-5548906956", "conflicts": [ "crates/ui-egui/src/input/hold_keys.rs", "crates/ui-egui/src/input/hold_keys/tests.rs", "docs/ui-parity.md" ] }, { "number": 6387, "title": "Video Frames to Layers: every page of a multi-page TIFF (part of #6379)", "head": "8bfbbf816025942b74130adf16fb07265817b691", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/6387#pullrequestreview-5555146754", "conflicts": [] }, { "number": 6383, "title": "Windows releases ship a symbols zip: the release build's PDBs for profilers (#688)", "head": "74aadae69e3b3f5cd257bca1926acc1b1297b1a2", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/6383#pullrequestreview-5548207780", "conflicts": [] }, { "number": 6236, "title": "Shift+Alt+right-click opens Photoshop's HUD Color Picker (#6098)", "head": "ce546dd4b5451a17b843ef1e129bdb40fbfe3160", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/6236#pullrequestreview-5644088784", "conflicts": [ "crates/ui-egui/src/brush_resize.rs", "crates/ui-egui/src/canvas.rs", "crates/ui-egui/src/lib.rs", "crates/ui-egui/src/paint_mouse.rs" ] }, { "number": 6139, "title": "Fix painting workflows, File Info and layer selection", "head": "e2347f8ead85d929193044f139788b850e31c06f", "status": "CONFLICT_PENDING", "receipt": "https://github.com/storytold/photocraft/pull/6139#pullrequestreview-5542220545", "conflicts": [ "crates/engine/src/cmd/brush_cmds.rs", "crates/paint/src/render.rs", "crates/ui-egui/src/canvas.rs", "crates/ui-egui/src/dialogs.rs", "crates/ui-egui/src/i18n/cs.tsv", "crates/ui-egui/src/i18n/de.tsv", "crates/ui-egui/src/i18n/hu.tsv", "crates/ui-egui/src/i18n/it.tsv", "crates/ui-egui/src/i18n/ja.tsv", "crates/ui-egui/src/i18n/pt-br.tsv", "crates/ui-egui/src/i18n/tr.tsv", "crates/ui-egui/src/i18n/uk.tsv", "crates/ui-egui/src/i18n/zh-hans.tsv", "crates/ui-egui/src/i18n/zh-hant.tsv", "crates/ui-egui/src/input_tests.rs", "crates/ui-egui/src/menus.rs", "crates/ui-egui/src/move_mods.rs", "crates/ui-egui/src/panels.rs", "crates/ui-egui/src/vector_ui.rs", "crates/ui-egui/src/view_cmds.rs" ] }, { "number": 6026, "title": "Marquee: Fixed Size selects exactly the entered width and height (fixes #6015)", "head": "248ba660576f4896f69cbb6639353e2f1d295271", "status": "CONFLICT_PENDING", "receipt": "https://github.com/storytold/photocraft/pull/6026#pullrequestreview-5545897025", "conflicts": [ "crates/ui-egui/src/canvas.rs", "crates/ui-egui/src/marquee_tests.rs" ] }, { "number": 5939, "title": "fix(paint): scale blur sigma with brush size (#5892)", "head": "7348e060b4be7204fb69b59079c3b9d808e9aad3", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/5939#pullrequestreview-5560602826", "conflicts": [] }, { "number": 5870, "title": "fix(format): reject duplicate native layer identities", "head": "f9de0a6abc78aa405b1ef46f5da6cba424106204", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/5870#pullrequestreview-5551781697", "conflicts": [] }, { "number": 5744, "title": "fix(ui): keep detached documents in one interactive window", "head": "50b1f6734799cf7b5d45dd84868976afd31aa711", "status": "CONFLICT_PENDING", "receipt": "https://github.com/storytold/photocraft/pull/5744#pullrequestreview-5593443602", "conflicts": [ "crates/ui-egui/src/canvas.rs", "crates/ui-egui/src/lib.rs", "crates/ui-egui/src/menus.rs", "crates/ui-egui/src/view_cmds.rs" ] }, { "number": 5650, "title": "Guides: \u00e2\u0152\u00a5 turns a dragged guide; dropping one on either ruler deletes it (#5034)", "head": "4b1bd6fb6d264f885cb9caa3b8a6578ee527bd7b", "status": "CONFLICT_PENDING", "receipt": "https://github.com/storytold/photocraft/pull/5650#pullrequestreview-5593380251", "conflicts": [ "crates/engine/src/edit_cmds.rs", "crates/ui-egui/src/canvas.rs", "crates/ui-egui/src/rulers.rs", "crates/ui-egui/src/tools/move_hover.rs", "docs/ui-parity.md" ] }, { "number": 5515, "title": "Selecting subject now automatically applies to selected layer, and us\u00e2\u20ac\u00a6", "head": "375d4894a119b6cd5933d53e8fe7f506d2783392", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/5515#pullrequestreview-5593377843", "conflicts": [ "crates/engine/src/cmd/smartselect_cmds.rs" ] }, { "number": 5493, "title": "Import Photoshop custom shape sets into the Shapes panel", "head": "f97eb2849a68e1ed1c08c5b378770cf35cbcb72d", "status": "CONFLICT_PENDING", "receipt": "https://github.com/storytold/photocraft/pull/5493#pullrequestreview-5666969724", "conflicts": [ "docs/file-format-parity.md", "docs/gaps.md" ] }, { "number": 5453, "title": "Shapes: independent fill and stroke paints (solid, gradient, pattern), part 1", "head": "e22a9baedceefd97daffe84403b23c99c56d6919", "status": "CONFLICT_PENDING", "receipt": "https://github.com/storytold/photocraft/pull/5453#pullrequestreview-5560030568", "conflicts": [ "crates/compose/src/lib.rs", "crates/compose/src/shape_split.rs", "crates/engine/src/vector_cmds.rs", "crates/gpu/src/plan.rs", "crates/vector/src/lib.rs", "docs/control-protocol.md" ] }, { "number": 5270, "title": "Layer Style: Gradient Overlay takes any number of colour stops (#5177)", "head": "9db1c7ae1d48ce4f31622b5f9029c70c590842f8", "status": "CONFLICT_PENDING", "receipt": "https://github.com/storytold/photocraft/pull/5270#pullrequestreview-5585703891", "conflicts": [ "crates/engine/src/layer_style.rs", "crates/ui-egui/src/control.rs", "crates/ui-egui/src/dialogs/layer_style.rs", "crates/ui-egui/src/dialogs/layer_style/gradient_field.rs", "docs/control-protocol.md" ] }, { "number": 5176, "title": "Play CopyCat, AJ and Line and Color action sets; keep patterns across restarts; Shift Edge scale", "head": "c96891c298151c5cb11a55928b9e1c27911f38bd", "status": "CONFLICT_PENDING", "receipt": "https://github.com/storytold/photocraft/pull/5176#pullrequestreview-5585830576", "conflicts": [ "crates/engine/src/actions_cmds.rs", "crates/engine/src/atn_cmds.rs", "crates/engine/src/atn_cmds/tests.rs", "crates/engine/src/cmd.rs", "crates/engine/src/cmd/history_cmds.rs", "crates/engine/src/cmd/pattern_cmds.rs", "crates/engine/src/lib.rs", "crates/engine/src/preset_store.rs", "crates/engine/src/preset_store/tests.rs", "crates/engine/src/smart_cmds.rs", "crates/ui-egui/src/actions.rs", "crates/ui-egui/src/panels/preset_panels.rs", "docs/file-format-parity.md", "docs/gaps.md", "docs/target-app-parity.md" ] }, { "number": 5165, "title": "Fix: brush section selection", "head": "27bc6e4b37b701480efa69559ab13eafc52bd94c", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/5165#pullrequestreview-5549755629", "conflicts": [] }, { "number": 5090, "title": "Actions: add editable PhotoCraft Essentials starter presets", "head": "61d9e8cc1aed29ed6bea0d0fd2702fa87c4f0206", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/5090#pullrequestreview-5585928498", "conflicts": [ "crates/engine/src/actions_cmds.rs", "crates/engine/src/lib.rs", "crates/engine/src/preset_store.rs", "crates/ui-egui/src/actions.rs" ] }, { "number": 5082, "title": "fix(mixer-brush): Alt-click samples the foreground colour like the Brush (#4873)", "head": "23bab3cc9204568aaeb012b9e1da70a2caacb879", "status": "CONFLICT_PENDING", "receipt": "https://github.com/storytold/photocraft/pull/5082#pullrequestreview-5562323692", "conflicts": [ "crates/engine/src/cmd/brush_cmds.rs", "crates/paint/src/mixer.rs", "crates/ui-egui/src/canvas.rs", "crates/ui-egui/src/input/alt_grab.rs" ] }, { "number": 5010, "title": "Layer Style: Photoshop's layout (three columns, OK/Cancel/New Style/Preview on the right, one-line rows) [depends on #4938]", "head": "cc865221894e21f846d92b721cce7421ea338363", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/5010#pullrequestreview-5585991159", "conflicts": [ "crates/ui-egui/src/dialogs.rs", "crates/ui-egui/src/dialogs/layer_style.rs", "crates/ui-egui/src/panels.rs", "crates/ui-egui/src/widgets.rs" ] }, { "number": 4993, "title": "Prevent control-channel engine commands from editing behind modal dialogs", "head": "81964dc5ef77a71a2ae2a938958cf3ed77d90719", "status": "CONFLICT_PENDING", "receipt": "https://github.com/storytold/photocraft/pull/4993#pullrequestreview-5549725641", "conflicts": [ "crates/ui-egui/src/control.rs" ] }, { "number": 4992, "title": "Preserve Dissolve coverage when compositing clipped layers", "head": "194a8976cd6c14441222b287b9b4f4841a0eb2f9", "status": "CONFLICT_PENDING", "receipt": "https://github.com/storytold/photocraft/pull/4992#pullrequestreview-5549725271", "conflicts": [ "crates/compose/src/lib.rs", "crates/compose/src/tests.rs", "crates/gpu/src/compose.wgsl", "crates/gpu/tests/it/parity.rs", "crates/ui-egui/src/rotate_view.rs", "crates/ui-egui/src/wheel_nav.rs" ] }, { "number": 4985, "title": "feat(ui): add Shift+right-click brush mode picker", "head": "1dc98f80f60e993f3edf20af815391b6a7e7add7", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/4985#pullrequestreview-5679506261", "conflicts": [] }, { "number": 4938, "title": "Layer Style: one dialog size on every page, and it fits short screens", "head": "63b7c921634835259139e4d3e7b9d3c396998b4d", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/4938#pullrequestreview-5586050980", "conflicts": [ "crates/ui-egui/src/dialogs.rs", "crates/ui-egui/src/dialogs/layer_style.rs" ] }, { "number": 4890, "title": "Add scrollbar visibility preferences (#3262)", "head": "ab84cab7355ac999fb1be226950978bafec39605", "status": "CONFLICT_PENDING", "receipt": "https://github.com/storytold/photocraft/pull/4890#pullrequestreview-5593534344", "conflicts": [ "crates/engine/src/prefs.rs", "crates/engine/src/prefs/tests.rs", "crates/ui-egui/src/canvas.rs", "crates/ui-egui/src/prefs_ui.rs", "crates/ui-egui/src/theme.rs", "docs/gaps.md", "docs/scorecard.md", "docs/ui-parity.md" ] }, { "number": 4883, "title": "feat(ui): show selection and active-layer bounds in the status bar", "head": "ea500486fb40511d3b4782dfacbb89fbff846d8a", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/4883#pullrequestreview-5583810948", "conflicts": [] }, { "number": 4783, "title": "Fix/4758 type extreme finite geometry 20261013s1215", "head": "a9d62726bed607bc540db9d09c8dc1be4f9895aa", "status": "CONFLICT_PENDING", "receipt": "https://github.com/storytold/photocraft/pull/4783#pullrequestreview-5583807081", "conflicts": [ "crates/io/src/blocks.rs", "crates/io/tests/it/psd_type_bounds.rs", "crates/text/src/psd.rs" ] }, { "number": 4763, "title": "refactor(liquify): reuse native brush resizing and anchored HUD feedback", "head": "f2804a7cf013519d9ba8bac1da3d96458c4f656b", "status": "CONFLICT_PENDING", "receipt": "https://github.com/storytold/photocraft/pull/4763#pullrequestreview-5583718187", "conflicts": [ "crates/ui-egui/src/brush_resize.rs", "crates/ui-egui/src/dialogs/liquify_ui.rs" ] }, { "number": 4742, "title": "fix(macos): bundle photocraft-cli and resolve it from droplet scripts", "head": "b7145b5a8afb85d0eef3922931d6749436966943", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/4742#pullrequestreview-5549743037", "conflicts": [] }, { "number": 4711, "title": "Treat Dissolve as a per-pixel choice", "head": "db546ff4822a011a7915b66af3834f94c05767db", "status": "CONFLICT_PENDING", "receipt": "https://github.com/storytold/photocraft/pull/4711#pullrequestreview-5594717250", "conflicts": [ "crates/compose/src/effects.rs", "crates/compose/src/lib.rs", "crates/compose/src/tests.rs", "crates/gpu/src/compose.wgsl", "crates/gpu/tests/it/parity.rs" ] }, { "number": 4547, "title": "fix(icons): PhotoCraft icon corner radius matches other Craft apps (#4478)", "head": "a08f7a2295488c2692f68902835a693322017b64", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/4547#pullrequestreview-5583727527", "conflicts": [] }, { "number": 4305, "title": "Filter > Other > Frequency Separation (#1714)", "head": "1b74873991dbb2e9803d228a969291f09c6f1032", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/4305#pullrequestreview-5594762253", "conflicts": [ "crates/engine/src/lib.rs", "crates/ui-egui/src/filter_dialog.rs", "crates/ui-egui/src/menus.rs" ] }, { "number": 4042, "title": "feat(canvas): rotate view with Shift + middle-mouse drag", "head": "f05098562220a663d052ee3918fd36c8c3e17a51", "status": "CONFLICT_PENDING", "receipt": "https://github.com/storytold/photocraft/pull/4042#pullrequestreview-5583745473", "conflicts": [ "crates/ui-egui/src/canvas.rs", "crates/ui-egui/src/rotate_view.rs" ] }, { "number": 4035, "title": "fix(cmyk): Flatten Image and merges keep the inks of a tagged CMYK document (#3778)", "head": "15ebf8fc940031abdf772e5fdd687c8b55938639", "status": "CONFLICT_PENDING", "receipt": "https://github.com/storytold/photocraft/pull/4035#pullrequestreview-5595033656", "conflicts": [ "crates/compose/src/lib.rs", "crates/engine/src/pixels.rs", "crates/io/src/lib.rs", "crates/io/tests/it/color.rs" ] }, { "number": 4023, "title": "i18n(es): add 548 missing rows, fix five filter and video terms", "head": "303a5346fcb5961cf3a776024db58507b401e4ea", "status": "CONFLICT_PENDING", "receipt": "https://github.com/storytold/photocraft/pull/4023#pullrequestreview-5595056228", "conflicts": [ "crates/ui-egui/src/i18n/es.tsv" ] }, { "number": 3967, "title": "Add move and delete actions to Smart Filter rows", "head": "3a77519ce2cef0fb60cebd4ea796d599f68868cb", "status": "CONFLICT_PENDING", "receipt": "https://github.com/storytold/photocraft/pull/3967#pullrequestreview-5595072511", "conflicts": [ "crates/ui-egui/src/panels.rs", "crates/ui-egui/src/smart_ui.rs", "docs/control-protocol.md" ] }, { "number": 3874, "title": "fix(layer-style): support Blend If Alt-split handle feathering and throttle live preview", "head": "92488307722c3b840507827cac7ee9a88470fc8a", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/3874#pullrequestreview-5595098959", "conflicts": [] }, { "number": 3748, "title": "control: suggest near matches for unknown command ids and methods (#3674)", "head": "c45d01eafe84e600bb28033a6853cc19c827b7bf", "status": "CONFLICT_PENDING", "receipt": "https://github.com/storytold/photocraft/pull/3748#pullrequestreview-5583803054", "conflicts": [ "crates/automation/src/rpc.rs", "crates/engine/src/lib.rs", "crates/ui-egui/src/control.rs" ] }, { "number": 3554, "title": "fix(packaging): launch bundled CLI directly from AppImage", "head": "dd21e325b515cbf67fd4a461ae5b3e1b195aa53d", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/3554#pullrequestreview-5583771056", "conflicts": [] }, { "number": 3520, "title": "fix(ui): restore square color chips in Studio Dark theme", "head": "d36ec9a21e9c1ed70de2e0d185efd7e084644157", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/3520#pullrequestreview-5583735883", "conflicts": [] }, { "number": 3519, "title": "feat(export): optionally trim transparent margins from layer files", "head": "807de6c043a512cb947d86b944c758b3db1277c7", "status": "CONFLICT_PENDING", "receipt": "https://github.com/storytold/photocraft/pull/3519#pullrequestreview-5583738841", "conflicts": [ "crates/engine/src/file_cmds.rs", "crates/engine/src/image_cmds.rs", "crates/ui-egui/src/view_cmds.rs" ] }, { "number": 3464, "title": "fix(vector): target selected saved paths and own Pen gestures", "head": "1eecd00b2dff4ae4c642269cec211cd06ce1c3aa", "status": "CONFLICT_PENDING", "receipt": "https://github.com/storytold/photocraft/pull/3464#pullrequestreview-5597090618", "conflicts": [ "crates/engine/src/vector_cmds.rs", "crates/ui-egui/src/canvas.rs", "crates/ui-egui/src/lib.rs", "crates/ui-egui/src/path_selection_tests.rs", "crates/ui-egui/src/tools/anchor_tools/tests.rs", "crates/ui-egui/src/tools/direct_select.rs", "crates/ui-egui/src/tools/direct_select/tests.rs", "crates/ui-egui/src/vector_paint_tests.rs", "crates/ui-egui/src/vector_ui.rs", "crates/vector/src/flatten.rs" ] }, { "number": 3461, "title": "Replay recorded layer visibility on the intended named layer", "head": "5d8cb2a39ad70e31260f1f3fc2010ca132daff65", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/3461#pullrequestreview-5597122170", "conflicts": [ "crates/engine/src/actions_cmds.rs", "crates/engine/src/jobs.rs", "crates/engine/src/lib.rs", "crates/ui-egui/src/actions.rs", "docs/control-protocol.md" ] }, { "number": 3455, "title": "Undo and redo action definition edits from the Actions panel", "head": "d84fa7955d260505378a1a596ec80d602036319d", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/3455#pullrequestreview-5597131410", "conflicts": [ "crates/engine/src/actions_cmds.rs", "crates/ui-egui/src/actions.rs", "crates/ui-egui/src/menus.rs", "docs/control-protocol.md" ] }, { "number": 3387, "title": "feat(codecs): add lossless JPEG XL export for 8/16-bit images", "head": "58b83f42a4b39cf56751be53ec8d227efee70f68", "status": "CONFLICT_PENDING", "receipt": "https://github.com/storytold/photocraft/pull/3387#pullrequestreview-5597200428", "conflicts": [ "apps/photocraft/src/services.rs", "crates/codecs/Cargo.toml", "crates/codecs/src/format.rs", "crates/codecs/src/lib.rs" ] }, { "number": 3345, "title": "Add grouped gradient presets and selectable style icons", "head": "bfb691f84896fe68543980426632153dc4b4ea69", "status": "CONFLICT_PENDING", "receipt": "https://github.com/storytold/photocraft/pull/3345#pullrequestreview-5597265645", "conflicts": [ "crates/ui-egui/src/panels.rs", "crates/ui-egui/src/panels/preset_panels.rs", "crates/ui-egui/src/prefs_ui.rs", "crates/ui-egui/src/tools/gradient_ui.rs", "crates/ui-egui/src/tools/gradient_ui/preset_browser.rs", "crates/ui-egui/src/tools/gradient_ui/preset_browser_tests.rs", "crates/ui-egui/src/tools/gradient_ui/properties_panel.rs", "docs/scorecard.md" ] }, { "number": 3142, "title": "Read applied Sony RAW metadata and crop ILCE-6000 images", "head": "e2ed234e654e574109ffcdb9756f8e8d1b8a00b2", "status": "CONFLICT_PENDING", "receipt": "https://github.com/storytold/photocraft/pull/3142#pullrequestreview-5597503674", "conflicts": [ "crates/raw/src/cameras.rs", "docs/file-format-parity.md", "docs/gaps.md" ] }, { "number": 3139, "title": "Draw right-to-left layer names in visual word order", "head": "4da79e8d16ded8b51f06c1ac64e50ccba288274e", "status": "CONFLICT_PENDING", "receipt": "https://github.com/storytold/photocraft/pull/3139#pullrequestreview-5597496876", "conflicts": [ "Cargo.lock", "crates/ui-egui/Cargo.toml", "crates/ui-egui/src/lib.rs", "crates/ui-egui/src/panels/layer_row_ui.rs" ] }, { "number": 2300, "title": "Scroll the viewport while outlining with Polygonal Lasso", "head": "ebf3777aec961d1815aa141d9987eaa645c2273f", "status": "CONFLICT_PENDING", "receipt": "https://github.com/storytold/photocraft/pull/2300#pullrequestreview-5564229610", "conflicts": [ "crates/ui-egui/src/canvas.rs" ] }, { "number": 1991, "title": "feat(actions): import and export reusable Actions JSON files", "head": "202266b90613280e16ae285b53dd4e10d5f0c7ac", "status": "MERGED", "receipt": "https://github.com/storytold/photocraft/pull/1991#pullrequestreview-5597895651", "conflicts": [ "crates/automation/src/workspace.rs", "crates/engine/src/actions_cmds.rs", "crates/ui-egui/src/actions.rs" ] } ], "current_checkpoint_sha": "889018cabba18184713f6ea1d5d790137ea7d4bf", "updated_at": "2026-10-29T04:06:45.328085+00:00", "active_subsystem": "Layer Style complete; continuing independent ports and build compatibility checks", "parent_decision_required": null, "validation": { "compositor_at_31ce2208": "PASSED: 402 passed, 0 failed, 2 ignored", "current_full_workspace": "NOT RUN", "current_build_check": "PASSED: cargo check --workspace --all-targets --locked --offline at 889018cab", "manual": "NOT RUN", "portable_final_build": "NOT RUN \u00e2\u20ac\u201d waits for 100+ complete integration and validation" } }