Skip to content

v0.15.119

Choose a tag to compare

@github-actions github-actions released this 07 Nov 22:39
· 259 commits to master since this release
f926d34

0.15.119 (2026-11-07)

Features

  • language: a transcript translator on generateText and a per-participant LiveKit translation output (1a81996)

Bug Fixes

  • hearing: a send or a replay from inside encode waits for the line being encoded, as a write does (8e866e6)
  • hearing: a translation write whose encode throws rejects its promise instead of throwing at the caller (5fd9ddb)
  • hearing: a write from inside encode waits for the line being encoded, so the ledger holds finished lines alone and sends keep number order (d84dda3)
  • hearing: give the encode option a copy of the line, so an encode that changes its argument changes no send or replay (807b866)
  • hearing: keep a line before its encode runs, so a write made from inside encode takes the next number (1088abe)
  • language: a Chinese code's region names its script for the same-language skip, so a zh-CN line is translated for a zh-TW reader (4c08b9d)
  • language: a lost success body keeps its 200 on the failure, and a result names the model the call sends (4d49725)
  • language: a retried failed Responses result's tokens reach the answer or the error the call ends with; a timeout's error carries earlier attempts' tokens and is recorded at the bound; what encode asks for runs before the write that encodes returns, in the order asked (89f570e)
  • language: a timeout's error counts the attempts that went unanswered before it, and a line written to nobody is numbered and kept for its replay (6f0095e)
  • language: compare a line's source with the target without case or region, and read a status send's topic when it is called (62ebf55)
  • language: count an attempt whose success status came and whose body was lost as unanswered, so its possible bill is recorded at the bound (3e3a48e)
  • language: count the tokens a retried error reported in the call's usage, and run a reasoning model at effort low with 1,024 tokens of room under its cap (3b14790)
  • language: end a translation at its timeout while the provider starts, record unanswered attempts and a failed call's usage, refuse a filtered answer, and copy a write when it is made (750c2b3)
  • language: read an answer that reported no usage as no report, so its call is recorded at the bound (f0c8b64)
  • language: read the model in the bound as the call reads it, so a prefixed model is priced and another provider's is refused (263ae3f)
  • language: refuse a maxAttempts that is not a whole number of 1 or more in boundMicro and before translateLine sends anything (4814f2e)
  • language: refuse a maxContextLines that is not a whole number of 0 or more in boundMicro and before translateLine sends anything; a fraction sent and priced every earlier line (00f64c7)
  • language: refuse a timeoutMs setTimeout cannot keep (below 1, above 2,147,483,647, Infinity or NaN) in boundMicro and before translateLine sends anything; Node ran it after 1 ms, so every line ended as a timeout at its bound (4af0c60)
  • language: round the bound up from the dollars, and let usage on an HTTP failure leave an earlier lost success body counted (cf1d643)
  • openai: a response marked failed throws as its stream does, and an incomplete one with no known reason finishes as length (e01775e)
  • providers: a body-throttled retry takes the key the pool draws next, the soonest-resting one when every key rests; an answer with no output items after a retried failed Responses result carries both requests' usage in the provider's form (5356610)
  • providers: price a retried failed Responses result as its own request before adding it; a body-level rate_limit_exceeded rests its pooled key and the retry goes out on the next key (c3284f1)
  • providers: send a Responses result marked failed with a retryable code again while the call has attempts left (ae78c6d)