github storytold/photocraft v0.23.0
PhotoCraft v0.23.0

one hour ago

What's Changed

  • Magnetic Lasso: Caps Lock swaps in the Width circle cursor (#11690) by @hectorviov in #12151
  • fix(engine): the Magic Eraser measures Tolerance by colour spread (#11995) by @slafebre in #12406
  • fix(ui): Shift plus a digit sets the Pencil's Opacity (#11967) by @rmsff in #12371
  • Offer Apply to All in the unsaved-changes prompt by @devstivi in #9021
  • Execute Average on Smart Objects and imported PSD smart filters by @ArjenS-LA in #9077
  • Fix Average colour weighting and preserve per-pixel transparency by @ArjenS-LA in #9076
  • Warp mode: edit Photoshop's Cylinder warp with handles and fields (#4112) by @TimothyBritt in #9798
  • Eyedropper: right-click menu with the Sample Sizes, Copy Color as HTML and Copy Color's Hex Code (#11747) by @hectorviov in #12182
  • Perspective Crop: Shift and Alt constrain the new drag and corner drags by @hectorviov in #12236
  • fix(engine): a free Perspective Crop takes the quad's perspective size (#11798) by @slafebre in #12421
  • Artboards: Color Sampler points follow the document when a board re-bases the canvas (#9302) by @davidmann4 in #9303
  • Brush picker: gear menu entries match the reference application (#11819) by @davidmann4 in #11919
  • Dropdowns: popups as tall as their items, up to the window (#5495) by @davidmann4 in #5501
  • Perf: one frame stage record across egui's passes; the web keeps slow frames too (#9328) by @brennanMKE in #10103
  • Liquify: Forward Warp and Push Left follow the pointer; stationary tools use real time by @terminalgate in #10690
  • Engine: bounded redraw areas for adjustment, reorder and clipping changes (#9329) by @brennanMKE in #10052
  • Add toolbar side toggle by @Triwarr in #11193
  • Actions panel: a row dragged onto the trash is deleted, onto Create new action duplicated by @TrevorBrown-dev in #12402
  • fix: brush hints keep a feathered mask's ring and the effects' reach (#9329) by @brennanMKE in #10104
  • feat(ui): Cmd+. (Ctrl+.) cancels a type editing session (#12076) by @rmsff in #12335
  • fix(text): draw COLR colour glyphs in the font's own colours (#7711) by @adi-1108 in #8247
  • Canvas: the redraw area covers a whole command, not just its last revision (#9329) by @brennanMKE in #10053
  • Note tool: Clear All asks before deleting all notes; the step is named Delete all Notes (#11791) by @hectorviov in #12217
  • feat(ui): Select Pixels on a pixel layer thumbnail's right-click menu by @qvest-ssels in #12450
  • Pencil: pressure toggles on the options bar (#11962) by @Raghav2012Code in #12477
  • Actions: map Image › Analysis › Set Measurement Scale › Custom (#10723) by @ljkx in #12438
  • Map recorded Windows Displace actions by @yoriswind in #11836
  • fix(ui): the Gradient bar has no blend Mode and Opacity in Gradient mode (#12007) by @x-labb in #12645
  • fix(paint): Catch-up on Stroke End starts unchecked (#11887) by @RickiNano in #11895
  • Background Eraser: a CMYK document compares against the picked inks (#12352) by @RickiNano in #12381
  • Color Replacement: whole-number Tolerance 1-100 with the alert, and the bar's tooltips by @hectorviov in #12268
  • Color Lookup: list the LUT folder in Image > Adjustments (#9754) by @Luis-0508 in #9827
  • fix(ui): the Hand options bar gets the reference tooltips and no hint text (#12026) by @rmsff in #12370
  • New Guide Layout: format in ruler unit, support arbitrary units, and normalize on lost focus (#6082) by @safvanedge in #6083
  • feat(compose): Stroke Emboss bevels the stroked outline (#8639) by @DuBearte in #9337
  • Drag selected pixels between document tabs and tiled canvases by @tomgardenart in #10059
  • fix(ui): Reset Tool gives the Burn tool a 65 px soft tip at 25 % spacing (#12671) by @RickiNano in #12691
  • fix(ui): do not connect Art History Brush Shift-clicks with a straight line by @ElNeMeR70 in #12690
  • Free Transform: a proportional corner drag follows the pointer along the diagonal (#11096) by @vangel76 in #11160
  • Remove tool: name the History step "Remove Tool" (#12541) by @RickiNano in #12677
  • fix(ui): add Burn and Dodge options-bar tooltips by @Bobderto in #12721
  • Color Sampler: points sit on the clicked pixel's centre (#11725) by @hectorviov in #12174
  • Tests: expect Color Sampler points on pixel centres after #12174 by @tjbbjt in #12790
  • Raster: the memory reservation tests take turns by @FredApps in #12854
  • Fujifilm compressed RAF: decode lossless and lossy files instead of the embedded preview by @smyrgeorge in #7377
  • Perspective Crop: the quad follows the pointer while corners are clicked by @hectorviov in #12232
  • Mixer Brush: Load Solid Colors Only in the load menu (#11952) by @hectorviov in #12295
  • Convert Point: name History steps Change Anchor Point and Corner Drag by @rmsff in #12813
  • Add Anchor Point: options bar says the tool has no options by @rmsff in #12808
  • Art History Brush: a click held back by the tolerance adds its state by @rmsff in #12809
  • Delete Anchor Point: deleting a saved path's last anchor leaves it empty by @rmsff in #12811
  • Dodge: refuse Indexed Color and Bitmap documents by @rmsff in #12812
  • Remove Tool: name the new layer "Remove tool edits" by @rmsff in #12819
  • Red Eye: name the step Red Eye Removal Tool and record a click that changes nothing by @rmsff in #12843
  • Rasterize prompt: the fill wording as in the reference by @rmsff in #12851
  • Support ordered automation read roots with safe save provenance by @FredApps in #3023
  • Blur Strength: alert when a typed value is out of range by @rmsff in #12859
  • Reset Tool gives the Clone Stamp a 21 px soft tip at 25 % spacing by @rmsff in #12862
  • Eraser: add Erase to History (Brush, Pencil and Block modes) by @terminalgate in #10692
  • Remove tool: show the centre + in its brush cursor by default by @rmsff in #12873
  • Warp: show the Default grid's handles and split-grid anchors without hovering by @rmsff in #12894
  • Fix Move Auto-Select toggling and locked-layer clicks (#11102) by @yoriswind in #11711
  • Crop: Straighten gets its label and a spirit-level glyph (#10888) by @Raghav2012Code in #11490
  • Start Type Mask text with the placeholder, as the Type tool does by @rmsff in #12903
  • test(ui): time the Liquify Alt-twirl strokes explicitly (#12697) by @RickiNano in #12712
  • Ruler: Escape during a drag ends it and keeps the ruler (#11986) by @hectorviov in #12911
  • Delete Anchor Point: options bar says the tool has no options by @rmsff in #12924
  • Speed up adjustment previews for unstyled clipped raster layers by @wanikhawar in #12356
  • Allow positioning linked Pattern Fill layers on the canvas by @wanikhawar in #12834
  • Make text-on-path placement editable by @wanikhawar in #11629
  • Art History Brush: refuse a source of another colour mode by @rmsff in #12951
  • Transform presets flip the targeted vector mask (#12283) by @wanikhawar in #12330
  • Type: render a paragraph-box handle drag off the UI thread (#7032) by @wanikhawar in #12316
  • Rasterize prompt: a painting tool's type prompt adds "Rasterize Layer" by @rmsff in #12966
  • Sharpen Strength: alert when a typed value is out of range by @RickiNano in #12963
  • Warp: a one-way split on the Default grid keeps only the thirds across it by @rmsff in #12883
  • Image Size: a Columns width unit from the Column Size preference (#6214) by @davidmann4 in #6215
  • Smudge Strength: alert when a typed value is out of range by @RickiNano in #12982
  • fix(ui): Delete on an anchor selected with Add Anchor Point removes it, not the layer (#12703) by @RickiNano in #12796
  • fix(ui): Reset Tool gives the Dodge tool a 65 px soft tip at 25 % spacing (#12684) by @RickiNano in #12793
  • A click in a text field's padding focuses its editor (#12302) by @RickiNano in #12400
  • Save over a flat JPEG: JPEG Options, then in place; transparent ones offered as PNG (#2223) by @Higgs32584 in #7878
  • Object Selection: refuse Indexed Color and Bitmap documents by @rmsff in #12954
  • fix(paint): match unaligned Pattern Stamp origins by @Bobderto in #12987
  • Pen: Enter deselects the Work Path it finished by @rmsff in #12984
  • Pen options bar: Make: Selection…, Mask, Shape — Mask adds a vector mask from the path (#12904) by @ljkx in #12993
  • Sharpen: refuse Indexed Color and Bitmap documents by @rmsff in #12998
  • Pen menu: name the transform row after what it acts on by @rmsff in #13000
  • Warp: a fold shows what's under its transparent parts by @DingusMcRinkyDinky in #11170
  • fix(engine): follow Photoshop bracket-key brush size steps by @Bobderto in #12969
  • fix(ui): a Gradient fill layer greys the Gradient tool's mode choice and is edited live (#12008) by @rmsff in #12372
  • Add/Delete Anchor Point: edit only the targeted path (#12762, #12705) by @TrevorBrown-dev in #12815
  • fix: record Freeform Pen strokes with their tool name by @Bobderto in #12882
  • xtask: only follow https redirects when fetching PngSuite by @dylanmtaylor in #11231
  • Icon themes: parse index.theme once and refuse gzip icons by @dylanmtaylor in #11227
  • fix(paint): cap the total steps one stroke emits by @dylanmtaylor in #11195
  • fix(text): validate font table directories in one pass and cap collection faces by @dylanmtaylor in #11194
  • codecs: check TIFF structural tags, predicted rows and JPEG chunk frames by @dylanmtaylor in #10983
  • Pen Enter tests: look the Make buttons up by their new labels (main red since #12993) by @ljkx in #13023
  • Airbrush: about ten dabs a second while held, and a click lays two dabs by @DuBearte in #12169
  • Pencil Auto Erase: the start pixel must be exactly the foreground colour by @DuBearte in #12209
  • Eyedropper: at 100 % zoom and below an N by N Average covers (N+1) x (N+1) screen pixels (#11751) by @hectorviov in #12201
  • Count tool: arrow cursors with 1+, 1 over a marker and 1- with Alt (#11773) by @hectorviov in #12214
  • Ruler: a plain click keeps the current ruler instead of deleting it by @DuBearte in #12270
  • fix(ui): the Arbitrary rotation dialog keeps the ruler's two decimals (#12035) by @hnoerenberg in #12165
  • Magic Wand: a New-mode click inside the selection deselects, a drag moves the outline (#11782) by @hectorviov in #12161
  • fix(engine): drop selection after masking a live Gradient Fill layer by @ElNeMeR70 in #12244
  • fix(engine): new vertical text is the history state "New Vertical Type Layer" (#12058) by @rmsff in #12334
  • Make Selection: Rendering and Operation groups; the dialog's step is Selection Change by @rmsff in #13006
  • fix(engine): a Type Mask keeps the part of its selection past the canvas edge (#12074) by @rmsff in #12355
  • Windows: a pen moves and resizes the window through the custom title bar (#7967) by @FredApps in #12992
  • Sharpen: alert on a hidden, locked or group layer by @rmsff in #13003
  • Fix main: match the tuple variant Drag::RulerNew(_) in the ruler Escape check by @davidmann4 in #13074
  • Red Eye: refuse CMYK, Grayscale and Indexed Color documents by @rmsff in #13043
  • Warp: a Split button places one split, then its mode ends by @rmsff in #13044
  • Sponge: the options bar has a Flow field and strokes use it (#12976) by @ljkx in #13022
  • Fix main: split the Pencil outline out of draw_default_tool_cursor (clippy cognitive complexity) by @davidmann4 in #13079
  • packaging: use [[ for bash tests (SonarCloud S7688) by @dylanmtaylor in https://github.com//pull/13050
  • fix(engine): Object Selection finds objects on a transparent layer (#12852) by @Raghav2012Code in #12869
  • History Brush: refuse a source of another colour mode or bit depth by @rmsff in #12983
  • Open selection context menus on right-click with Content-Aware Move tool by @ElNeMeR70 in #12240
  • Eraser and Fill: background swatch through the Grayscale document's grey profile (#11940) by @hectorviov in #12908
  • Delete Anchor Point: Escape clears selected anchors, then the targeted path by @rmsff in #12995
  • Type options bar: font size preset list by @slafebre in #12718
  • fix(ui): the Classic gradient's refusals are the reference application's alerts (#12017) by @x-labb in #12646
  • Background Eraser: refuse one colour channel of an RGB document by @rmsff in #13080
  • Respect Lock Position in Add and Delete Anchor Point by @Bobderto in #13048
  • feat(ui): the Pen's gear has a Rubber Band check item, off by default (#12900) by @ljkx in #13035
  • Pen: Alt-drag on a straight segment adds an anchor and pulls out its handles (#12899) by @ljkx in #13037
  • Brush: Alt+digit sets Smoothing (Alt+3 = 30%, Alt+0 = 100%) by @DuBearte in #12034
  • Pattern Stamp: Behind in the Mode list, painting only where the layer is transparent (#12879) by @ljkx in #13028
  • Smudge: Mode dropdown in the options bar (#12959) by @ljkx in #13031
  • i18n: take translations from craft-i18n (cutover) by @benandez in #12374
  • fix(format): treat an unsupported directory flush on Windows as done (#9440) by @Higgs32584 in #9861
  • codecs: charge deep OpenEXR per-pixel bookkeeping against max_alloc by @Higgs32584 in #9786
  • Judge the unsaved-changes prompt's Save as file.save for automation by @Higgs32584 in #9767
  • Bridge: never send the control token to a listener that is not the app by @Higgs32584 in #9778
  • [Extend XCF import into native PhotoCraft documents 1/6] Persist import conversion data and bounded native filter foundations by @Terra854 in #11009
  • Keep automation's gate on actions automation wrote, whoever plays them by @Higgs32584 in #9783
  • Judge a Home screen recent-row click as File › Open Recent for automation by @Higgs32584 in #9774
  • fix(engine): keep missing-font type pixels through Image Size (#8860) by @alonfaraj in #8874
  • fix(gpu): return once at the end of blend_channel so FXC can build the compositor by @ebosido444-ai in #8734
  • Compose: Normal inside/center stroke replaces the layer beneath it (#6513) by @vangel76 in #6735
  • Color Settings › Spot: dot gain for spot channel and Multichannel ink previews by @ingling in #6787
  • Fix remaining grayscale Levels/Curves target mismatches by @hidoba in #6864
  • perf(camera-raw): develop Shadows and Highlights on the GPU in the preview (#6916) by @fjamesprice in #6951
  • perf(camera-raw): develop Dehaze, Clarity and Texture on the GPU in the preview (#6916) by @fjamesprice in #7020
  • Camera Raw: coming back to PhotoCraft brings its window to the front by @texjer in #7119
  • Linux packages: ship the CLI in source Flatpaks and offline automation guides by @haranishi in #7239
  • perf(raster): add 16-bit RGBA/GRAYA row decode fast paths by @ian-cowley in #8246
  • Use craft-heif from craft-libs for HEIC/HEIF by @dylanmtaylor in #13076
  • fix(fill): a new Solid Color fill's picker opens with the foreground's CMYK inks by @FinnNk in #8728
  • Tests: the batched GPU timing test checks one span per command buffer by @dotCooCoo in #8732
  • Fonts: draw Georgian with craft-fonts' Noto Sans Georgian, installed Georgian faces, and on the web by @devius in #8812
  • Guides: Shift snaps a moved guide to ruler ticks too, on whole pixels in a pixel ruler by @kuvshin888 in #8836
  • fix(engine): CMYK Split Channels reads the composite's exact inks (#9236) by @DuBearte in #9246
  • test: new layers made with an artboard selected go inside it (#9147) by @hectorviov in #9311
  • fix(ui): a command shortcut closes an open menu or dropdown list and runs (#9065) by @hectorviov in #9314
  • feat: Gradient Map keeps Photoshop's stops, midpoints and smoothness (#8351) by @DuBearte in #9319
  • fix(format): a .pcraft load's decode budget follows the machine's memory (#8595) by @DuBearte in #9323
  • fix(ui): enlarge slider hit areas (#9320) by @vanvo in #9326
  • fix(ui): Line tool snaps like Photoshop's Align Edges, so a 1 px line fills one row by @hectorviov in #9506
  • codecs: count TIFF strip/tile scratch against max_alloc by @Higgs32584 in #9781
  • Preserve Art History Brush colors at transparent edges by @dotCooCoo in #9868
  • CMYK: channel views and thumbnails show the document's inks (#8359) by @HEOJUNFO in #9940
  • Options bar: Opacity right after Mode in every theme (#9784) by @ljkx in #9980
  • Clouds: compress the histogram's tails instead of clipping them to the colours (#9959) by @ljkx in #9997
  • Color wheel: feather the hue ring and triangle edges (#9996) by @TaylorBurke in #10009
  • Brush: big imported brushes paint about twice as fast, with the same pixels by @artman67 in #10010
  • Canvas: a slow brush no longer freezes the cursor and panels while you paint by @artman67 in #10013
  • fix(ui): the Liquify preview shows the effect only inside the selection (#9541) by @FinnNk in #10044
  • ci(deps): bump taiki-e/install-action from 2.87.29 to 2.90.2 in the actions group across 1 directory by @dependabot[bot] in #10238
  • Codecs: a PNG's iCCP profile inflates to at most 16.7 MB (#8599) by @Lcoding15 in #10300
  • automation: finish writes and exports below a Windows UNC root by @tiagomaker in #10323
  • Wrap Pattern Preview moves so the tiles stay seamless by @jpmsantana in #10330
  • PDF: spot channels as overprinting Separation plates (FILE-215-17) by @ingling in #10384
  • Dialogs: one shared label column that never overruns in a longer translation (#9635) by @qvest-ssels in #10395
  • perf(raster): fill fallible default tiles by row by @yoriswind in #10398
  • Pen / Add Anchor Point: select the added smooth anchor and drag it (#8653) by @qvest-ssels in #10405
  • Eyedroppers: one cursor over the image, and caps lock's precise crosshair (#9836) by @Lcoding15 in #10406
  • Keep small shape splits cached within the pixel budget by @yoriswind in #10409
  • Filter Gallery: the effect-layer list fills the column's height (#10335) by @qvest-ssels in #10410
  • fix(ui): canvas presses on dialogs and groups (#10069, #10074) by @FinnNk in #10414
  • perf(algo): drop the per-sample clamp from the box-blur row pass by @ebosido444-ai in #10425
  • perf(algo): gather a strip before walking box-blur columns by @ebosido444-ai in #10426
  • Save for Web: grey pane, checkerboard under the image only (#2362) by @hectorviov in #10442
  • fix(ui): Keyboard Shortcuts records keys the app or the Mac menu bar uses (#8965) by @qvest-ssels in #10451
  • Keep canvas uniforms distinct on software DX12 by @yoriswind in #10507
  • fix(codecs): keep EXIF resolution cleanup linear on export by @chrisringrose in #10520
  • Select and Mask, Content-Aware Fill: draw the ants with the canvas's ants (#10506) by @qvest-ssels in #10528
  • A 1-bit TIFF opens in Bitmap mode, as in Photoshop (#10480) by @hectorviov in #10539
  • Bitmap documents grey out filters and adjustments, all but Invert, as in Photoshop (#10484) by @hectorviov in #10545
  • Fix Apply in the Variables Data Sets dialog by @yoriswind in #10597
  • Avoid float staging during codec image depth conversion by @yoriswind in #10688
  • Drops: route by a pure function, say when a folder is dropped, log how far a drag got (#10492) by @dark13b in #10720
  • Save As lists PSB as its own type, and file type lists are sorted by name by @DingusMcRinkyDinky in #10822
  • Fix Fill and Stroke for targeted masks by @yoriswind in #10896
  • Match Color: choose a source layer by @yoriswind in #10901
  • Path Selection: the pressed component selection survives, as a structure by @ugeenie in #10935
  • SVG: refuse drawings whose rasterising needs too much memory (#6105) by @vangel76 in #10953
  • fix(algo): Liquify replays a stroke with an absurd brush size or position without overflowing by @jayzed80 in #11013
  • Preserve preset import dialogs after invalid API answers by @yoriswind in #11054
  • Reject cross-artboard moves whose required translation overflows by @yoriswind in #11062
  • Enable winit's font-free Adwaita decorations on FreeBSD by @pkubaj in #11106
  • fix(affinity): charge shared text traversal and retained text against a document budget by @dylanmtaylor in #11149
  • fix(video): a salvaged truncated GIF or WebP import discloses its missing frames (#11113) by @hnoerenberg in #11175
  • Save for Web: stop input-driven horizontal growth by @anseltaft in #11191
  • Preferences: Apply keeps a live theme change made while open (#11120) by @indy2kro in #11241
  • Hand held by Space: right-click opens the view menu, as in Photoshop (#11271) by @indy2kro in #11292
  • Floating document windows zoom from the Navigator and status bar (#11276) by @indy2kro in #11294
  • Unsaved-changes prompt: ⌘D is Don't Save on macOS (#11282) by @TrevorBrown-dev in #11297
  • Canvas: the sharp filter no longer depends on a page's reduction (#11122) by @indy2kro in #11317
  • fix(atn): an explicit layers list exports one Set per layer (#7246) by @wwewtech in #8579
  • Fix main: duplicate TIFF tag constants and clippy after the 11-11 merges by @tanish2k09 in #13128
  • Image Processor: support current and open document sources by @se343r in #12858
  • Color Sampler: Sample Size shared with the Eyedropper; every sampler reads the NxN average (#11732) by @hectorviov in #12175
  • Painting tools: Shift+Alt+click adds a colour sampler by @hectorviov in #12245
  • Gradient tool: sample each pixel where the reference application does, fixing Angle and Radial values by @DuBearte in #12287
  • Red Eye: a press outside the selection does nothing by @rmsff in #13091
  • fix(ui): constrain brush shift-drags to horizontal or vertical by @hnoerenberg in #11926
  • fix(ui): the type layer menu takes the reference menu's entries (#12043) by @hnoerenberg in #12171
  • Perspective Crop: the first drag deselects an active selection as its own Deselect step by @hectorviov in #12226
  • fix(ui): show sampler target and scissors cursors over color samplers (#11744) by @coqui-software in #12145
  • Mixer Brush: Auto-Load, Auto-Clean and Sample All Layers commands for shortcuts (#11959) by @hectorviov in #12308
  • Paint Bucket: a click that fills nothing adds no history state by @rmsff in #13077
  • Grey the split warp entries when no Warp is open by @rmsff in #12885
  • fix(ui): make the Histogram panel follow the selection by @JohnXu28 in #4887
  • Remove tool: a press on a type layer does nothing, with no rasterize prompt by @rmsff in #13099
  • Art History Brush: refuse 16- and 32-bit documents with the reference texts by @rmsff in #13106
  • Sponge: Reset Tool gives a 65 px soft tip at 25 % spacing (#13029) by @NaufalDzz in #13109
  • Vertical Type Mask: show the Top / Center / Bottom align buttons by @rmsff in #13114
  • Type Mask: a click on a text layer's glyphs edits that layer by @rmsff in #13113
  • Healing Brush: refuse Indexed Color documents with the reference's alert by @rmsff in #13147
  • Preferences: refuse paths with empty segments and bound the alternate shortcut list by @dylanmtaylor in #11228
  • Mixer Brush: a wet click on an empty layer is a full-strength dab (#11944) by @hectorviov in #12285
  • Recovery: replace a symlinked sidecar and do not sweep through symlinked bundle folders by @dylanmtaylor in #11230
  • Actions: map Layer › New › Artboard and Artboard from Layers (#10723) by @ljkx in #12469
  • Fix macOS Text Color Picker cursor lag with a native pipette by @SvenCarstensen in #12523
  • Color Replacement: Shift+Alt letters set the active layer's blend mode by @hectorviov in #12261
  • Color Replacement: a hard tip edge with Anti-alias off by @hectorviov in #12259
  • Fit Content-Aware Move's middle only for a brightness change by @hsmith-dev in #12396
  • Mixer Brush: sample-target cursor with Alt and no-entry over a locked layer (#11957) by @hectorviov in #12301
  • Canvas: one wheel notch pans 16 screen pixels by @DuBearte in #12202
  • fix(ui): the Count readout shows the visible total and the current group (#11764) by @DuBearte in #11866
  • Brush HUD: hardness at the reference rate and a Diameter / Hardness / Opacity readout by @DuBearte in #12056
  • The Sponge tool says why it cannot paint (#13030) by @Raghav2012Code in #13172
  • Count tool: a right-click on the canvas opens the layer context menu (#11772) by @hectorviov in #12208
  • Convert Point: edit only the targeted path by @rmsff in #13108
  • Perspective Crop: regression tests for the shield and for Alt corner drags past the opposite corner by @hectorviov in #13004
  • Delete Anchor Point: Delete with an anchor selected edits the path, never the layer (#12761) by @TrevorBrown-dev in #13073
  • Fix main: eyedropper cursor tests accept the native pipette bitmap (#12523) by @davidmann4 in #13199
  • fix(ui): use vector path icon for shape layers in Properties by @superplay2021 in #10787
  • Keep document window canvases inert under a modal dialog by @wanikhawar in #12948
  • ci: run Harden-Runner on every job by @dylanmtaylor in #13255
  • Number fields take a decimal comma (#10729) by @Lcoding15 in #10738
  • Paint Bucket: refuse Bitmap documents with the reference's alert by @rmsff in #13116
  • Bound file read growth and publish files without replacement by @yoriswind in #11577
  • Updates: take craft-update from craft-libs main at 6e03f65bf by @dylanmtaylor in #13281
  • Convert Point: hit an anchor within 5 points by @rmsff in #13122
  • Docs: before/after screenshots go in the PR description, not the repo by @davidmann4 in #13206
  • Warp: one-decimal Bend/H/V, shared commit and cancel tooltips, greyed reference point by @rmsff in #13107
  • Pen: Mode dropdown lists Shape, Path and a greyed Pixels by @rmsff in #13264
  • Clone Stamp: a press without a source point shows the reference's alert by @rmsff in #13153
  • Delete Anchor Point: deleting a live shape's anchor asks first, with Don't show again (#12768) by @TrevorBrown-dev in #13150
  • Red Eye: canvas right-click opens the layer or selection menu by @rmsff in #13278

New Contributors

Full Changelog: v0.22.0...v0.23.0

Don't miss a new photocraft release

NewReleases is sending notifications on new releases.