Skip to content

v2.21.0

Latest

Choose a tag to compare

@schmitech schmitech released this 28 Oct 11:12
· 5 commits to main since this release

[2.21.0] - 2026-10-28

Core Features

  • Follow-up query rewriting: SQL/HTTP intent adapters can rewrite follow-up questions using the previous turn's query and parameters. Opt in with supports_followup_rewrite: true; compatible with intent clarification. Enabled on seven example adapters. See docs/sql-retriever-architecture.md.
  • Cheaper Inference provider: Added the OpenAI-compatible cheaperinference provider, disabled by default. Configure it in config/inference.yaml with CHEAPERINFERENCE_API_KEY.

Maintenance

  • Shared prompt parsing: Consolidated message parsing across 11 OpenAI-compatible inference providers into a shared helper, with no behavior change.
  • API-key admin panel reads id only: The admin panel's API-key tab now reads the canonical id field exclusively instead of the legacy _id field the list/detail endpoints also send, normalizing it once where responses are loaded.
  • Dropped the legacy _id field from API-key list/detail responses: GET /admin/api-keys and GET /admin/api-keys/{id}/detail now return id only, completing docs/roadmap/api-keys-drop-legacy-id-field.md. The admin panel already reads id exclusively (previous entry); its normalizeKeyRecord() still tolerates a legacy _id from an older server as a transition fallback, with no functional effect now that the backend no longer sends it.

Bug Fixes

  • New API-key controls: Create responses now include the record ID, fixing Test Key, Rename, quota, renew, and deactivate/delete actions immediately after creation.
  • API-key prompt validation: Key creation now returns 404 when the supplied system prompt does not exist.
  • Dark-mode toast: Fixed the unreadable icon background in the Test Key success toast.