Skip to content

Enterprise changelog - #4587

Merged
akshaydeo merged 6 commits into
mainfrom
dev
Jun 21, 2026
Merged

Enterprise changelog#4587
akshaydeo merged 6 commits into
mainfrom
dev

Conversation

@akshaydeo

Copy link
Copy Markdown
Contributor

No description provided.

## Summary

Briefly explain the purpose of this PR and the problem it solves.

## Changes

- What was changed and why
- Any notable design decisions or trade-offs

## Type of change

- [ ] Bug fix
- [ ] Feature
- [ ] Refactor
- [ ] Documentation
- [ ] Chore/CI

## Affected areas

- [ ] Core (Go)
- [ ] Transports (HTTP)
- [ ] Providers/Integrations
- [ ] Plugins
- [ ] UI (React)
- [ ] Docs

## How to test

Describe the steps to validate this change. Include commands and expected outcomes.

```sh
# Core/Transports
go version
go test ./...

# UI
cd ui
pnpm i || npm i
pnpm test || npm test
pnpm build || npm run build
```

If adding new configs or environment variables, document them here.

## Screenshots/Recordings

If UI changes, add before/after screenshots or short clips.

## Breaking changes

- [ ] Yes
- [ ] No

If yes, describe impact and migration instructions.

## Related issues

Link related issues and discussions. Example: Closes #123

## Security considerations

Note any security implications (auth, secrets, PII, sandboxing, etc.).

## Checklist

- [ ] I read `docs/contributing/README.md` and followed the guidelines
- [ ] I added/updated tests where appropriate
- [ ] I updated documentation where needed
- [ ] I verified builds succeed (Go and UI)
- [ ] I verified the CI pipeline passes locally if applicable
## Summary

The `go.work` file is gitignored and must be regenerated in CI environments. Without it, builds in `cost-accuracy-test.sh` and `load-test.sh` resolve `core`, `framework`, and `plugins` from the published versions pinned in `transports/go.mod` rather than the local workspace copies. This PR ensures the Go workspace is initialized before any build steps run in those scripts.

## Changes

- Added a call to `setup-go-workspace.sh` at the start of both `cost-accuracy-test.sh` and `load-test.sh`, executed from the repo root so that the relative `go work use ./core` paths resolve correctly and the resulting `go.work` file is auto-discovered by subsequent `go build` invocations.

## Type of change

- [ ] Bug fix
- [ ] Feature
- [ ] Refactor
- [ ] Documentation
- [x] Chore/CI

## Affected areas

- [ ] Core (Go)
- [ ] Transports (HTTP)
- [ ] Providers/Integrations
- [ ] Plugins
- [ ] UI (React)
- [ ] Docs

## How to test

Trigger the cost-accuracy and load-test CI workflows and confirm that the builds resolve local module versions rather than the published ones pinned in `transports/go.mod`.

```sh
# Manually verify workspace setup
cd <repo-root>
source .github/workflows/scripts/setup-go-workspace.sh
go build ./transports/...
```

## Breaking changes

- [ ] Yes
- [x] No

## Related issues

## Security considerations

None.

## Checklist

- [ ] I read `docs/contributing/README.md` and followed the guidelines
- [ ] I added/updated tests where appropriate
- [ ] I updated documentation where needed
- [ ] I verified builds succeed (Go and UI)
- [ ] I verified the CI pipeline passes locally if applicable
## Summary

Adds the changelog for Bifrost Enterprise v1.4.13 (2026-06-21) and registers it in the docs navigation.

## Changes

- Added `docs/changelogs/ent-v1.4.13.mdx` documenting all features, bug fixes, and plugin dependency versions for the v1.4.13 release, built on `transports/v1.5.16`.
- Registered the new changelog page in `docs/docs.json` so it appears at the top of the Enterprise changelogs section.

Key highlights documented in the release:
- Business-unit and user attribution fields (`business_unit_id`, `business_unit_name`, `user_id`, `user_name`) added to BigQuery and Datadog plugins for cost/usage attribution.
- Durable, resumable background job runner for SCIM provisioning across all supported IdPs, with a `GET /api/scim/provision/jobs/{operation_id}` status endpoint.
- Datadog session-grouped traces via `group_traces_by_session`, pinning requests sharing an `x-bf-session-id` to a single APM trace.
- Cluster node `region` exposed via the cluster API and rendered in the UI.
- New `(Logs, Update)` RBAC permission with an accompanying migration for existing installs.
- Inline `409 Conflict` name-collision errors across access profiles, API keys, MCP tool groups, prompt deployments, roles, business units, and teams.
- Auto-assignment of access profiles to existing role members during config-file reconciliation.
- Group search input and selection indicators in the provisioning sync sheet.
- Fixed ghost-node double-counting on access-profile reloads.
- Fixed `409` vs `500` on duplicate-name violations across multiple resource endpoints.
- Fixed Okta provisioning deduplication, `Retry-After` handling, and multi-header `Link` parsing.
- Fixed `ListModels` spuriously enforcing provider/model allowlists when no virtual key is present.

## Type of change

- [ ] Bug fix
- [ ] Feature
- [ ] Refactor
- [x] Documentation
- [ ] Chore/CI

## Affected areas

- [ ] Core (Go)
- [ ] Transports (HTTP)
- [ ] Providers/Integrations
- [ ] Plugins
- [ ] UI (React)
- [x] Docs

## How to test

Navigate to the Enterprise changelogs section of the docs site and confirm the v1.4.13 entry appears at the top of the list and renders correctly, including the warning callout, feature/fix sections, and dependency block.

## Screenshots/Recordings

N/A — documentation-only change.

## Breaking changes

- [ ] Yes
- [x] No

## Related issues

N/A

## Security considerations

None. This is a documentation-only change.

## Checklist

- [x] I read `docs/contributing/README.md` and followed the guidelines
- [x] I added/updated tests where appropriate
- [x] I updated documentation where needed
- [x] I verified builds succeed (Go and UI)
- [ ] I verified the CI pipeline passes locally if applicable
@akshaydeo
akshaydeo requested a review from a team as a code owner June 21, 2026 14:17
@coderabbitai

coderabbitai Bot commented Jun 21, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

@akshaydeo, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 15 minutes and 4 seconds. Learn how PR review limits work.

To continue reviewing without waiting, enable usage-based billing in the billing tab.

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based credits.

🚦 How do rate limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan refill rate.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, the refill rate gradually slows as usage increases. The highest same-day bursts are limited more strictly.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 139a9bd4-9c4e-42c5-802d-251985d61a86

📥 Commits

Reviewing files that changed from the base of the PR and between f1fc4b9 and 23a5463.

📒 Files selected for processing (4)
  • .github/workflows/scripts/cost-accuracy-test.sh
  • .github/workflows/scripts/load-test.sh
  • docs/changelogs/ent-v1.4.13.mdx
  • docs/docs.json
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch dev

Comment @coderabbitai help to get the list of available commands and usage tips.

@CLAassistant

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

@akshaydeo
akshaydeo merged commit 0d5d744 into main Jun 21, 2026
28 of 31 checks passed
@greptile-apps

greptile-apps Bot commented Jun 21, 2026

Copy link
Copy Markdown
Contributor

Confidence Score: 3/5

The Go handler and test file changes both need fixes before merging: the test file cannot compile as written, and the handler logic silently bypasses provider filtering for VKs that rely on the database default for IsActive.

Two concrete defects in the changed Go files: new(true) / new(false) are not valid Go expressions and will prevent the test package from building; and the nil-IsActive guard causes active VKs (those with a NULL DB value) to skip provider filtering on list-models, producing a wider model list than the VK configuration allows. The docs and CI script changes are clean.

transports/bifrost-http/handlers/list_models_vk.go and its test file need attention — the nil handling logic and the pointer-literal syntax both require correction.

Important Files Changed

Filename Overview
transports/bifrost-http/handlers/list_models_vk.go Adapts IsActive from bool to *bool — but the nil guard causes active VKs with a NULL DB value to bypass provider filtering entirely, which is the opposite of the intended behavior.
transports/bifrost-http/handlers/list_models_vk_test.go Updates tests for the pointer IsActive field but uses new(true) / new(false) which are not valid Go — new requires a type argument, so the test file will not compile.
.github/workflows/scripts/cost-accuracy-test.sh Adds Go workspace setup before the cost-accuracy build step; GOTOOLCHAIN=auto set inside the sourced script won't propagate to the parent shell, but the go.work file written to disk will.
.github/workflows/scripts/load-test.sh Same pattern as cost-accuracy-test.sh — workspace setup added before the build; same note applies about GOTOOLCHAIN=auto scoping.
docs/changelogs/ent-v1.4.13.mdx New enterprise v1.4.13 changelog page documenting features and fixes; added correctly to docs.json navigation.
docs/docs.json Adds changelogs/ent-v1.4.13 at the top of the Enterprise changelog list — correctly ordered and placed.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[GET /v1/models request] --> B{VK header present?}
    B -- No --> C[Allow all providers]
    B -- Yes --> D{ConfigStore available?}
    D -- No --> E[503 Service Unavailable]
    D -- Yes --> F[GetVirtualKeyByValue]
    F --> G{Error?}
    G -- ErrNotFound --> C
    G -- Other error --> H[500 Internal Server Error]
    G -- nil --> I{vk == nil?}
    I -- Yes --> C
    I -- No --> J{vk.IsActive == nil?}
    J -- Yes --> C
    J -- No --> K{*vk.IsActive == false?}
    K -- Yes --> C
    K -- No --> L[Set BifrostContextKeyAvailableProviders]
    L --> M[Filtered model listing]
Loading
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
flowchart TD
    A[GET /v1/models request] --> B{VK header present?}
    B -- No --> C[Allow all providers]
    B -- Yes --> D{ConfigStore available?}
    D -- No --> E[503 Service Unavailable]
    D -- Yes --> F[GetVirtualKeyByValue]
    F --> G{Error?}
    G -- ErrNotFound --> C
    G -- Other error --> H[500 Internal Server Error]
    G -- nil --> I{vk == nil?}
    I -- Yes --> C
    I -- No --> J{vk.IsActive == nil?}
    J -- Yes --> C
    J -- No --> K{*vk.IsActive == false?}
    K -- Yes --> C
    K -- No --> L[Set BifrostContextKeyAvailableProviders]
    L --> M[Filtered model listing]
Loading

Comments Outside Diff (2)

  1. transports/bifrost-http/handlers/list_models_vk_test.go, line 32 (link)

    P1 new(true) / new(false) are compile errors

    In Go, new is a built-in that requires a type argument (new(bool)), not a value. new(true) and new(false) will be rejected by the compiler with "true (untyped bool constant) is not a type". Both test cases will fail to build, so CI cannot pass. The same issue is on line 128.

    A common pattern for inline bool pointer literals is a small helper or an address-of-variable expression: b := true; IsActive: &b

  2. transports/bifrost-http/handlers/list_models_vk.go, line 42-44 (link)

    P1 IsActive == nil treated as inactive — contradicts DB semantics

    The TableVirtualKey struct documents // Nil means true (DB default) and provides IsActiveValue() which returns true when IsActive == nil. Records inserted without an explicit IsActive value will have IsActive = NULL in the database, meaning they are semantically active. With the current condition, those VKs reach return true without setting BifrostContextKeyAvailableProviders, so list-models will show all providers instead of the VK-restricted set. Using the existing IsActiveValue() helper avoids the ambiguity: if vk == nil || !vk.IsActiveValue(). There is also no test covering the IsActive == nil path, so this regression would be invisible in CI even once the compilation issue above is resolved.

Reviews (1): Last reviewed commit: "Merge branch 'main' into dev" | Re-trigger Greptile

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants