v0.1.2
[0.1.2] - 2026-07-31
First release after running every command against production rather than
against a test double. The command surface was already complete; what had never
been checked was whether the output was right. Three commands were printing
the wrong thing, and one of them was losing a value that cannot be recovered.
Fixed
licenses createno longer discards the license key. The API returns the
plaintext key once, on mint, and never again.remintprinted it;create
printed only the masked form, so a key issued without--jsonor
--send-emailwas gone the moment the command returned. Both mint paths now
print it the same way.products key-types createandupdateprint the key type again. Both
read akeyTypefield that no route sends — the API wraps the object in
createdandupdated— so every field rendered as-and the output looked
like a failure. The write had always succeeded; only the display was wrong.test-purchase createandgetshow the key. They readdisplayKey,
which is the licenses routes' name for it; the test-purchase routes send
licenseKeyMasked. Every run printedKey: -, including completed ones.
Changed
-
A usage error now exits
1instead of2.2is documented as "not
authenticated, or the token lacks the required scope — re-runkeylight login", but argument parsing exited2as well, so a mistyped flag was
indistinguishable from an auth failure. An unattended caller following the
documented table would log in, retry the same broken command, and loop.2
now means only what it says.--helpand--versionstill exit0.This aligns the implementation with the published exit-code table rather than
changing that table. A script keying on observed behaviour rather than the
documented meaning may need adjusting.
Notes
Each fix is behind a small pure function with tests against real response
bodies captured from api.keylight.dev. The previous tests asserted the same
assumed shapes the code used, which is why all three renderer bugs passed a
green suite.