zphoto is a from-scratch image editor written in Rust, porting the union of Adobe Photoshop and Adobe Illustrator into a single tool. One engine — zphoto-core — provides both halves: roughly 367 raster commands (a Photoshop / GIMP port operating at 8-, 16-, and 32-bit depth) and 32 vector commands (an Illustrator port), and crucially the vector side shares the very same layer stack as the raster side rather than living in a separate document model. The app is a Tauri v2 desktop front end with a cyberpunk HUD. Created by MenkeTechnologies.
Photoshop + Illustrator
One binary covering a raster editor (filters, adjustments, blend modes, masks, selections, paint) and a vector editor (paths, shapes, strokes/fills, boolean ops), each row in the port report naming its source app.
Raster + Vector, one stack
Vector artwork lives on the same layer stack as raster pixels — not a bolted-on second document — so compositing, masks, and ordering work uniformly across both.
Powered by zphoto-core
All pixel and path work lives in the embeddable zphoto-core engine: codecs, filters, fills, paint, text, and vector ops — pure Rust, 8/16/32-bit, with a C FFI and a Tauri plugin surface.
Honest Status
Feature status is derived from source. A capability is "done" only when a real, non-stub engine symbol exists; everything else stays planned in the port report.
Source apps
zphoto ports its feature set from two reference applications. Each row in the port report names which app the feature comes from.
Adobe Photoshop
The raster surface: layers and blend modes, selections and masks, filters and adjustments, transforms, paint and clone/heal, channels, smart objects, high-bit-depth editing.
Adobe Illustrator
The vector surface: Bézier paths, shapes, strokes and fills, boolean path operations, type on a path, and artwork that composites into the shared raster layer stack.
Feature areas
The breadth zphoto targets — the union of Photoshop and Illustrator capability areas. See the port report for the per-command breakdown and live, source-derived status.
- Layers / compositing — layer stack, groups, blend modes, opacity, clipping, layer masks, adjustment layers.
- Selections / masks — marquee, lasso, magic wand, color range, feather, grow/shrink, quick mask.
- Adjustments — levels, curves, hue/saturation, color balance, exposure, channel mixer, gradient map.
- Filters — blur, sharpen, noise, distort, stylize, render — across 8/16/32-bit pixels.
- Paint / retouch — brush, eraser, clone stamp, heal, smudge, gradient and pattern fills.
- Transform — move, scale, rotate, skew, perspective, warp, crop, resize, canvas size.
- Text — point and area type, type on a path, font handling, rasterize.
- Vector (Illustrator) — Bézier paths, shapes, strokes/fills, boolean ops, on the shared layer stack.
- Color — RGB / grayscale / channels, ICC handling, 8/16/32-bit depth.
- Import / export — common raster codecs in and out, with the document model preserved across edits.
Architecture
The app layer is thin; the work lives in zphoto-core. A reference shape, using the engine's in-memory API:
use zphoto_core::Engine;
use serde_json::json;
let engine = Engine::new();
engine.invoke("layer.add", &json!({ "name": "overlay" }))?;
engine.invoke("filter.gaussian_blur", &json!({ "radius": 4.0 }))?;
engine.invoke("adjust.levels", &json!({ "black": 12, "white": 240 }))?;
let png = engine.invoke("io.export", &json!({ "format": "png" }))?;
codec
Decode / encode raster formats into and out of the in-memory document model.
filter / fill / paint
The raster command surface — filters, adjustments, fills, and brush/paint operations over 8/16/32-bit pixels.
vector
Bézier paths, shapes, strokes/fills and boolean ops, composited onto the same layer stack as raster.
model / ops
The document and layer model and the dispatch surface (~55 ops) that the GUI, FFI, and Tauri plugin all call.
text
Type layout — point / area type and type on a path — rasterized into layers.
ffi / tauri_plugin
A C FFI and a Tauri plugin surface so the engine embeds in the desktop GUI and in other MenkeTechnologies apps.
Where it goes next
The port report is the roadmap and the scoreboard: it enumerates the Photoshop / Illustrator command surface and tracks status per command as code lands. See the engineering report for the engine's module map and verification policy.