From eb5ebe8824f232f0a4fa3e18d65dcd729eaff23f Mon Sep 17 00:00:00 2001 From: akshaydeo Date: Wed, 20 May 2026 18:10:21 +0530 Subject: [PATCH] changelog --- .claude/skills/release-checklist/SKILL.md | 193 ++++++++++++++++++++++ core/changelog.md | 38 ++++- core/version | 2 +- framework/changelog.md | 27 +++ framework/version | 2 +- plugins/compat/changelog.md | 2 + plugins/compat/version | 2 +- plugins/governance/changelog.md | 7 + plugins/governance/version | 2 +- plugins/jsonparser/changelog.md | 2 + plugins/jsonparser/version | 2 +- plugins/logging/changelog.md | 5 + plugins/logging/version | 2 +- plugins/maxim/changelog.md | 2 + plugins/maxim/version | 2 +- plugins/mocker/changelog.md | 2 + plugins/mocker/version | 2 +- plugins/otel/changelog.md | 3 + plugins/otel/version | 2 +- plugins/prompts/changelog.md | 2 + plugins/prompts/version | 2 +- plugins/semanticcache/changelog.md | 6 + plugins/semanticcache/version | 2 +- plugins/telemetry/changelog.md | 2 + plugins/telemetry/version | 2 +- transports/changelog.md | 42 ++++- transports/version | 2 +- 27 files changed, 343 insertions(+), 16 deletions(-) create mode 100644 .claude/skills/release-checklist/SKILL.md diff --git a/.claude/skills/release-checklist/SKILL.md b/.claude/skills/release-checklist/SKILL.md new file mode 100644 index 00000000000..2390dcdfc44 --- /dev/null +++ b/.claude/skills/release-checklist/SKILL.md @@ -0,0 +1,193 @@ +--- +name: release-checklist +description: Pre-release safety audit for the Bifrost repo. Scans database migrations changed in a release for high-scale deadlock / lock-contention risks and for work that blocks application boot time, then produces a pass/warn/fail report with a concrete remediation plan. Invoked with /release-checklist [git-ref-range]. Built to grow - new checks are appended to the Checks Registry. +allowed-tools: Read, Grep, Glob, Bash, Task, AskUserQuestion +--- + +# Release Checklist + +A pre-release safety audit. Given a set of changes destined for release, run every +check in the **Checks Registry** below and produce one consolidated report. This skill +is **read-only**: it diagnoses, recommends a concrete fix for every finding, and never edits files. Applying a fix is a +separate, explicitly-approved step. + +The registry currently holds two migration-safety checks. It is designed to grow - see +[Adding a New Check](#adding-a-new-check). + +## Scope: what "the release" means + +Determine the change set to audit, in this order: + +1. If the user passed a git ref or range (e.g. `/release-checklist v1.4.0..HEAD` or + `/release-checklist origin/dev`), use it. +2. Otherwise default to everything not yet on the main branch: diff `origin/dev...HEAD` + (three-dot) and also include uncommitted working-tree changes. +3. If that range is empty, tell the user and ask for an explicit range. + +Gather the raw material once, up front: + +```bash +git fetch origin --quiet +git diff --stat origin/dev...HEAD +git diff origin/dev...HEAD -- '**/migrations.go' '**/matviews.go' +git status --porcelain +``` + +Migrations here are **Go-defined**, not `.sql` files. They live in: + +- `framework/configstore/migrations.go` - config DB (providers, keys, virtual keys, budgets) +- `framework/logstore/migrations.go` - log DB (request logs; the high-volume table) +- `framework/logstore/matviews.go` - materialized views over the log DB + +A release with **no diff in these files has no migration risk** - record both migration +checks as `PASS (no migrations changed)` and move on. + +## Migration system facts (needed by both checks) + +- **All migrations run synchronously at boot.** `triggerMigrations()` executes the full + ordered migration list during store init, before the process serves traffic. +- **Supported databases: PostgreSQL and SQLite only.** No MySQL. Lock behavior differs + sharply between the two - judge both. +- **Migrations are cluster-serialized** behind Postgres advisory lock `1000001` with a + 5-minute acquisition timeout. A slow migration on one pod stalls every other pod's boot. +- **Each migration func runs in a transaction by default** (`Options.UseTransaction = true`). + A transaction holds every lock until the func returns - migration duration *is* lock duration. +- **Established escape hatch for heavy work:** index builds and materialized views run in + post-startup background goroutines under separate advisory locks (`1000002` for indexes, + `1000005`/`1000006` for matviews) - see `framework/logstore/postgres.go`, + `ensurePerformanceIndexes()`, `ensureMatViews()`. `migrationAddProviderHistogramIndex` + is intentionally a near-no-op that defers the real `CREATE INDEX CONCURRENTLY` there. + This deferral pattern is the correct fix for anything heavy. + +--- + +## Checks Registry + +### Check 1 - Migrations that can deadlock or pile up under high-scale data + +**Goal:** catch migrations whose locking is safe on a laptop but catastrophic on a +production table with hundreds of millions of rows (notably the logstore request-log table). + +For every added/modified migration func in the diff, flag: + +| Signal | Why it is dangerous at scale | +|---|---| +| `CREATE INDEX` without `CONCURRENTLY` | `SHARE` lock for the whole build - all writes block for minutes/hours on a large table. | +| `CREATE INDEX CONCURRENTLY` with `UseTransaction = true` | Postgres forbids `CONCURRENTLY` in a transaction - runtime error. Needs `UseTransaction = false` or the background path. | +| `ALTER TABLE` (add/drop column, add constraint, change type) on a hot table | Takes `ACCESS EXCLUSIVE`; queues behind in-flight queries, then every new query queues behind it - a cluster-wide stall. | +| `ADD COLUMN` with a volatile / non-constant `DEFAULT` | Rewrites the whole table under `ACCESS EXCLUSIVE`. A constant default is metadata-only and fine on PG11+. | +| `ADD ... FOREIGN KEY` / `ADD CONSTRAINT` validated immediately | Locks both tables and scans the child. Prefer `NOT VALID` then a separate `VALIDATE CONSTRAINT`. | +| Bulk `UPDATE`/`DELETE`/backfill over the whole table in one transaction | Holds row locks until commit; collides with live writes; bloats the table. Must be batched. | +| Order-dependent backfill, or migrations locking tables A-then-B vs B-then-A | Classic deadlock: two transactions grab the same locks in opposite order. | +| SQLite drop-column path (`CREATE TABLE ... AS SELECT` + `DROP` + `RENAME`) on a large table | Full table copy under SQLite's single global write lock - blocks every writer. | + +**Report per flag:** func name, file:line, the exact signal, realistic production impact, +and a concrete remedy (add `CONCURRENTLY` + `UseTransaction = false`, batch the backfill, +defer to `ensurePerformanceIndexes`, add the FK as `NOT VALID`, etc.). + +**Severity:** `FAIL` if writes to a high-volume table (logstore logs) can be blocked or a +deadlock is plausible; `WARN` for config-DB tables (low row counts, but still flag). + +### Check 2 - Migrations that block boot-up time + +**Goal:** because `triggerMigrations()` runs synchronously before the process serves +traffic, any migration whose runtime grows with row count delays - or past the 5-minute +advisory-lock timeout, breaks - every pod's startup. + +Flag any added/modified migration whose cost scales with data volume: + +| Signal | Why it blocks boot | +|---|---| +| Any non-`CONCURRENTLY` `CREATE INDEX` | Build time scales with row count; runs inside boot. | +| `CREATE INDEX CONCURRENTLY` placed directly in `triggerMigrations` | Even concurrent builds take minutes/hours on big tables; belongs in the background goroutine path. | +| Table rewrite: volatile-default `ADD COLUMN`, type change, SQLite drop-column copy | Rewrites/copies every row during boot. | +| Data backfill loop / bulk `UPDATE` over an unbounded row set | Runtime = O(rows); unbounded backfills have no ceiling. | +| `matviews.go` - creating or fully refreshing a matview in the synchronous path | Matview build scans the base table; must use the `ensureMatViews()` background path. | +| Anything that could realistically exceed the 5-minute advisory-lock timeout | Other pods fail to acquire lock `1000001` and crash-loop. | + +**Expected safe pattern:** heavy work is a near-no-op migration; the real build runs +post-startup in a background goroutine. Compare each new heavy migration against +`migrationAddProviderHistogramIndex` - if it does the heavy lifting inline, that is the finding. + +**Report per flag:** func name, file:line, why runtime scales with data, risk at production +row counts, and the remedy (move to the background path / batch it / make the default constant). + +**Severity:** `FAIL` if the operation can plausibly exceed the 5-minute lock timeout on a +production-sized table; `WARN` otherwise. + +--- + +## Report format + +Output one consolidated report. Do not edit any files - this skill recommends +fixes, it does not apply them. + +``` +# Release Checklist - + +Audited: files changed, migration func(s) added/modified +Migration files touched: + +## Check 1 - High-scale deadlock / lock contention +Status: PASS | WARN | FAIL + + +## Check 2 - Boot-time-blocking migrations +Status: PASS | WARN | FAIL + + +## Remediation Plan + + +## Summary + + +``` + +### Remediation Plan table + +Collect every `WARN` and `FAIL` finding from all checks into one table - this is +the actionable outcome of the audit. If every check is `PASS`, drop the table and +write `No remediation needed - all checks passed.` instead. + +| # | Impacted migration (func @ file:line) | Check | Severity | Offending operation / query | Recommended change | +|---|---|---|---|---|---| + +- **Impacted migration** - the migration func and its `file:line`. +- **Offending operation / query** - the exact SQL or migrator call that triggers + the signal (e.g. `CREATE INDEX idx_logs_foo ON logs(foo)`), quoted verbatim or + tightly paraphrased. This is *what is wrong*. +- **Recommended change** - the precise fix: the corrected statement, the option to + flip (`UseTransaction = false`), or the path to move to (`ensurePerformanceIndexes`). + This is *what to do instead*. + +When a fix needs more than a table cell (multi-line SQL, a Go code change), keep +the table row short and add a `### Fix <#> - ` block below the table +with a before/after the reader can apply directly: + +``` +### Fix 1 - migrationAddFooIndex (framework/logstore/migrations.go:1234) +- // current - blocks all writes on logs for the whole build +- CREATE INDEX idx_logs_foo ON logs(foo) ++ // append to performanceIndexes; built CONCURRENTLY off the boot path ++ CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_logs_foo ON logs(foo) +Why: keeps the boot path O(1); the real build runs in ensurePerformanceIndexes. +``` + +Rules: overall is `DO NOT SHIP` if any check is `FAIL`, `SHIP WITH WARNINGS` if any +`WARN`, else `SHIP`. Always show every check even when it passes - a visible +`PASS (no migrations changed)` is a real result. Never silently drop a check, and +never drop the Remediation Plan when there is at least one WARN/FAIL. + +## Adding a new check + +This skill is meant to grow. To add a check: + +1. Add a `### Check N - ` subsection under **Checks Registry**, following Checks 1 + and 2: a one-line **Goal**, a **signal table**, a per-finding **report** instruction, + and a **severity** rule. +2. If it needs background facts, add them once under "Migration system facts" (or a new + facts heading) so they are stated once and reused. +3. Add the check's heading to the **Report format** template. Its `WARN`/`FAIL` findings + flow into the shared **Remediation Plan** table automatically - no per-check table needed. +4. Keep checks independent - one check failing must not stop the others from running. diff --git a/core/changelog.md b/core/changelog.md index 06c408aa46b..3c06299bf12 100644 --- a/core/changelog.md +++ b/core/changelog.md @@ -1,2 +1,36 @@ -[fix]: openai provider - add usage to completed event in responses to chat completions fallback [@kevinpdev](https://github.com/kevinpdev) -[feat]: use chat completions for openai custom providers that disable responses [@kevinpdev](https://github.com/kevinpdev) +- feat: temporary access tokens for scoped, time-limited API access (#3603) +- feat: MCP per-user OAuth flow refactor (#3565) +- feat: Bedrock Mantle inference engine support for `gpt-oss` models via OpenAI-compatible SSE endpoint (#3489) +- feat: Azure realtime provider with nested model normalization (#3334) +- feat: enrich realtime routing, logging, cost, and session tracking (#3335) +- feat: Bedrock system tools support (#3435) +- feat: service tier mappings for Gemini and Anthropic (#3554) +- feat: cluster-aware log metadata and per-node usage aggregation (#3590) +- feat: JSON-schema-spec compliant parameter schema (#3444) +- feat: direct access control (DAC) support (#3198) +- feat: use chat completions for OpenAI custom providers that disable responses (#3505) (thanks [@kevinpdev](https://github.com/kevinpdev)!) +- fix: fasthttp panic on malformed requests (#3595) +- fix: race condition on remote stream close during context cancel (#3591) +- fix: nil pointer deref in stream cancellations (#3582) +- fix: handle context cancel before read errors in streaming (#3522) +- fix: set idle stream timeouts in streaming requests (#3495) +- fix: VK and provider-key level pricing overrides for streaming (#3421) +- fix: set Anthropic beta headers on Vertex request headers (#3585) +- fix: forwarding of reasoning content when converting Responses to Chat (#3584) +- fix: preserve OpenAI responses stream metadata (#3528, #3530) (thanks [@etnperlong](https://github.com/etnperlong)!) +- fix: OpenAI provider - add usage to completed event in Responses-to-Chat-Completions fallback (#3519) (thanks [@kevinpdev](https://github.com/kevinpdev)!) +- fix: add `FullyRedacted()` for proxy passwords and `MarshalForStorage()` for `ProxyConfig` to prevent partial value leakage (#3445) +- fix: Bedrock Mantle fixes (#3566) +- fix: emit role chunk from Anthropic message start in chat stream (#3575) +- fix: Bedrock chat tool arguments (#3564) +- fix: Bedrock stop reason (#3506) +- fix: send missing Bedrock lifecycle events (#3527) +- fix: prefill message handling for Responses in Bedrock (#3517) +- fix: don't pass multipart request bodies in enrich error (#3524) +- fix: trim trailing whitespace for Anthropic and Bedrock Anthropic providers (#3496) +- fix: include Azure blob fields in batch responses (#3469) +- fix: max tokens and thinking budget value handling (#3498) +- fix: preserve Anthropic output schema refs (#3449) (thanks [@Javtor](https://github.com/Javtor)!) +- fix: remove `fallbacks` key from Gemini requests (#3464) +- fix: map `supports_response_schema` to `response_format`/`text` params and add Chat<->Responses format conversion (#3454) +- chore: dependency and AWS SDK security updates (#3461) diff --git a/core/version b/core/version index f0ed37967c0..df808199cd8 100644 --- a/core/version +++ b/core/version @@ -1 +1 @@ -1.5.10 +1.5.11 diff --git a/framework/changelog.md b/framework/changelog.md index e69de29bb2d..521aadb765b 100644 --- a/framework/changelog.md +++ b/framework/changelog.md @@ -0,0 +1,27 @@ +- feat: temporary access tokens (#3603) +- feat: MCP per-user OAuth flow refactor (#3565) +- feat: team-level calendar alignment (#3476) +- feat: feature flags (#3581) +- feat: config-hash-based file value override of DB when `config.json` changes between restarts (#3610) +- feat: configurable `model_parameters_url` in framework config (#3608) +- feat: `access_profile_id` on virtual keys for direct access profile assignment (#3560) +- feat: `source_id` column and `GetTeamBySourceID` lookup for governance teams (#3395) +- feat: cluster-aware log metadata and per-node usage aggregation (#3590) +- feat: `limit` and `query` params on filter data endpoints for server-side search and pagination (#3567) +- feat: service tier mappings for Gemini and Anthropic (#3554) +- feat: onboarding widget backend (#3605) +- feat: direct access control (DAC) support (#3198) +- feat: `RunSingleMigration` accepts migration options (#3626) +- fix: dimension check and semantic cache issues on namespace creation (#3611) +- fix: migration for drop columns on calendar-aligned tables (#3614) +- fix: calendar-aligned migration alias and team-level migration fixes (#3452, #3535, #3553) +- fix: remove budget-level calendar alignment (#3434) +- fix: VK and provider-key level pricing overrides for streaming (#3421) +- fix: `FullyRedacted()` for proxy passwords and `MarshalForStorage()` for `ProxyConfig` (#3445) +- fix(mcp): remove stale stats from logs list response (#3583) +- fix(configstore): improve error message when API key name conflicts across providers (#3574) +- fix: remove `defaultFilterDataLimit` cap from filter data queries (#3561) +- fix: preserve OpenAI responses stream metadata (#3528, #3530) (thanks [@etnperlong](https://github.com/etnperlong)!) +- fix: handle context cancel before read errors in streaming (#3522) +- fix: replace unsafe inline jsonb cast with `bifrost_safe_jsonb` PL/pgSQL helper (#3407) +- chore: dependency and AWS SDK security updates (#3461) diff --git a/framework/version b/framework/version index 0c00f610817..17e63e7affd 100644 --- a/framework/version +++ b/framework/version @@ -1 +1 @@ -1.3.10 +1.3.11 diff --git a/plugins/compat/changelog.md b/plugins/compat/changelog.md index e69de29bb2d..76ff5a4d463 100644 --- a/plugins/compat/changelog.md +++ b/plugins/compat/changelog.md @@ -0,0 +1,2 @@ +- chore: upgraded core to v1.5.11 and framework to v1.3.11 +- chore: dependency and AWS SDK security updates (#3461) diff --git a/plugins/compat/version b/plugins/compat/version index 1a030947e83..9767cc98e70 100644 --- a/plugins/compat/version +++ b/plugins/compat/version @@ -1 +1 @@ -0.1.9 +0.1.10 diff --git a/plugins/governance/changelog.md b/plugins/governance/changelog.md index e69de29bb2d..fde7c40b856 100644 --- a/plugins/governance/changelog.md +++ b/plugins/governance/changelog.md @@ -0,0 +1,7 @@ +- feat: team-level calendar alignment (#3476) +- feat: virtual key rotation backend (#3599) +- feat: budget and rate-limit dump for the budget tracker (#3550) +- feat: enrich realtime routing, logging, cost, and session tracking (#3335) +- fix: calendar-aligned migration and virtual key UI (#3452) +- fix: remove budget-level calendar alignment (#3434) +- chore: dependency and AWS SDK security updates (#3461) diff --git a/plugins/governance/version b/plugins/governance/version index f0ed37967c0..df808199cd8 100644 --- a/plugins/governance/version +++ b/plugins/governance/version @@ -1 +1 @@ -1.5.10 +1.5.11 diff --git a/plugins/jsonparser/changelog.md b/plugins/jsonparser/changelog.md index e69de29bb2d..76ff5a4d463 100644 --- a/plugins/jsonparser/changelog.md +++ b/plugins/jsonparser/changelog.md @@ -0,0 +1,2 @@ +- chore: upgraded core to v1.5.11 and framework to v1.3.11 +- chore: dependency and AWS SDK security updates (#3461) diff --git a/plugins/jsonparser/version b/plugins/jsonparser/version index f0ed37967c0..df808199cd8 100644 --- a/plugins/jsonparser/version +++ b/plugins/jsonparser/version @@ -1 +1 @@ -1.5.10 +1.5.11 diff --git a/plugins/logging/changelog.md b/plugins/logging/changelog.md index e69de29bb2d..9495aee6377 100644 --- a/plugins/logging/changelog.md +++ b/plugins/logging/changelog.md @@ -0,0 +1,5 @@ +- feat: cluster-aware log metadata and per-node usage aggregation (#3590) +- feat: `limit` and `query` params on filter data endpoints for server-side search and pagination (#3567) +- feat: enrich realtime routing, logging, cost, and session tracking (#3335) +- fix: VK and provider-key level pricing overrides for streaming (#3421) +- chore: dependency and AWS SDK security updates (#3461) diff --git a/plugins/logging/version b/plugins/logging/version index f0ed37967c0..df808199cd8 100644 --- a/plugins/logging/version +++ b/plugins/logging/version @@ -1 +1 @@ -1.5.10 +1.5.11 diff --git a/plugins/maxim/changelog.md b/plugins/maxim/changelog.md index e69de29bb2d..dd54409babb 100644 --- a/plugins/maxim/changelog.md +++ b/plugins/maxim/changelog.md @@ -0,0 +1,2 @@ +- fix: VK and provider-key level pricing overrides for streaming (#3421) +- chore: dependency and AWS SDK security updates (#3461) diff --git a/plugins/maxim/version b/plugins/maxim/version index 1df3b822c71..99c026bdee4 100644 --- a/plugins/maxim/version +++ b/plugins/maxim/version @@ -1 +1 @@ -1.6.10 +1.6.11 diff --git a/plugins/mocker/changelog.md b/plugins/mocker/changelog.md index e69de29bb2d..76ff5a4d463 100644 --- a/plugins/mocker/changelog.md +++ b/plugins/mocker/changelog.md @@ -0,0 +1,2 @@ +- chore: upgraded core to v1.5.11 and framework to v1.3.11 +- chore: dependency and AWS SDK security updates (#3461) diff --git a/plugins/mocker/version b/plugins/mocker/version index f0ed37967c0..df808199cd8 100644 --- a/plugins/mocker/version +++ b/plugins/mocker/version @@ -1 +1 @@ -1.5.10 +1.5.11 diff --git a/plugins/otel/changelog.md b/plugins/otel/changelog.md index e69de29bb2d..8afe79495ad 100644 --- a/plugins/otel/changelog.md +++ b/plugins/otel/changelog.md @@ -0,0 +1,3 @@ +- feat: custom selection of plugins for OTEL trace-span exports (#3382) +- fix: handle context cancel before read errors in streaming (#3522) +- chore: dependency and AWS SDK security updates (#3461) diff --git a/plugins/otel/version b/plugins/otel/version index 963ed7cf371..c11470058fa 100644 --- a/plugins/otel/version +++ b/plugins/otel/version @@ -1 +1 @@ -1.2.10 +1.2.11 diff --git a/plugins/prompts/changelog.md b/plugins/prompts/changelog.md index e69de29bb2d..76ff5a4d463 100644 --- a/plugins/prompts/changelog.md +++ b/plugins/prompts/changelog.md @@ -0,0 +1,2 @@ +- chore: upgraded core to v1.5.11 and framework to v1.3.11 +- chore: dependency and AWS SDK security updates (#3461) diff --git a/plugins/prompts/version b/plugins/prompts/version index 7ee7020b38a..59e9e60491a 100644 --- a/plugins/prompts/version +++ b/plugins/prompts/version @@ -1 +1 @@ -1.0.10 +1.0.11 diff --git a/plugins/semanticcache/changelog.md b/plugins/semanticcache/changelog.md index e69de29bb2d..a88217f824f 100644 --- a/plugins/semanticcache/changelog.md +++ b/plugins/semanticcache/changelog.md @@ -0,0 +1,6 @@ +- refactor: semantic cache plugin rewrite (#3210) +- feat: remove `cleanup_on_shutdown` from semantic cache plugin config (#3330) +- fix: dimension check on namespace creation and assorted semantic cache issues (#3611) +- fix: guard `Cleanup` with `sync.Once` to prevent a double-close panic (#3532) +- fix: decouple cache telemetry from the write decision and guard no-op search paths (#3424) +- chore: dependency and AWS SDK security updates (#3461) diff --git a/plugins/semanticcache/version b/plugins/semanticcache/version index f0ed37967c0..df808199cd8 100644 --- a/plugins/semanticcache/version +++ b/plugins/semanticcache/version @@ -1 +1 @@ -1.5.10 +1.5.11 diff --git a/plugins/telemetry/changelog.md b/plugins/telemetry/changelog.md index e69de29bb2d..76ff5a4d463 100644 --- a/plugins/telemetry/changelog.md +++ b/plugins/telemetry/changelog.md @@ -0,0 +1,2 @@ +- chore: upgraded core to v1.5.11 and framework to v1.3.11 +- chore: dependency and AWS SDK security updates (#3461) diff --git a/plugins/telemetry/version b/plugins/telemetry/version index f0ed37967c0..df808199cd8 100644 --- a/plugins/telemetry/version +++ b/plugins/telemetry/version @@ -1 +1 @@ -1.5.10 +1.5.11 diff --git a/transports/changelog.md b/transports/changelog.md index 991bba554ec..7107980bf26 100644 --- a/transports/changelog.md +++ b/transports/changelog.md @@ -1 +1,41 @@ -[fix]: add missing padding to provider API structure form [@delm](https://github.com/delm) +## ✨ Features + +- **Temporary Access Tokens** - Short-lived access tokens for scoped, time-limited API access (#3603) +- **MCP Per-User OAuth** - Refactored MCP OAuth into a per-user flow (#3565) +- **Bedrock Mantle Engine** - Bedrock Mantle inference engine support for `gpt-oss` models via an OpenAI-compatible SSE endpoint (#3489) +- **Azure Realtime Provider** - Azure realtime provider with nested model normalization, plus enriched realtime routing, logging, cost, and session tracking (#3334, #3335, #3336) +- **Bedrock System Tools** - System tool support for Bedrock models (#3435) +- **Service Tier Mappings** - Service tier mappings for Gemini and Anthropic (#3554) +- **Team-Level Calendar Alignment** - Calendar-aligned budgets at the team level (#3476) +- **Feature Flags** - Feature flag framework for gating functionality (#3581) +- **Config Hash Override** - File values in `config.json` now override DB values when the file changes between restarts; `model_parameters_url` is configurable via config JSON and Helm chart (#3608, #3609, #3610) +- **Direct Access Control** - `access_profile_id` on virtual keys for direct access profile assignment, plus DAC support (#3198, #3560) +- **Virtual Key Rotation** - Rotate virtual keys from the UI and backend (#3599, #3600) +- **Cluster-Aware Logging** - Cluster-aware log metadata and per-node usage aggregation (#3590) +- **Dashboard RBAC** - Granular RBAC for API keys, inference, metrics, MCP logs, and dashboard access, with inaccessible sidebar items filtered (#3295, #3316, #3613) +- **Onboarding Widget** - Onboarding setup checklist widget with backend support (#3605, #3606) +- **Broker Mode** - Broker mode schema and configuration (#3509) +- **Server-Side Filter Search** - Server-side search and pagination on filter sidebar checkbox lists via a debounced `q` query param (#3563, #3567, #3568) +- **OTEL Plugin Selection** - Custom selection of plugins for OTEL trace-span exports (#3382) +- **UI Action Menus** - Inline action buttons replaced with pinned dropdown menus across teams, virtual keys, MCP clients, pricing overrides, routing rules, model limits, and logs tables (#3480, #3483, #3484, #3485, #3486, #3487) +- **Dashboard Chart Polish** - Animated totals/averages and full-precision tooltips on chart card headers (#3499, #3501) + +## 🐞 Fixed + +- **fasthttp Panic** - Fixed a fasthttp panic on malformed requests (#3595) +- **Streaming Stability** - Fixed a remote-stream-close race on context cancel, a nil pointer deref in stream cancellations, idle stream timeouts, and context-cancel ordering before read errors (#3495, #3522, #3582, #3591) +- **Bedrock Fixes** - Bedrock Mantle fixes, chat tool arguments, stop reason, missing lifecycle events, and Responses prefill handling (#3506, #3517, #3527, #3564, #3566) +- **OpenAI Responses** - Preserve OpenAI responses stream metadata and add usage to the completed event in the Responses-to-Chat-Completions fallback (#3519, #3528, #3530) (thanks [@etnperlong](https://github.com/etnperlong)! and [@kevinpdev](https://github.com/kevinpdev)!) +- **Anthropic Fixes** - Set Anthropic beta headers on Vertex, emit role chunk from message start, trim trailing whitespace, fix reasoning-content forwarding on Responses->Chat conversion, and preserve output schema refs (#3449, #3496, #3575, #3584, #3585) (thanks [@Javtor](https://github.com/Javtor)!) +- **Gemini Fixes** - Remove the non-native `fallbacks` key from Gemini requests (#3464) +- **Pricing Overrides** - VK and provider-key level pricing overrides now apply to streaming requests (#3421) +- **Secret Redaction** - `FullyRedacted()` for proxy passwords and `MarshalForStorage()` for `ProxyConfig` prevent partial value leakage in API responses (#3445) +- **Calendar-Aligned Migrations** - Multiple migration fixes for calendar-aligned budget tables (#3452, #3535, #3553, #3614) +- **Semantic Cache** - Dimension check on namespace creation, double-close panic guard, request-time plugin resolution, and telemetry decoupling (#3423, #3424, #3532, #3611) +- **Filter Queries** - Removed the `defaultFilterDataLimit` cap and skip pagination clamp on VK export requests (#3416, #3561) +- **MCP Logs** - Remove stale stats from the logs list response (#3583) +- **configstore** - Improve error message when an API key name conflicts across providers (#3574) +- **DB Safety** - Replace unsafe inline jsonb cast with a `bifrost_safe_jsonb` PL/pgSQL helper (#3407) +- **Azure Batch** - Include Azure blob fields in batch responses (#3469) +- **UI Fixes** - Validate OAuth popup messages, constrain table column widths, fix provider API structure form padding, and pass through extra image params (#2615, #3481, #3482, #3513, #3572) (thanks [@binbandit](https://github.com/binbandit)! and [@d3lm](https://github.com/d3lm)!) +- **Security Dependencies** - AWS SDK and dependency updates for security patches (#3461) diff --git a/transports/version b/transports/version index 4cda8f19edc..8af85beb515 100644 --- a/transports/version +++ b/transports/version @@ -1 +1 @@ -1.5.2 +1.5.3