PhotoCraft v0.23.1: Flatpak updates, Zoom tool modes and hardening
PhotoCraft v0.23.1: the Flatpak bundle can update itself, the Zoom tool gets Zoom In and Zoom Out modes, Undo after finishing a Pen path gives the path back, the Line tool starts at 1 px, and two dozen hardening fixes bound memory use and escape log output. This site's online editor now runs v0.23.1.
PhotoCraft v0.23.1 came out on 12 November 2026, about seven hours after v0.23.0. It is a patch release made for one fix: the Flatpak bundle couldn't update itself (#13322). Because upstream cut it from main rather than from v0.23.0, it also carries everything merged in between. Its release notes list 47 merged pull requests from 11 contributors, with no first-time contributors. The tag's code is main as of 12 November, 02:30 UTC, the merge of #13322, which also sets the version number. Every listed pull request was merged after v0.23.0's code was taken on 11 November.
One entry looks like more than it is: #13345, "Release: PhotoCraft v0.23.0 on main", only copies v0.23.0's version number into Cargo.toml and Cargo.lock on main. Nothing in it is new code, and nothing in v0.23.1 shipped earlier. #13337, #13374, #13257 and #13378 change CI and tests.
Besides the Flatpak fix, the Zoom tool gets Zoom In and Zoom Out modes, Undo after finishing a Pen path gives the path back, and the Line, Perspective Crop, Remove and anchor point tools get more of Photoshop's behaviour. About half of the release is hardening: limits on memory and sizes in importers, filters, painting and actions, and escaping of text that reaches the log. The web build still needs a workaround to start, and this site's online editor now runs v0.23.1; see Web build below. PhotoCraft is still early alpha, so expect rough edges.
Highlights
- The Flatpak can update itself. Help › Check for Updates… and Update and Restart need to ask the host's Flatpak about the installed copy and run its update helper, through
flatpak-spawn --host. The sandbox wasn't allowed to, so a bundle install wasn't recognised as one the updater could handle, and the prompt fell back to Download. Both Flatpak manifests now grant--talk-name=org.freedesktop.Flatpaknext to network access (#13322). The permission comes with the bundle you install, so v0.23.0 and earlier can't update themselves to v0.23.1: install the v0.23.1 bundle by hand once. We haven't tested a self-update to a later release in a running sandbox. See Flatpak below. - Zoom tool modes. The Zoom options bar starts with a Zoom In and Zoom Out pair; Zoom In is on by default. In Zoom Out mode a click zooms out and Alt+click zooms in, and with Scrubby Zoom off a drag zooms out once. Temporary zoom with Ctrl+Space works as before in either mode (#13013).
- Undo gives a Pen path back. After you close a path, end it with Enter or Esc, or switch tools, Ctrl/⌘+Z takes back that last step, and the Pen carries on drawing from the last anchor. Before, Undo deleted the whole path (#6413).
- Line tool: Weight starts at 1 px, with 5 × 10 px arrowheads, on first use and after Reset Tool (#13305), and a drag is one History step named "Line Tool" (#13303).
- Type: the Type options bar has Photoshop's Toggle Character and Paragraph panels button (#13020).
Tools
- Perspective Crop: W, H and Resolution keep to Photoshop's ranges, with an alert for values outside them (#12237), and a drag with no area keeps the corners already clicked (#13234). See /guides/crop.
- Anchor point tools: with Delete Anchor Point, Alt-click on an anchor selects its whole subpath, and the first Escape keeps the path (#13188, #13176). An anchor added to a straight segment is smooth, with handles (#13215). Convert Point drags a segment as Direct Selection does (#13141), and the Freeform Pen closes a stroke only within 3 px of its start (#13313).
- Remove tool: a 19 px brush on first use and after Reset Tool (#13151), and an alert on a pixel layer with Lock All (#13171).
- Other: the Count tool's options bar has all its controls from the start, in Photoshop's order (#12206); a rounded star rounds only its outer points (#13342); the Color Sampler cursor stays while a sampler is dragged (#13212); and the Arbitrary rotation angle keeps the value you typed (#13217).
More on the tools: /guides/tools.
Hardening
Most of these come from one contributor's audit and change nothing in normal use; they stop crafted or extreme input from using huge amounts of memory or time, or from reaching places it shouldn't.
- Limits on memory and sizes: Place refuses a scale that would make the image larger than the render limit (#11229). Importers, the text rasterizer, colour profile tables, the GPU compositor and gradient and effect maps are charged for all the memory they keep (#11144, #11047, #11055, #11061, #11056). Dense working buffers are checked against a budget, and a sequential-dab stroke too large to copy is refused (#10964, #11070).
- Inputs held to their ranges: filter parameters (Water Paper, Box Blur, Lanczos, RAW Develop noise), EXIF text, warp scans, inpainting sizes and pyramid depth; checked sizes in the encoders, the EXR, FITS and VP8 readers and EXIF thumbnails; zstd windows; and Cryptomatte layers listed once (#11199, #11161, #11164, #11145, #10978, #11181).
- Files and links: automation's
save_bytesnever reads linked files (#11233); presets that are symbolic links are refused, and batch export treats a symlinked name as taken (#11145, #11204); a save that replaces a file owned by another group no longer widens the group's access (#11232). - Logs and scripts: control characters in log lines and diagnostics that come from files and plug-ins are escaped (#11218); nested scratch sessions and preset calls are authorized, and CSV and PostScript text is escaped (#11188); action playback counts skipped steps against its budget and bounds Batch nesting (#10969).
- Small fixes on the way: the metadata choice now applies to WebP Quick Export (#11058), and RAW Develop reads each source row once when building its preview (#11064).
- macOS release signing decodes its certificate into an exclusive temporary file (#11028).
Flatpak
Both the release bundle's manifest and the from-source one now include --talk-name=org.freedesktop.Flatpak, with the comment that the shared updater inspects and updates the installation through flatpak-spawn --host; it was the only permission that changed since v0.21.0 (#13322). Keep in mind:
- This permission is broad. Through
flatpak-spawn --host, an app that has it can run programs outside its sandbox, so the sandbox no longer keeps PhotoCraft away from the rest of your files. Check it withflatpak info --show-permissions ai.storyteller.photocraft. - To take it away, run
flatpak override --user --no-talk-name=org.freedesktop.Flatpak ai.storyteller.photocraft. The self-update then can't recognise the install again, so update the bundle by hand, as before. - Coming from v0.23.0 or earlier, install the new bundle by hand once:
flatpak install --user photocraft-0.23.1-linux-x86_64.flatpak(or-linux-aarch64).
The steps and the rest of the sandbox are on /download/linux.
Web build
The v0.23.1 web zip still doesn't start as packaged. We downloaded photocraft-web-0.23.1.zip: 16,064,050 bytes (15.3 MiB), SHA-256 3a498eb517bca6cec89f9c6b1fc6448269a05428c8a3a4637c16817da157f03c, matching SHA256SUMS.txt. Its layout is the same as since v0.17.0: the boot wasm and script at the top, app/photocraft-web.js, app/parts.txt and one gzipped part, app/photocraft-web-caa57f60c12c8283.part-aa, of 15,955,518 bytes (15.2 MiB). app/photocraft-web.js imports ./snippets/…, but snippets/ is only at the top of the zip, so on a plain static server the page stays at "Loading PhotoCraft…". #10017 is still open, and the fix, #10248, isn't merged. The zip's HOSTING.md now says that building the web app from source downloads the translations from craft-i18n.
The online editor on this site now runs v0.23.1, from 12 November 2026. As before, it serves the official files unchanged, and answers a request for app/snippets/… with the release's own file from snippets/… at the top of the zip, byte for byte. It ran v0.21.0 from 9 November and skipped v0.22.0 and v0.23.0. How it works, and the workaround for your own server: /download/web.
Upstream still has no official web address for the browser build (#1655, open), and Chinese, Japanese and Korean text in the web build is still tracked in #1615.
Breaking changes or things to know
- The Flatpak's sandbox is wider: it may now run programs on the host for updates; see Flatpak above.
- From v0.23.0 or earlier, update the Flatpak by hand once; later releases should come through Update and Restart.
- Zoom tool: if you pick Zoom Out, clicks zoom out until you pick Zoom In again (#13013).
- The web zip doesn't start as packaged; this site's online editor runs it anyway.
- No Windows 32-bit build, as since v0.22.0; see the v0.22.0 notes.
- Update and Restart on Windows MSI installs. The report that it restarts without installing (#10477) is still open on 12 November 2026. If it happens, download the v0.23.1 MSI from /download/windows and run it once.
- Windows 7 and 8: PhotoCraft still needs Windows 10 or later.
How to update
Download the v0.23.1 build for your system from /download: Windows, macOS, Linux or the web build, or try it in the online editor. The release has 52 files, the same set as v0.22.0 and v0.23.0, with SHA256SUMS.txt to check them against. The Linux files and SHA256SUMS.txt are signed with the same release-signing-key.asc as since v0.20.2; on 12 November 2026 gpg --verify SHA256SUMS.txt.asc SHA256SUMS.txt reported a good signature from the key with the fingerprint 2B76 741B 414A AD6C D33E 6312 13A0 05C0 B9D7 C3ED. Check your own download as shown in /guides/verify-download. Builds come only from the official GitHub release; avoid third-party mirrors. An installed copy's update prompt can offer v0.23.1 too; for the Flatpak and MSI installs, see above. If you are coming from v0.22.0, also read the v0.23.0 notes, and from v0.21.0 or earlier the v0.22.0 notes as well.
Full release notes, with every merged pull request: PhotoCraft v0.23.1 on GitHub.