Build · AI coding agent (Claude Code) as programmer and tester, directed and reviewed by me
Timeline · September to October 2026
Platform · Desktop web (editor) · mobile web (intro site)
Status · Live at postmo.dev
The editor with the Flying Silk template open: layers on the left, the shader's Fill settings on the right.
Five templates whose shaders started from a photograph: Passing Lights, Afternoon Shade, After Rain, Sheer Pressure and Flying Silk.
The colour tokens and the three typefaces. The colour values have not changed since the first day.
The start page: a selected card gets a green border, and CREATE is the only primary button.
Part of the icon sheet: each icon at 12 px, pressed, and enlarged on its grid.
Components from the shipped editor: a dialog with one primary button, the effects menu, and the Effects stack.
Before: the shader was an effect layer (FX) that always filled the canvas, with one panel for its colours and parameters.
Step 2: the Mask layer (MSK), a shape with a shader inside. Here the word MOTION shows a shader through its letters.
Now: the title is a text layer with a Shader fill. It is still edited as text, and the shader shows through the letters.
A shader layer with an Ellipse shape. Fill and Shape are separate sections.
uniform vec3 glow; // @color Glow #58ff3e
A new custom shader. The parameters and colours declared in the code appear in the panel like a built-in shader's.
A Shadertoy shader after import. The note lists what was converted, and one number has become the Param 1 slider.
An error marked on line 9, with Copy for AI to hand the problem to an AI chat.
Time fed straight into noise → The loop jumps at the end
Patterns placed with gl_FragCoord → The pattern slips when the layer is cropped
Colours written into the code → The colour die and locks cannot touch them
Its own noise functions → The seed does nothing
The open-source kit: a skill, the same rules as plain text, examples and a check script.
Versions two to five, top to bottom. All four are archived on a branch.
What shipped: one track row, three sliders and Match.
The phone site on two visits, each with a different template, seed and type layout.