Jev Paint
Local browser app that turns batched per-pixel Jev distributions into paintings; prompts describe pixels and regions rather than sending raw images.
# jev-paint A small local app that turns Jev's pixel probability distributions into paintings. ## Run Requires Python 3.9+ and a modern browser with module workers and OffscreenCanvas (current Chrome, Edge, Firefox, or Safari). No packages, build step, or Node installation needed. ```sh python3 server.py ``` Open **http://127.0.0.1:8791**, open Settings, and paste your Jev API key. Choose a representation and grid size, then enter a prompt. Each painting joins an in-memory carousel. The key is saved in this browser’s local storage; clear the key field to forget it. Paintings are cleared when you reload. Generation uses your TypeSafe account. Stop the helper with Ctrl+C. Use `python3 server.py --port 8795` if the default port is occupied. All question construction, batching, probability processing, and painting run in the browser. A Python standard-library helper serves the files and forwards requests to the fixed Jev endpoint because its API currently disallows browser CORS origins. It binds only to loopback, checks the request origin, and neither stores nor logs keys or prompts. No environment variables are required. ## Rendering The same algorithm handles palette, HSL, binary RGB, and silhouettes. HSL/RGB channel probabilities are combined assuming independence; Jev does not supply a joint distribution. Spatially correlated categorical sampling supplies stroke pigments, mean color supplies the underpainting, and entropy controls relief. Strokes follow local luminance contours; a height map supplies impasto lighting. This is an artistic transformation, not a lossless probability chart. Painting runs in a module worker at 560×560. Pigments are sampled lazily and cached, and stroke segment geometry is precomputed. The completed textured painting fades in over 55