New features:
llm logs --usageMarkdown output now includes the response duration in milliseconds and as a human-readable duration.llm logs --shortincludes a newduration_msfield. #1653
Bug fixes:
- Significantly improved the performance of
llm logsfor long conversations by caching repeated message and model lookups. #1654 - Dynamically generated OpenAI options classes are now cached, avoiding repeated Pydantic class construction by plugins such as
llm-openrouter. Thanks, waveplate. #1651 - Invalid schema DSL passed to
llm prompt --schemanow produces a clean command-line error instead of a Python traceback. Thanks, ikatyal2110. #1647 llm --extractnow recognizes fenced code blocks in responses that use CRLF line endings. Thanks, mameikagou. #1644monotonic_ulid()now remains monotonic if the system clock moves backwards or concurrent calls observe timestamps out of order. Thanks, Dylan Pulver. #1641- Declared the
typing-extensionspackage as a direct dependency, and added tests to protect against accidental missing dependencies. Thanks, Vansh Taneja. #1622