ZPHOTO // CYBERPUNK IMAGE EDITOR

// from-scratch Rust image editor — porting Adobe Photoshop + Illustrator · Tauri v2 desktop app over the zphoto-core engine

Status: engine implemented, GUI in progress. zphoto-core is a working Rust engine — ~367 raster commands and 32 vector commands over a shared layer stack, covered by 440+ tests. The desktop GUI is the Tauri v2 HUD front end on top of it. Live, source-derived feature coverage is tracked in the Photoshop + Illustrator port report; no capability is claimed without a real engine symbol behind it.

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.

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.