Repository navigation
v0.9.0
A mask that binds
--mask now works on comfyui, and it means something stronger there than anywhere else: every pixel outside the mask comes back byte-identical.
$ lucida edit scene.png "a field of sunflowers here" --mask region.png --provider comfyuiMeasured rather than claimed, against a two-tone source with the left half masked:
| change inside mask | change outside | ||
|---|---|---|---|
| Inpaint conditioning alone | 128.03/255 | 23.84/255 | advisory, 5.4× |
| Plus in-graph compositing | 127.47/255 | 0.00/255 | binding |
| Through the release binary | 123.82/255 | 0.00 mean, 0.00 max | binding |
This is the one thing the local lane can do that no hosted provider here can, and the reason is structural rather than clever: Lucida builds the ComfyUI graph. OpenAI's mask concentrates change without confining it — the README has always said so, and told callers to composite the result themselves. A local graph can do that compositing before it returns, so you get a guarantee instead of a caveat.
The same mask file works on both providers. Transparent pixels are the region that changes, on openai and comfyui alike — verified against a live server rather than assumed, because guessing wrong inverts every mask and still renders happily.
No new model needed
The roadmap said local inpainting required a Flux.1 Fill checkpoint. It doesn't — Flux.2 does it through InpaintModelConditioning, which one probe settled. That would otherwise have cost a 24 GB download and forced a licence decision that remains open.
Worth stating as a method: it was a claim about a model, and claims about models are testable.