v0.7.93
What's Changed
- refactor(router): size images from their header bytes, not javax.imageio (ec2c1d4)
- fix(llm): key the prefix cache per conversation and log the cache outcome (4fd5a0f)
- release: update version files for v0.7.91, bump to next dev version (727faa2)
- refactor(failure): centralize retry and fallback policy (88e55af)
- release: update version files for v0.7.90, bump to next dev version (5366103)
- fix(failure): do not retry expired credentials (8f2ac9b)
- release: update version files for v0.7.89, bump to next dev version (840e406)
- fix(llm): self-heal gateway-injected strict/additionalProperties in tool schemas (fe3318c)
- fix(llm): name the tool behind a gateway-injected strict/additionalProperties rejection (b84dc40)
- refactor(failure): own the stateless-item retry policy in failure, not llm (4787d33)
- release: update version files for v0.7.88, bump to next dev version (92f4e1d)
- release: update version files for v0.7.87, bump to next dev version (cc70136)
- feat(responses): stateless replay for gateways that cannot resolve server-minted item ids (33d865e)
- release: update version files for v0.7.86, bump to next dev version (d5a5228)
- fix(failure): treat every quota/credit/budget wall as a hard error (55b39e4)
- release: update version files for v0.7.85, bump to next dev version (4b73dd6)
- feat(failure): consolidate all transport/provider failure handling into internal.failure (c9e9ac9)
- release: update version files for v0.7.84, bump to next dev version (65c800a)
- feat: refresh current GitHub Copilot models (312ef69)
- Trim repository agent guidance (3cf349b)
- Streamline agent guidance (bfa9898)
- release: update version files for v0.7.83, bump to next dev version (c377de5)
- fix(llm): normalize restored canonical content blocks (2195bdd)
- release: update version files for v0.7.82, bump to next dev version (b08cb10)
- fix: normalize context overflow and Codex requests (c66bf08)
- release: update version files for v0.7.81, bump to next dev version (a8d68d5)
- fix(router): fail over revoked provider credentials (2b26495)
- release: update version files for v0.7.80, bump to next dev version (15e143e)
- fix(router): fall back after stream watchdog timeouts (f67de4b)
- release: update version files for v0.7.79, bump to next dev version (6c60563)
- Merge remote-tracking branch 'origin/main' (3c07fa6)
- fix(streaming): enforce Responses semantic timeout (eba1004)
- release: update version files for v0.7.78, bump to next dev version (f08e5b1)
- fix(streaming): disable the semantic watchdog on the Responses api-style (b18e502)
- release: update version files for v0.7.77, bump to next dev version (37897a6)
- feat(router): add claude-opus-5, prefer it over opus-4-8; refresh models.dev (836f4f1)
- release: update version files for v0.7.76, bump to next dev version (24fc5bd)
- perf(streaming): replace per-request watchdog threads with one shared scheduler (9bbd5f2)
- release: update version files for v0.7.75, bump to next dev version (9550358)
- fix(streaming): identify native calls before argument deltas (593426a)
- release: update version files for v0.7.74, bump to next dev version (6e2f4ad)
- fix(router): remove synthetic RPM and TPM gates (a3b502d)
- release: update version files for v0.7.73, bump to next dev version (34d21a0)
- fix(llm): retry JDK-25 message-less ConnectException only for proven-healthy hosts (17d5dfd)
- release: update version files for v0.7.72, bump to next dev version (20f30be)
- test(llm): cover mid-stream 529/overloaded retry guard (bd70773)
- release: update version files for v0.7.71, bump to next dev version (788a22f)
- fix(llm): gate status/message retries on stream-output-started? (21f9c3e)
- release: update version files for v0.7.70, bump to next dev version (1e80ba0)
- fix(router,llm): retry statusless/wrapper/gRPC transient errors by message text (6f16fa8)
- release: update version files for v0.7.69, bump to next dev version (081607c)
- fix(llm): map mid-stream SSE error :type + opencode/anthropic codes to transient status (e0445bd)
- release: update version files for v0.7.68, bump to next dev version (ac4a70e)
- fix(router,llm): retry all transient errors same-provider, not just 429; align classifier with pi (5cc4d41)
- release: update version files for v0.7.67, bump to next dev version (9da0f89)
- feat(router): derive :vision from models.dev image modality; refresh catalog (ddd7cb1)
- release: update version files for v0.7.66, bump to next dev version (36d3a38)
- chore(test): bump lazytest 1.9.1 -> 2.0.0 (c6cc024)
- fix(llm): surface provider stream failures and separate reasoning summaries across items (1fe62ba)
- release: update version files for v0.7.65, bump to next dev version (aed0222)
- fix(tools): name rejected tool schemas (81d9c50)
- release: update version files for v0.7.64, bump to next dev version (b388c55)
- test(llm): verify large tool argument fidelity (67e4a80)
- fix(llm): restore Graal-safe resend math (eade579)
- release: update version files for v0.7.63, bump to next dev version (3485597)
- feat(llm): transparently re-send empty replies to the same model (b815980)
- release: update version files for v0.7.62, bump to next dev version (d7e85d3)
- fix(llm): treat Responses-API "completed" status as clean stop in empty-reply-anomaly-type (9788c65)
- release: update version files for v0.7.61, bump to next dev version (196545a)
- feat(reasoning): add provider-native effort routing (ec04139)
- release: update version files for v0.7.60, bump to next dev version (587a02e)
- refactor(router): slim anthropic/zai overlays to catalog deltas + refresh models.dev (a169930)
- release: update version files for v0.7.59, bump to next dev version (63879af)
- feat(router,ratelimit): catalog gpt-5.6-terra + surface provider quota-reset clock (d2cb706)
- release: update version files for v0.7.58, bump to next dev version (72ab83f)
- fix(llm): catch raw InterruptedException on pre-headers stream path (fafb403)
- release: update version files for v0.7.57, bump to next dev version (2a179c2)
- fix(llm): never retry svar's own watchdog/cancel stream aborts (ab48768)
- release: update version files for v0.7.56, bump to next dev version (2a81b5a)
- feat(router): surface claude-fable-5 + add gpt-5.6-sol (openai-codex) (8a473d8)
- feat(router): add claude-sonnet-5 (anthropic wire) + refresh models.dev catalog (b89b031)
- fix(llm) drops unreplayable gh copilot gpt ids (db88608)
- release: update version files for v0.7.55, bump to next dev version (825d5da)
- fix(router): surface single-provider failure as :provider-unavailable, not fleet exhaustion (88d51d4)
- release: update version files for v0.7.54, bump to next dev version (ed11104)
- fix(llm): drop hallucinated sdk-cli billing headers on Claude OAuth path (f9ec05c)
- release: update version files for v0.7.53, bump to next dev version (be71418)
- fix(llm): bump claude-cli-version to 2.1.202 for accurate billing attribution (d23fc81)
- release: update version files for v0.7.52, bump to next dev version (280dc2f)
- fix: OpenAI Responses id<=64, zai native anthropic wire (drop XML), Claude OAuth billing attribution (244caaa)
- release: update version files for v0.7.51, bump to next dev version (127053b)
- fix(llm): clamp decoded OpenAI Responses reasoning item ids to <=64 chars (8121636)
- release: update version files for v0.7.49, bump to next dev version (f29b499)
- release: update changelog and VERSION for v0.7.49 (f1dfac2)
- fix(mistral): strip per-message :model and fill curated default models (1650382)
- release: update version files for v0.7.48, bump to next dev version (3998360)
- fix(llm): retry pre-response "received no bytes" socket drops (5310e7d)
- release: update version files for v0.7.47, bump to next dev version (ce03cf7)
- Update changelog for Mistral provider (cb5be92)
- Add Mistral provider (5e7cb52)
- release: update version files for v0.7.46, bump to next dev version (d6a5e1f)
- fix(llm): translate canonical image_url blocks to native image on anthropic wire (f2a0c04)
- chore(lint): clear baseline lint, boxed math, and dead test helpers (fdab2d0)
- docs(readme): document native tool-calling ask-code!, drop deleted fence API (7439423)
- fix(spec): canonicalize keyword enum values in validate-data (cbaf089)
- release: update version files for v0.7.45, bump to next dev version (d1e8bde)
- feat(router): attach per-provider :attempts to all-providers-exhausted (074560e)
- release: update version files for v0.7.44, bump to next dev version (0dd6032)
- fix(llm): a clean end_turn/stop with empty text is a legit completion, not an error (3df3216)
- fix(gemini): tool-result uses {output}/{error} per Gemini 3 contract (606361f)
- release: update version files for v0.7.42, bump to next dev version (3b7e795)
- fix(tools): pi-faithful tool-call handling — orphans, is_error, id-norm, Responses composite ids (55de227)
- fix(replay): guard cross-model reasoning replay + skip aborted turns (match pi) (a1a2b83)
- release: update version files for v0.7.41, bump to next dev version (1a2ed87)
- release: update version files for v0.7.40, bump to next dev version (bad7321)
- feat(streaming): surface tool-call argument deltas as :tool-input (live code) (977df77)
- release: update version files for v0.7.39, bump to next dev version (4551f3a)
- release: update version files for v0.7.38, bump to next dev version (4d791b9)
- fix(responses): tag input message items with :type "message" (Codex 400) (bbb8419)
- release: update version files for v0.7.36, bump to next dev version (8c8a9d1)
- fix(router): tolerant dotted/dashed model lookup (fixes Claude-on-Copilot 404) (ac5c931)
- test: blank env vars must gate live tests OFF (not run against empty key) (8a7940b)
- test(router): fix stale anthropic-coding-plan default-model expectation (bf5d341)
- release: update version files for v0.7.35, bump to next dev version (049adbb)
- feat(reasoning): glm-5.2 :quick disables thinking (no light effort rung) (66885c0)
- release: update version files for v0.7.33, bump to next dev version (ba8000e)
- fix: ship version at namespaced svar/VERSION (avoid classpath VERSION collision) (3d6e62b)
- release: update version files for v0.7.32, bump to next dev version (21ace0a)
- refactor: remove dead fence machinery (Java + code-tail-pointer) (74a6555)
- feat(tools): native tool calling across all wires; remove ask-code! fences (639d31e)
- feat(router): GLM-5.2 reasoning effort + provider defaults single-source (8499153)
- release: update version files for v0.7.31, bump to next dev version (bbec515)
- release: update version files for v0.7.30, bump to next dev version (8760db5)
- fix(copilot): route Claude through native Anthropic /v1/messages (2f541de)
- release: update version files for v0.7.29, bump to next dev version (5793216)
- fix(responses): make response.incomplete a retryable hard error (Codex-consistent) (0e6d2f7)
- release: update version files for v0.7.28, bump to next dev version (a418522)
- fix(responses): soft-finish incomplete-with-content; Ollama/LM Studio → Anthropic wire (44f26f1)
- release: update version files for v0.7.27, bump to next dev version (ecfc908)
- fix(codes): lenient-block extracts fenced code (drops prose) instead of running it verbatim (f0ef27a)
- release: update version files for v0.7.26, bump to next dev version (6b94d34)
- feat(copilot): apply Copilot auth/headers to ALL github-copilot* ids, every wire (b7780c8)
- release: update version files for v0.7.25, bump to next dev version (975428d)
- fix(router): reasoning body must match the WIRE, not just the model (7d6865a)
- release: update version files for v0.7.23, bump to next dev version (8881224)
- feat(router): GLM → Anthropic wire (anthropic-thinking + bounded output) (c1babd7)
- test(llm-cancel): fix stale/flaky cancel-watchdog test to match either-or levers (9669b95)
- fix(llm): surface non-SSE response bodies instead of "Stream ended before terminal marker" (36266a7)
- release: update version files for v0.7.22, bump to next dev version (5b1ddcc)
- fix(llm): self-heal the shared HttpClient (selector manager closed) (5c5aa96)
- release: update version files for v0.7.21, bump to next dev version (cfeb266)
- fix(router): clamp GLM-5 output to 131072 (:output-limit) — was 400ing (2612a13)
- release: update version files for v0.7.20, bump to next dev version (42be1f6)
- chore(models): refresh models.dev snapshot — adds glm-5.2 (1M ctx) (cc4b661)
- feat(llm): caller-driven streaming cancellation via cancel-fn (056bccb)
- release: update version files for v0.7.19, bump to next dev version (9b92cee)
- release: update version files for v0.7.18, bump to next dev version (e817e4b)
- fix(router): glm-5.2 context is 1M, not 200k (4c7bb4f)
- release: update version files for v0.7.17, bump to next dev version (8351f6c)
- feat(router): add z.ai glm-5.2 (mirrors glm-5.1 pricing/context) (505d88f)
- release: update version files for v0.7.16, bump to next dev version (2c4765d)
- Revert "fix(llm): lenient reminder forbids transcript fabrication" (7c8b7a6)
- release: update version files for v0.7.15, bump to next dev version (20cc30c)
- fix(llm): lenient reminder forbids transcript fabrication (d54cdcb)
- release: update version files for v0.7.14, bump to next dev version (3885cc0)
- fix(llm): surface Anthropic stop_reason in stream finalization (ca3dfa7)
- release: update version files for v0.7.13, bump to next dev version (b63e313)
- fix(llm): reasoning_content echo never leaks foreign thinking signatures (16fafa3)
- release: update version files for v0.7.12, bump to next dev version (71fbca0)
- release: v0.7.12 (3b1d461)
- fix(test): swap gpt-5-mini for glm-5-turbo in live Blockether tests (476aa6c)
- feat(router): add Claude Fable 5 + Mythos 5, fix adaptive thinking predicate (cf25104)
- release: update version files for v0.7.11, bump to next dev version (0e1e313)
- fix(llm): lenient reminder warns against non-ASCII punctuation in code (c7cd20a)
- release: update version files for v0.7.10, bump to next dev version (28c7906)
- fix(llm): lenient ask-code reminder is pure-code, drops fence talk (f7b3d6a)
- release: update version files for v0.7.9, bump to next dev version (905894a)
- fix(llm): reassemble multi-part assistant message body verbatim (5d28132)
- release: update version files for v0.7.8, bump to next dev version (ce368b0)
- fix(llm): wrap connect-phase failures with a provider-aware message (d934958)
- chore(ci): bump GitHub Actions to Node 24 runtimes (f833290)
- release: update version files for v0.7.7, bump to next dev version (c426875)
- feat(ask-code): add :lenient mode — whole reply IS the code, no fence required (84fcac6)
- release: update version files for v0.7.6, bump to next dev version (55e6bf0)
- fix(llm): retry transient OS/network connection errors (cb49514)
- release: update version files for v0.7.5, bump to next dev version (5c1e373)
- fix(llm): pin streaming POST to the HTTP/1.1 shared client (d0c56c9)
- release: update version files for v0.7.4, bump to next dev version (0df9c39)
- fix(router): reasoning is a hint for explicit selection, not a hard gate (b68e939)
- release: update version files for v0.7.3, bump to next dev version (bd5d7d0)
- fix(router): route detected :context into the pre-flight context-overflow check (4bac4eb)
- release: update version files for v0.7.2, bump to next dev version (812b6f7)
- feat(router): LM Studio context auto-detection via native /api/v0/models (8a7f1e2)
- release: update version files for v0.7.1, bump to next dev version (bbdd918)
- fix(graal): remove boxed math warnings (8218a67)
- fix(anthropic): drop empty text content blocks in wire serializer (83d1188)
- feat(router): :prefer-providers — declarative ordered provider preference (34883ca)
- feat(router): per-model 400 model_unsupported fallback + provider-pinned optimize (7791f90)
- Exclude unsupported Grok Copilot model (603090c)
- docs: skip deps.edn block in README doctest; show correct unquoted coordinate (0b773a6)
- docs: clarify deps.edn quote is a README-doctest artifact, not for real deps.edn (afa5dea)
- release: update version files for v0.7.0, bump to next dev version (84a5b49)
Full Changelog: v0.7.93...v0.7.93