@faceless-photolib

faceless-photolib

Headless, color-managed, GPU image editing.

A headless, color-managed, GPU-accelerated, non-destructive image-editing engine. One WGSL codebase runs on the web, React Native, and the server; an ordered layer stack compiles to a float ACEScg render graph with every Photoshop blend mode, 3D LUTs, and DCTL/CLF color transforms.

DocumentationOpen the editorGitHub

Packages

@faceless-photolib/engine-apibeta

The main entry point: open a document, edit its layer stack, render and export via a pluggable backend.

@faceless-photolib/schemasbeta

Zod schemas as the single source of truth — branded IDs, the Result vocabulary, the Layer discriminated union, color spaces, transforms, masks.

@faceless-photolib/diagnosticsbeta

Runtime diagnostics (warnNotImplemented / warnDegraded / warnUnexpected) backed by a dedup registry — used instead of // TODO.

@faceless-photolib/colorbeta

Color science: transfer functions, primaries/matrices, Bradford adaptation, ACEScg working space, hub-and-spoke conversions.

@faceless-photolib/geometrybeta

2D affine + homography math for layer transforms: mat3, decompose/recompose, homography solve/fit, resample kernels.

@faceless-photolib/blendbeta

All 27 W3C Compositing & Blending Level 1 modes over premultiplied Porter-Duff — the Photoshop blend-mode set.

@faceless-photolib/adjustmentsbeta

Non-destructive adjustment effects (curves, levels, hue/saturation, exposure, …) as shader IR with a declared working space.

@faceless-photolib/lutbeta

3D LUT parsing (.cube / .3dl / ACES .clf) and tetrahedral/trilinear interpolation over an rgba16float cube.

@faceless-photolib/color-transformexperimental

ACES CLF and a constrained DCTL subset compiled to the engine render IR — the DaVinci-style color-transform layer.

@faceless-photolib/interactionbeta

Headless crop / resize / rotate / straighten controllers replicating Photoshop and Lightroom controls. No UI — pure state machines.

@faceless-photolib/document-modelbeta

The immutable document model and an immer-based operation set over the ordered layer stack.

@faceless-photolib/image-codecbeta

Image decode/encode (PNG/JPEG/TIFF via sharp) and a Node TextRasterizer port implementation.

@faceless-photolib/render-graphbeta

Compiles a document layer stack into a color-managed render graph of GPU passes, plus the TextRasterizer port.

@faceless-photolib/backend-cpubeta

The CPU reference backend — the golden renderer. Executes the render graph in pure TypeScript at full float precision.

@faceless-photolib/backend-webgpuexperimental

The WebGPU backend — WGSL codegen + pipeline for the render graph; one shading-language codebase for browser, Node, and Expo.