Build on Pixel Stroke

Pixel Stroke is more than a pixel-art editor — it's a scriptable creative pipeline. Every tool you see in the editor is built on the same public surface you can drive yourself: a small Rust core, a fast WebAssembly runtime, and a Rhai scripting layer that exposes the whole toolset.

These pages document the parts you can build against. The scripting guide covers the embedded Rhai surface — macros, custom tools, panels, workflow automation. The API reference lists the bound primitives. Both pages are growing as we stabilise the public contract.

What you can do today

  • Macros. Save a sequence of filter / layer / palette operations as a callable function.
  • Custom tools. Build a tool that consumes a selection, transforms pixels, and emits a stroke through the same pipeline the editor's brush uses.
  • Panel scripts. Author entire side-panels in Rhai (toolbar, layer list, timeline, palette picker — they're all panel scripts in the shipped editor).
  • Workflow automation. Batch-export tile atlases, generate icon sets, run procedural fills, drive animations frame-by-frame.

What's coming

  • Stable bindings for the stamp-brush / drawer / animation-brush flows when those land in the editor.
  • A debugger UI for scripts (set breakpoints, inspect state).
  • A package registry for sharing macros + panels.

Stability promise

Pixel Stroke is still pre-1.0. The Rhai surface is the only public contract — internal Rust crates may change without notice. If a binding is documented on these pages with stable, it won't change shape between releases. Bindings marked experimental may.

Ground rules

These docs cover only the scriptable surface of Pixel Stroke — public bindings exposed through Rhai. The Rust crates that implement those bindings are implementation details and may move without warning.

Found a binding that's missing, broken, or under-documented? Open an issue on GitHub .