You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Upstream Model Probe: Gateway profiles now support model-list discovery and single-model availability probes against the upstream (persisted, capped at 200 models); probe requests bypass the forwarder so they never count toward usage or trip the circuit breaker
Changed
Gateway & Proxy URL Shortening: Gateway profile ids use short random ids (p + 6 hex), handle ids are unified to 8-hex, and proxy URLs use the /umg/<tool>/s/<id> format — old gateway-<hex>-<hex> and legacy URL formats remain parseable and route correctly
SSE Parser Consolidation: The three duplicated SSE streaming loops now share one SseEventReader driver in sse.rs
Reasoning Token Semantics: opencode / hermes token accounting now uniformly folds reasoning into output tokens with a single merge point
Fixed
Gateway Double-Counting: Gateway records now reconcile with local session scans by message id, so the same physical request no longer produces two usage facts
Codex Proxy Double-Counting: Gateway Codex records now join the fuzzy-matching pool, eliminating duplicate usage facts when the same request appears both via the gateway and in local Codex scans
Streaming Idle Timeout: Streaming responses are now reaped after 300s of upstream silence (configurable, explicit 0 still disables), preventing leaked connections
Legacy Idle Timeout Migration: Existing users whose settings defaulted to a 0s idle timeout are migrated to 300s (settingsVersion 3, persisted so the migration applies once across all load paths)
Request Body Stall Timeout: read_body_limited now enforces a 60s per-chunk idle timeout (408), preventing requests that stall after declaring a Content-Length from hanging the upstream
Gateway Protocol Mismatch: Requests whose body does not match the profile's protocol now get a clear 400 instead of an opaque upstream error
Startup DB Concurrency: Proxy startup database initialization is serialized to avoid concurrent-init races