Three bugs, all found by actually running the thing rather than reading it. 1. `--e10` with no value did nothing. Making the flag optional-valued gave it an empty-string constant, and the code deciding whether to drive the controller used a truth test - so the documented `--e10` form printed the full translation and quietly skipped the hardware. No error, because nothing failed. Now gated on `is not None`, with a comment saying why. 2. A missing part program dumped a traceback. The top-level handler tidied e10 errors and re-raised everything else. Now a clean message that lists the part programs it can actually see, which also covers Windows path confusion. 3. Errors could vanish when piped. stdout is block-buffered and stderr is not, so the message printed before the output it referred to and a `| tail` dropped it entirely - looking like a silent failure. stdout is flushed before writing an error.
18 KiB
18 KiB