1. 10 Jul, 2026 10 commits
  2. 09 Jul, 2026 5 commits
  3. 08 Jul, 2026 5 commits
  4. 07 Jul, 2026 16 commits
  5. 06 Jul, 2026 4 commits
    • fix(billing): extend quantity validation and saturating conversions to remaining paths · c9943d37
      Bound max-tokens fields across all relay format validators, saturate
      tiered-expression rounding and audio/tool/task token conversions, and
      route legacy remix ratios through the guarded setter.
      CaIon committed
    • fix(billing): validate quantity parameters and harden quota calculations · d0bd8aac
      Bound user-supplied count/duration parameters at request validation,
      route ratio multipliers through guarded setters, and use saturating
      int conversions in all quota math paths.
      CaIon committed
    • Fix/build date dns error (#5945) · 45f0484d
      * Revert "fix(classic): fix classic web build failures"
      
      This reverts commit 997926bb.
      
      * fix(classic): use available Slack icon export
      Seefs committed
    • fix: avoid stale stream writes after client disconnect (#5710) · 153d7f01
      * fix: avoid stale stream writes after client disconnect
      
      * fix: wait for stream ping goroutines before returning
      
      * fix: log stream results after goroutine cleanup
      
      * fix: broadcast stream stop signals
      
      * fix: abort upstream on client disconnect and restore write error contracts
      
      Keep the goroutine-lifecycle fix (unconditional wg.Wait before returning the
      gin.Context, close resp.Body inside cleanup), but drop the drain-on-disconnect
      behavior: when the client goes away, cleanup now runs immediately so the
      upstream body is closed, the provider stops generating, and users are not
      billed for tokens produced after they disconnected.
      
      Also restore FlushWriter/StringData/PingData returning an error when the
      request context is done, so non-scanner relay loops (ollama, fake-stream,
      audio, image) keep their disconnect awareness instead of silently consuming
      the upstream to completion. ResponseChunkData now propagates write errors.
      
      Add a bounded per-write deadline (http.NewResponseController) before each
      locked stream write so a slow-but-connected client cannot block a write
      forever and hang the unconditional wg.Wait.
      
      ---------
      
      Co-authored-by: CaIon <i@caion.me>
      Seefs committed