Skip to main content

PhotoCraft v0.10.0: PDF save, image brush tips and Content-Aware crop fill

PhotoCraft v0.10.0: save as PDF, image files as brush tips, a curve per brush control, Content-Aware crop fill, a fuller Export As and Actions Button Mode.

v0.10.0Released Oct 18, 2026Official release notes on GitHub

PhotoCraft v0.10.0 came out on 18 October 2026, four days after v0.9.0. Its release notes list 263 merged pull requests from 82 contributors, 28 of them first-time contributors. The README still counts 67 tools. This release can save PDFs, turns image files into brush tips, gives every brush control its own response curve, and lets the Crop tool fill what a turned crop uncovers with Content-Aware Fill. Many other changes make adjustments give Photoshop's results, add Photoshop's keys, and keep large documents responsive. PhotoCraft is still early alpha, so expect rough edges.

The release notes open with a summary of the project's own scorecard (docs/scorecard.md). Its tool checklist went from 29 done, 13 partial and 1 missing to 33 done, 11 partial and none missing, and PDF save moved from missing to partial in its file compatibility list. The minimum number of test files that must render like Photoshop's own output rose from 145 to 188 of 256, and from 236 to 249 of the 309 psd-tools files. The workspace checklist is unchanged, and 26 of 168 settings still do nothing. The performance budgets met stay at 3; two new many-layer scenarios are tracked but haven't been run yet.

Highlights

  • Save as PDF. Save As, Save a Copy, Export As and photocraft-cli write .pdf files: the document flattened to one RGB, Grayscale or CMYK page at 8 bits, with its ICC profile. The page size follows the pixel size and resolution. Multi-page PDFs, layers, vector or text output and PDF import are not there yet (#3441).
  • Brushes: Import Brushes… in the Brushes panel and the preset picker takes an image file as well as .abr, and turns it into a brush tip (#3292). Each brush dynamic (Size, Opacity, Flow, Scatter and so on) gets its own response curve for its pen pressure, tilt, wheel, rotation or fade input (#3302). The Brushes panel is its own panel that docks and floats like the others (#4603). More in /guides/brushes.
  • Content-Aware crop fill. The Crop tool's options bar has Fill: Background (Default) or Content-Aware Fill. With Content-Aware Fill, the area a straightened, turned or extended crop uncovers is filled from the image around it, in the same undo step (#3827).
  • A fuller Export As: an exact width and height in pixels, with the aspect ratio locked or free; named presets you can save, apply and delete; and, where the format allows, keeping the document's profile or converting to sRGB, embedding the profile or not, and writing no metadata, EXIF and resolution only, or all metadata (#5344).
  • More of Photoshop's keys. Ctrl/⌘+Shift+F1 and F2 darken and lighten the interface (#3709). A command can have a second key, so F2, F3 and F4 cut, copy and paste, Shift+F7 inverts the selection and Ctrl/⌘++ zooms in (#3746). Adding Shift to wheel zooming snaps to Photoshop's zoom levels (#3695). See /guides/shortcuts.
  • Editable Filter Gallery smart filters. Double-clicking a Filter Gallery smart filter opens the Filter Gallery with its settings, previewing on the pixels below it. PSD files with a Chrome Filter Gallery smart filter now open it editable instead of kept as is (#3426).
  • Actions: Button Mode shows each action as a coloured button that plays it with a click (#5213), and Batch and Image Processor can Include All Subfolders (#3758). See /guides/actions.
  • A lighter web download. The web build ships the app gzipped, as an 11 MiB part started by a small boot module, instead of one 24 MiB .wasm file, so the download no longer depends on the server compressing it (#5941). Details under Web build below.
  • Low-Latency Drawing. Preferences › Performance › Low-Latency Drawing turns vsync off, for setups where strokes trailed the pen by about 50 ms. It is off by default (#5274).

New tools and features

  • Brushes in detail: in an imported image, dark pixels paint and white or transparent ones don't, as Define Brush Preset reads a selection. The tip is cropped to what paints, at most 2500 px a side, and named after the file. Each Control row in Brush Settings has a curve button that opens the same editor as Preferences › Tools › Pressure Curve, applied after it (#3292, #3302). The Brush and Eraser Size fields in the Studio, Adwaita and Breeze themes no longer stop at 2500 px, so sizes go to 5000 px in every theme (#5709). Dual Brush keeps its tip spacing and scales with the main brush (#4856).
  • Paths and shapes: Shift with the Pen tool puts the next anchor on a 45° line and turns handles in 45° steps (#3756), and Shift does the same for an anchor dragged with Direct Selection (#5498). The Curvature Pen edits finished paths (#5197), live rectangles get corner radius handles on the canvas (#5276), and Auto Add/Delete works on the path being drawn (#6172).
  • Guides and transforms: guides can be selected, with a guide context menu and Edit Selected Guides (#3734); Alt-dragging from a ruler makes a guide of the other orientation (#5885). A run of arrow-key nudges is one History state, and Preferences › Tools › Bundle Arrow-Key Nudges turns that off (#2764). With a selection, Free Transform's box is the selection's bounds and the marching ants move with it (#5337), it starts by itself after placing an image (#5390), and resize cursors turn with the box (#5188).
  • Layers: the Frame tool takes type, shape and smart object layers into a frame, not only pixel layers (#4441). The Layers panel gets a filter dropdown with Kind, Name and Mode (#5268) and Clip Thumbnails to Layer Bounds (#4312); blend mode, opacity, fill and locks change every selected layer (#5856). Curves can be applied to masks, alpha channels and Quick Mask (#5448).
  • Filters and styles: Iris Blur, Tilt-Shift and Spin Blur have their pins and handles on the image (#3822, #3829); filter dialogs with a seed get a Random button (#5886); a drop or inner shadow can be moved by dragging on the image (#5893); Bevel & Emboss has its Technique menu (#5181).
  • Adjustments match Photoshop: Gradient Map, Threshold, Levels, Posterize in 16-bit, both Brightness/Contrast modes, and adjustment layers in Lab and CMYK documents were measured against Photoshop and now give its results (#5018, #5263, #5143, #5267, #4722, #5171, #4945). In 32-bit documents, legacy Brightness/Contrast, Channel Mixer, Photo Filter and Black & White tint no longer clip (#5011).
  • Keys and menus: the Keyboard Shortcuts dialog gets Photoshop's Accept and Go to Conflict and Undo Changes, and refuses keys the system reserves (#5349). On Windows and Linux, Alt or F10 puts the keyboard on the menu bar, Alt plus a letter opens a menu, and the letters are underlined (#5091).
  • Opening and saving: on Windows and Linux, opening a file while PhotoCraft runs opens it as a tab in the running window instead of a second copy of the app (#3755). Opening a file that is already open shows its tab (#6630). Save asks before writing over a file another app changed (#6652) and refuses a read-only one (#6643). The Embedded Profile Mismatch prompt shows the profile names and can remember your choice (#5208).
  • Interface: the selected tool is remembered between launches (#5043), the Preferences window can be resized (#5170), hovering a font previews it (#5222), and double-clicking the empty workspace shows File › Open (#5429).
  • Speed: on documents whose layers outgrow the GPU memory budget, hiding a large layer no longer freezes the window for a third of a second, and the first draw after opening no longer freezes for 1.6 s (#5083). Discrete graphics cards are no longer charged for the document's pixels, and Preferences › Performance › GPU Memory sets the budget by hand; in the PR's test, an edit in a 150-layer document went from 2.6 s to 25 ms (#5973). Stack Mode is 8 to 17 times faster (#6462), Photomerge about 4 times (#6489), and Camera Raw's Shadows and Highlights 1.9 times (#6247).

File formats

  • PDF saves one flattened page, as described above. Lab, Indexed and other modes are asked to convert to RGB first (#3441).
  • Kodak Cineon (.cin) film frames open, read only, at 10 bits, without a log-to-linear transform, as DPX already does (#4691).
  • TIFF reads and writes CIE L*a*b*: Lab TIFFs from Photoshop open as Lab documents, and Lab documents save as Lab TIFFs instead of sRGB (#4949).
  • Raw: lossy (JPEG-compressed) DNGs decode at their own levels (#5112), and Nikon NEF files get fixes to lossy and packed decoding and to their crops (#3238).
  • EXR: Preferences › File Handling › Open color-less EXR as ACEScg opens renders that state no colour space in ACEScg instead of linear sRGB (#4908). In v0.10.0 it only works for some ways of opening a file; see the list at the end.
  • PSD: a file whose merged image is damaged still opens with the layers that can be read (#6170), and a smart object's filter mask shows when the file opens (#5005).
  • Smaller fixes: HEIF grid images keep their tiles' ICC profile (#5553), RLE Targa files decode correctly (#6386), grayscale WebP exports are colour managed (#5875), and 32-bit FITS saves are clamped to 0–1 with a warning, so they reopen as saved (#5628).

What opens and saves where: /guides/file-formats.

Languages

The official builds still include 21 interface languages. Spanish has its dynamic interface text translated (#4306), Italian gets 103 labels other catalogs had added (#4860), and Hungarian was aligned with its catalog's conventions (#5434). Arabic and Hebrew layer names read right to left in the Layers panel and the title bar (#5385). See /guides/language.

Automation (CLI & MCP)

  • layer.list lists the layer tree, read only: ids, names, kinds, visibility, bounds and which layers are selected, nested or flat (#5148).
  • image.detectFaces finds faces with a box, a score and five landmarks, using a pure-Rust port of libfacedetection. It is a command only, with no menu entry (#4513).
  • PDF works wherever an export does, so photocraft-cli convert and batch can write .pdf (#3441). image.crop takes contentAware (#3827).
  • Shortcuts can be listed, set, imported and exported without the interface: shell commands and tools now live in the engine, and edit.keyboardShortcuts refuses reserved keys (#5801).
  • Actions record Select Layer by the layer's name, so an action recorded on one photo selects the same layer in another (#2441). A recorded File › Save of a flat file saves the file the action is played on (#3537).
  • The control channel drops a connection that hasn't authenticated within 10 s (#5229) and refuses a token file other users can read (#5459). Stored smart filter settings respect the automation read boundary (#5684).
  • photocraft --help prints usage, and unknown options are errors (#6435). An unknown layer id or name lists the document's layers in the error (#5133).

Setup and examples: /guides/mcp-cli.

Web build

The online editor on this site doesn't run this build; it has moved on to a newer one. The v0.10.0 web zip is 10.9 MiB.

  • The app's WebAssembly is now shipped gzipped and cut into parts, started by a small boot module, so no file in the site comes near the upload limits of common static hosts (#5941). Today it is a single part of 11,332,767 bytes; unpacked, the wasm is 24,748,731 bytes (23.6 MiB), a little smaller than v0.9.0's 25,033,027 bytes.
  • On Apache servers with mod_mime_magic, this build fails to start: the server marks the gzipped part so the browser unpacks it before the app does. v0.12.0 handles that (#7639).
  • Place Embedded works with the browser's file picker, and images dropped on the canvas are placed (#5585, #5817).
  • Chinese, Japanese and Korean text still shows as empty boxes in the web build, in type layers and in the interface. The web build has no CJK font yet (#1615, still open). Use the desktop app for CJK text.

Self-hosting notes are on /download/web.

Fixes and stability

  • Windows: on systems where the GL adapter drew a black window, such as some VMware machines, PhotoCraft now prefers the WARP software renderer over GL (#5309). Crash-recovery autosaves leave the roaming profile (#6412).
  • macOS: the bundled app keeps its own Dock icon (#5879), and an open dialog no longer stops the window from being dragged (#5860).
  • Linux: File › Print works in the Flatpak, over CUPS's IPP socket or the print portal (#3017). The file type picked in Save As sets the extension (#6151); a virtual keyboard that claims to be a pen no longer forces the window through Xwayland (#5295); the brush outline matches the stroke on Wayland at fractional scales (#5796); the AppImage installs its menu entry when AppImageLauncher skips it, and not twice under AM or AppMan (#5551, #6394).
  • Retouching: Content-Aware Fill leaves no ghost edges or object colour around thin removed objects (#5290), and Select Subject keeps parts of the subject that are coloured like the backdrop (#4462).
  • Close All, Close Others and Quit ask again about documents changed while their prompt was open (#5079), and a second launch leaves the running instance's log alone (#6478).
  • Security: linked smart objects, Package and Reveal follow stored paths only to local files or the document's own share (#7149); the ICC parser checks its arithmetic (#5227); the ruzstd dependency moves to 0.9.1 for RUSTSEC-2026-0344 (#5225); and more memory bounds on PSD, Affinity, DNG and vector input reject hostile files before allocating.

More known problems and fixes: /guides/troubleshooting.

Breaking changes or things to know

  • One window for every file. On Windows and Linux, opening files while PhotoCraft runs sends them to the running window. Start with --new-instance, or set PHOTOCRAFT_NEW_INSTANCE=1, for a separate process. Portable copies, PHOTOCRAFT_CONFIG_DIR and --control launches still run separately, and the Flatpak doesn't hand files over yet (#3755).
  • The ACEScg option is incomplete in this release. It applies to file.openAs, but not to File › Open, drag and drop or Open Recent in the desktop app, nor to Open EXR Parts, so turning it on there changes nothing. v0.11.1 fixes this (#6783).
  • Some results change on purpose. Gradient Map, Threshold, Levels, Posterize, Brightness/Contrast, Color Balance and Lab and CMYK adjustment layers now match Photoshop. Replaying an older action can give a different image.
  • Low-Latency Drawing is off by default and applies at the next launch. It turns vsync off; leave it off unless strokes trail your pen (#5274).
  • Windows crash-recovery autosaves moved from %APPDATA%\Photocraft\Recovery to %LOCALAPPDATA%\Photocraft\Recovery. Old autosaves are moved there at startup (#6412).
  • The Discord button left the title bar. Help › Join the ArtCraft Discord, the start screen and About still link to it (#1737).
  • Self-hosting the web build: serve the app/*.part-* files byte for byte with no Content-Encoding, since they are gzipped already; the zip's HOSTING.md has the details (#5941).
  • Windows 7 and 8: PhotoCraft still needs Windows 10 or later (#2310), and the v0.10.0 MSI still has no installer check for older versions.

How to update

Download the v0.10.0 build for your system from /download: Windows, macOS, Linux or the web build. The release has the same 26 files as v0.9.0, including SHA256SUMS.txt. Builds come only from the official GitHub release; avoid third-party mirrors. If you are coming from v0.8.2 or earlier, also read the v0.9.0 notes.

Full release notes, with every merged pull request: PhotoCraft v0.10.0 on GitHub.