Post 094

A CLI With Manners

Typo a flag and Lux now tells you so instead of opening a window on your display. There is a real --help, headless dumps honour your patch's declared resolution, and --dump-editor works on its own.

Run lux --help and, until this release, you would learn two things: first, that there was no help, and second, that the application’s considered response to an unrecognised flag was to open a 2048 by 1536 editor window on whatever display it could find. For a tool that people drive from scripts, render farms and SSH sessions, “when in doubt, summon a window” is a bold default. It managed to interrupt two separate scripted sessions during our own testing, which is the sort of statistic that gets a ticket filed.

Unknown flags now fail like grown-ups

The command line is checked before anything else gets to run. A flag Lux does not recognise prints an error naming the flag, the full usage text, and exits with a non-zero code your script can actually branch on. No window, no logger spin-up, no GPU probe. And --help is now a real flag with real output: every mode the binary supports, documented in one place, exit code zero. --version rides along, because asking a binary what it is should not be an adventure either.

Your resolution, not ours

Headless frame dumps had a quiet opinion: every patch rendered at 800 by 800, regardless of what the patch itself declared. Your carefully composed 512 by 512 loop came out 800 by 800, silently resampled by nobody and composed for a square it was never designed for. The --dump-frame path now reads the output resolution saved in the patch and renders exactly that, falling back to 800 only when the patch declares nothing. What you set in the project settings is what lands on disk.

The flag that did nothing

--dump-editor, which renders your node graph layout to an image, had a stowaway clause: it only functioned while riding alongside --dump-frame. Invoke it on its own, as the documentation implied you could, and Lux would ignore it entirely and exit successfully, the special kind of failure that reports success. It now works standalone, and if you forget the --load it needs, it says so and exits with an error instead of producing a confident nothing.

What it buys you

Lux is now safe to script. Wire it into a render farm, a cron job or a CI pipeline and the failure modes are exit codes and stderr text, not surprise windows and silently wrong resolutions. It is the unglamorous end of the reliability run this cycle has been on, and it closes it: input, display, output, export and now the command line all say what they mean.

← All posts