Changelog
Features
- 3ee7b2f feat(budget): enforce budgets on billed cost (#1292)
- ae9f7ec feat(budget): make billed cache hits in provider budgets configurable (#1305)
- ac58a5d feat(clustersync): propagate admin config changes across replicas via the shared database (#1295)
- ef0f408 feat(dashboard): add column visibility toggle to audit logs (#1288)
- a5f6cce feat(ext): add a shared store for extensions (#1297)
- 51f58e5 feat(ext): let request rewriters call models through the gateway (#1299)
- 1a61c68 feat(pricing): per-customer markups by user path (#1291)
- dc94328 feat(sglang): route tool calls through chat completions with api_mode (#1294)
- 837f1e5 feat(usage): export billed usage as per-customer invoices (#1293)
- 70ebd13 feat(usage): filter usage by several values and break it down by two dimensions (#1282)
- b429507 feat(usage): report billed cost in daily, endpoint, and session usage (#1289)
- 95c66f1 feat(virtualmodels): per-model and per-virtual-model reasoning effort override (#1274)
Bug Fixes
- 0c732e7 fix(budget): keep the stored billed basis while billed budgets are unavailable (#1307)
- d612622 fix(cache): keep the Redis password out of invalid URL errors (#1312)
- e42e3b9 fix(cache): preserve Redis TLS through the egress dialer (#1311)
- 7431bd8 fix(gemini): handle parallel tool calls in native chat translation (#1283)
- ab7481b fix(gemini): honor flat reasoning_effort on the native API (#1306)
- 6096b76 fix(reasoning): turn reasoning off for effort none on DeepSeek and Anthropic (#1298)
Full Changelog: v0.1.108...v0.1.109