kkeyroost

Reference · Migration

Migration notes

Breaking changes by release, with the exact before → after for scripts and library consumers. Newest first; each release's notes link back here.

v0.7.5

CLI: the global device selector is now --device

The global flag that selects a key by its friendly name was renamed:

keyroostctl --name mykey fido info      # ≤ 0.7.4
keyroostctl --device mykey fido info    # 0.7.5+

--name collided with the --name option of the fingerprint subcommands (fido fingerprint-enroll / fingerprint-rename), where it names the fingerprint. No compatibility alias is provided — an alias would recreate the exact collision the rename fixes.

Watch out

Under the fingerprint subcommands, --name still parses — it means the fingerprint's label, not the device. A script that passes the old global spelling there won't error; it will name the fingerprint instead. Everywhere else the old spelling fails loudly with an "unexpected argument" error.

OATH: partial listings are now reported

oath list prints a stderr warning when the key holds entries that could not be decoded (written by another tool, or with a non-UTF-8 name) — previously they were silently omitted. The stdout / --json output format is unchanged, so scripts that only read stdout are unaffected.

Library (crates.io) API changes

For consumers of the published crates — CLI and GUI users are unaffected.

CrateChange
keyroost-oath parse_list returns Listing { credentials, skipped } instead of Vec<CredentialInfo>; skipped > 0 means the listing is partial.
keyroost-transport OathSession::list returns oath::Listing; TransportError::AuthFailed.tries_remaining is now Option<u8> (None = the card gave no count — don't render it as 0).
keyroost-piv pad_pin (and the VERIFY / CHANGE / UNBLOCK builders using it) asserts a 6–8 byte PIN instead of silently truncating longer input. Validate length before calling, as the in-tree transport does.
keyroost-ctap The CtapTransport trait gains read_timeout() (a default impl is provided, so existing implementations keep compiling). reset() and the bio-enroll operations now restore the caller's timeout rather than the crate default.

v0.6.0 — command names moved under molto / fido

The Molto2 and FIDO commands were nested under molto and fido groups. The old flat names were removed — update scripts as follows:

Old (≤ 0.5.x)New (0.6.0+)
keyroostctl infokeyroostctl molto info
keyroostctl set-seed …keyroostctl molto seed …
keyroostctl set-title …keyroostctl molto title …
keyroostctl configure …keyroostctl molto config …
keyroostctl sync-time …keyroostctl molto sync-time …
keyroostctl set-customer-key …keyroostctl molto customer-key …
keyroostctl import …keyroostctl molto import …
keyroostctl import-file …keyroostctl molto import-file …
keyroostctl factory-reset …keyroostctl molto reset …
keyroostctl fido-infokeyroostctl fido info
keyroostctl fido-reset …keyroostctl fido reset …
keyroostctl fido-pin-set …keyroostctl fido pin-set …
keyroostctl fido-pin-change …keyroostctl fido pin-change …
keyroostctl fido-pin-retrieskeyroostctl fido pin-retries
keyroostctl fido-creds-list …keyroostctl fido creds-list …
keyroostctl fido-creds-metadata …keyroostctl fido creds-metadata …
keyroostctl fido-creds-delete …keyroostctl fido creds-delete …
keyroostctl manpage > x.1keyroostctl manpage ./man

The customer-key flags (--key, --key-ascii, --key-env, --key-ascii-env) moved under molto — e.g. keyroostctl molto customer-key --key-env K. The piv, oath, openpgp, otp, key-name, list, doctor, and completions commands were unchanged.

Related