Changelog
Features
- 2d88248 feat(audio): add GET /v1/audio/voices for voice discovery (#1491)
- 1da2387 feat(authkeys): make the managed key prefix configurable (#1490)
- d425dc4 feat(authkeys): rename managed keys and tell same-name keys apart (#1489)
- 39666ed feat(bedrock): accept Bedrock API keys and tidy provider options in the dashboard (#1403)
- d684d16 feat(config): export the effective configuration with gomodel config export (#1304)
- ec85169 feat(dashboard): hide inactive API keys and stale user paths in the usage filters (#1488)
- 8b832b4 feat(dashboard): label the target columns in the virtual model editor (#1501)
- 6d65163 feat(dashboard): view every MCP tool across all servers in one list (#1267)
- dd698ee feat(mcp): export the cross-server tool catalog as JSON or CSV (#1406)
- ae211a1 feat(metrics): export token usage and cost, with opt-in caller dimensions (#1407)
- e0348f6 feat(openai): list built-in voices for OpenAI speech models (#1493)
- dff270d feat(providers): add Mistral AI provider with thinking chunk normalization (#1390)
- 89dff19 feat(usage): benchmark monthly cost per active user of a group (#1409)
- 214d454 feat(virtualmodels): set reasoning effort per target (#1497)
Bug Fixes
- d928c75 fix(audio): accept a custom voice object on /v1/audio/speech (#1494)
- 81e595f fix(auditlog): change the audit schema on one replica at a time (#1499)
- d2b5606 fix(auditlog): redact credential-looking headers and signed URL parameters (#1426)
- 52b2b79 fix(config): keep virtual model params in config export (#1479)
- 9f36396 fix(dashboard): serve static assets with the dashboard security headers and no directory index (#1435)
- b934cb7 fix(deps): update golang.org/x/crypto to v0.59.0 (#1483)
- 71a4be4 fix(gemini): count thinking tokens on the OpenAI-compatible path (#1498)
- 66c7947 fix(helm): mount a writable /tmp so SQLite audit batches are stored
- abaac3e fix(hetzner): use /v1 default base URL (#1404)
- 5a2d981 fix(mongodb): save guardrails and workflows on a standalone MongoDB server (#1458)
- 41e7a73 fix(passthrough): reject encoded path separators and dots in endpoints (#1438)
- 6909147 fix(providers): close Claude 5 and Gemini 4 compatibility gaps (#1495)
- 7bcb8a7 fix(server): send HSTS when serving native TLS (#1482)
- b4a4896 fix(storage): stop locking PostgreSQL tables at startup for columns that already exist (#1447)
- 2ac3d55 fix(vertex): limit host Google credentials to Vertex AI endpoints for saved providers (#1492)
- c7a2c6f fix: close the round-15 pre-release findings (#1391)
Performance
- 33457ce perf(dashboard): serve static assets gzip-compressed (#1443)
- 95fdf44 perf(live): cut per-request allocations in the live log broker (#1368)
- fd62a7f perf(mistral): adapt requests on the typed path and drop fields Mistral rejects (#1395)
- 53bc180 perf(server): prefilter stream chunks before the completion guard parses them (#1371)
- a0e9fd7 perf(storage): keep SQLite planner statistics fresh and tune its cache (#1364)
Full Changelog: v0.2.3...v0.2.4