Skip to content

fix: standardize page container layout with no-padding-parent and 100dvh sizing - #4046

Merged
akshaydeo merged 11 commits into
devfrom
06-04-fix_governance_pages_layout
Jun 5, 2026
Merged

fix: standardize page container layout with no-padding-parent and 100dvh sizing#4046
akshaydeo merged 11 commits into
devfrom
06-04-fix_governance_pages_layout

Conversation

@impoiler

@impoiler impoiler commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

Summary

Standardizes the page-level container layout across multiple workspace pages to ensure consistent full-viewport height behavior and uniform padding. Previously, pages used a mix of max-w-7xl, 100vh, and inconsistent padding approaches. This aligns them all to use 100dvh with a 1rem offset and the no-padding-parent class to properly handle the parent container's padding.

Changes

  • Replaced max-w-7xl width constraints and 100vh-based height calculations with a unified h-[calc(100dvh-1rem)] approach across audit logs, access profiles, business units, customers, RBAC, teams, and users pages
  • Added no-padding-parent class to suppress inherited padding from parent layout containers
  • Added explicit p-4 padding at the page level so each view controls its own spacing
  • Wrapped the teams page view in a consistent container div (it previously had no wrapper)
  • Removed overflow-y-auto from the RBAC page container, deferring scroll behavior to the inner view
  • Removed unused parseAsString import from the customers page

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

Navigate to each of the following pages and verify the layout fills the viewport correctly without overflow or unexpected scrollbars:

  • /workspace/audit-logs
  • /workspace/governance/access-profiles
  • /workspace/governance/business-units
  • /workspace/governance/customers
  • /workspace/governance/rbac
  • /workspace/governance/teams
  • /workspace/governance/users
cd ui
pnpm i || npm i
pnpm build || npm run build

Screenshots/Recordings

Before/after screenshots showing consistent full-height layout across pages recommended.

Breaking changes

  • Yes
  • 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 by CodeRabbit

  • Style

    • Updated layout and spacing across workspace and governance pages (audit logs, access profiles, business units, customers, RBAC, users, etc.) for improved responsiveness.
    • Adjusted header and container padding in team and virtual key sheets.
    • Refined SCIM page layout with improved scrolling behavior.
  • New Features

    • Enhanced virtual key sheet with improved form initialization, provider configuration handling, and MCP client selection UI.
    • Added a layout wrapper to the teams page.

@coderabbitai

coderabbitai Bot commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Warning

Review limit reached

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

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

Your organization has run out of usage credits. Purchase more 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.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 39bf3258-3336-4130-b61d-0ef7453a1692

📥 Commits

Reviewing files that changed from the base of the PR and between d99a1d8 and ffefed9.

📒 Files selected for processing (12)
  • ui/app/_fallbacks/enterprise/components/user-groups/teamsView.tsx
  • ui/app/workspace/audit-logs/page.tsx
  • ui/app/workspace/governance/access-profiles/page.tsx
  • ui/app/workspace/governance/business-units/page.tsx
  • ui/app/workspace/governance/customers/page.tsx
  • ui/app/workspace/governance/rbac/page.tsx
  • ui/app/workspace/governance/teams/page.tsx
  • ui/app/workspace/governance/users/page.tsx
  • ui/app/workspace/governance/views/teamSheet.tsx
  • ui/app/workspace/scim/page.tsx
  • ui/app/workspace/virtual-keys/views/virtualKeyDetailsSheet.tsx
  • ui/app/workspace/virtual-keys/views/virtualKeySheet.tsx
📝 Walkthrough

Walkthrough

This PR standardizes container layouts to full-width padded viewport-height wrappers across workspace/governance pages, removes an extra wrapper in TeamsView while adding one in GovernanceTeamsPage, adjusts sticky SheetHeader padding, and performs a broad refactor of the Virtual Key sheet (form defaults, submit normalization, provider UI, and MCP client UI).

Changes

Page Layout Standardization

Layer / File(s) Summary
Governance page layout updates
ui/app/workspace/governance/access-profiles/page.tsx, ui/app/workspace/governance/business-units/page.tsx, ui/app/workspace/governance/users/page.tsx, ui/app/workspace/governance/rbac/page.tsx
Access Profiles, Business Units, Users, and RBAC pages replace centered max-w-7xl containers with full-width, padded, viewport-height layouts using no-padding-parent and h-[calc(100dvh-1rem)] classes.
Workspace audit logs and customers layout updates
ui/app/workspace/audit-logs/page.tsx, ui/app/workspace/governance/customers/page.tsx
Audit Logs and Customers pages update container styling to match the new layout pattern. Customers page also pulls parseAsInteger and useQueryStates directly from nuqs and reorders imports.
SCIM page layout with ScrollArea
ui/app/workspace/scim/page.tsx
SCIM page wraps SCIMView in a ScrollArea component with full sizing and viewport-height calculation, moving centering and max-width styling to an inner container.

Teams Components Structure and Styling

Layer / File(s) Summary
TeamsView and GovernanceTeamsPage refactoring
ui/app/_fallbacks/enterprise/components/user-groups/teamsView.tsx, ui/app/workspace/governance/teams/page.tsx
TeamsView removes its outer layout <div> wrapper around TeamsTable; GovernanceTeamsPage adds a wrapper <div> with no-padding-parent styling and data-testid="teams-view" around TeamsView. parseAsSafeString import is regrouped.
TeamSheet header padding
ui/app/workspace/governance/views/teamSheet.tsx
SheetHeader horizontal padding is split between outer container (px-0) and sticky inner header (headerClassName includes px-8), preserving sticky positioning and background styling.

Virtual Key Sheet Form and UI Refactoring

Layer / File(s) Summary
Form initialization and provider config normalization
ui/app/workspace/virtual-keys/views/virtualKeySheet.tsx
Provider config rate_limit fields are explicitly mapped to token_max_limit, token_reset_duration, request_max_limit, and request_reset_duration in form defaults. Budget entries default reset_duration to "1M". Submit handler calls normalizeProviderConfigs with current form provider configs and existing VK configs.
Entity assignment and combobox options
ui/app/workspace/virtual-keys/views/virtualKeySheet.tsx
Update and create payload generation sets team_id/customer_id using trimmed/non-empty checks and maps "none" to null. Combobox options include "Assign to Team/Customer" entries only when teams/customers are available.
Sheet header and provider UI rendering
ui/app/workspace/virtual-keys/views/virtualKeySheet.tsx
Sheet header padding adjusted. Provider UI sections refactored: provider labels/placeholders, allowed/blocked model multiselects use wildcard ("*") semantics, allowed-key descriptions handle wildcard expansion, react-select option rendering updated, and provider budget lines default missing reset_duration to "1M".
MCP client configurations and details sheet styling
ui/app/workspace/virtual-keys/views/virtualKeySheet.tsx, ui/app/workspace/virtual-keys/views/virtualKeyDetailsSheet.tsx
MCP client configurations UI is rewritten: shows default-available notice, add-client dropdown excludes already-configured clients and shows enabled-tool counts, renders tools table with wildcard/deduping behavior and selection collapse/expand logic. Virtual Key details sheet updates SheetContent and inner body padding to align with header spacing.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

  • maximhq/bifrost#3675: Also modifies ui/app/workspace/virtual-keys/views/virtualKeySheet.tsx (layout changes vs. this PR's larger provider/UI refactor).
  • maximhq/bifrost#3757: Overlaps on teams area edits for teamsView.tsx and related teams UI changes.

Suggested reviewers

  • akshaydeo
  • danpiths

"A rabbit hums a layout tune:
Full-width fields beneath the moon,
Teams unwrapped, headers snug and tight,
Virtual keys now dance in light,
MCP tools lined up just right."

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately describes the main refactoring effort: standardizing page container layouts using no-padding-parent class and 100dvh sizing across multiple pages.
Description check ✅ Passed The PR description comprehensively covers the summary, changes, testing instructions, and type of change, though it lacks before/after screenshots despite recommending them.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch 06-04-fix_governance_pages_layout

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

@impoiler impoiler self-assigned this Jun 4, 2026
@impoiler impoiler changed the title fix: governance pages layout fix: standardize page container layout with no-padding-parent and 100dvh sizing Jun 4, 2026

impoiler commented Jun 4, 2026

Copy link
Copy Markdown
Contributor Author

@impoiler
impoiler force-pushed the 06-04-fix_governance_pages_layout branch 5 times, most recently from 81e5272 to ba54745 Compare June 4, 2026 09:27
@impoiler
impoiler force-pushed the 06-04-fix_dashboard_ranking_charts_label_and_hover_state_of_all_charts_tooltips branch from 4049406 to 681bba9 Compare June 4, 2026 09:27
@impoiler
impoiler force-pushed the 06-04-fix_governance_pages_layout branch from ba54745 to a9dd86a Compare June 4, 2026 11:06
@impoiler
impoiler force-pushed the 06-04-fix_dashboard_ranking_charts_label_and_hover_state_of_all_charts_tooltips branch from 681bba9 to c10a4a1 Compare June 4, 2026 11:06
@impoiler
impoiler force-pushed the 06-04-fix_governance_pages_layout branch from a9dd86a to 32760c5 Compare June 4, 2026 12:07
@impoiler
impoiler force-pushed the 06-04-fix_dashboard_ranking_charts_label_and_hover_state_of_all_charts_tooltips branch from c10a4a1 to 0f8ed8f Compare June 4, 2026 12:07
@impoiler
impoiler force-pushed the 06-04-fix_dashboard_ranking_charts_label_and_hover_state_of_all_charts_tooltips branch from 0f8ed8f to 1acbbe0 Compare June 4, 2026 13:11
@impoiler
impoiler force-pushed the 06-04-fix_governance_pages_layout branch from 32760c5 to 0bcaf0c Compare June 4, 2026 13:11
@impoiler
impoiler force-pushed the 06-04-fix_dashboard_ranking_charts_label_and_hover_state_of_all_charts_tooltips branch from 1acbbe0 to e1fcc50 Compare June 5, 2026 04:53
@impoiler
impoiler force-pushed the 06-04-fix_governance_pages_layout branch from 0bcaf0c to b8fd252 Compare June 5, 2026 04:53
@impoiler
impoiler force-pushed the 06-04-fix_dashboard_ranking_charts_label_and_hover_state_of_all_charts_tooltips branch from e1fcc50 to a81be90 Compare June 5, 2026 04:54
@impoiler
impoiler force-pushed the 06-04-fix_governance_pages_layout branch from b8fd252 to 3905d3b Compare June 5, 2026 04:54
@impoiler
impoiler force-pushed the 06-04-fix_governance_pages_layout branch from 3905d3b to d99a1d8 Compare June 5, 2026 13:48
@impoiler
impoiler force-pushed the 06-04-fix_dashboard_ranking_charts_label_and_hover_state_of_all_charts_tooltips branch from 0de4bcf to d1d422d Compare June 5, 2026 13:51
@impoiler
impoiler force-pushed the 06-04-fix_governance_pages_layout branch from d99a1d8 to c5c59b3 Compare June 5, 2026 13:51
@CLAassistant

CLAassistant commented Jun 5, 2026

Copy link
Copy Markdown

CLA assistant check
All committers have signed the CLA.

@impoiler
impoiler force-pushed the 06-04-fix_governance_pages_layout branch from c5c59b3 to ffefed9 Compare June 5, 2026 13:53

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

♻️ Duplicate comments (1)
ui/app/workspace/virtual-keys/views/virtualKeySheet.tsx (1)

1922-1937: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

**

Replace index-based React keys in MCP dropdown/table (virtualKeySheet.tsx)

SelectItem and MCP table TableRow are keyed with index (key={index} and key={`${config.mcp_client_name}-${index}`}), which can remount rows/options when ordering changes.

Suggested fix
-                                  .map((client, index) => {
+                                  .map((client) => {
@@
-                                      <SelectItem
-                                        key={index}
-                                        value={client.config.name}
-                                      >
+                                      <SelectItem
+                                        key={client.config.name}
+                                        value={client.config.name}
+                                      >
@@
-                                  <TableRow
-                                    key={`${config.mcp_client_name}-${index}`}
-                                  >
+                                  <TableRow key={config.mcp_client_name}>

MCP SelectTrigger/MultiSelect in this section also lack data-testid (only the delete button has one), which matches the already-existing data-testid concern.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@ui/app/workspace/virtual-keys/views/virtualKeySheet.tsx` around lines 1922 -
1937, The SelectItem and MCP TableRow are using unstable index keys (key={index}
/ key={`${config.mcp_client_name}-${index}`}) which can cause remounts when
order changes; update those components to use stable unique identifiers instead
(e.g., use client.config.name or a unique client ID for SelectItem and use
config.mcp_client_name or a unique row id for TableRow) and remove index-based
keys; additionally add data-testid attributes to the SelectTrigger and
MultiSelect elements (matching existing test-id patterns) so tests can reliably
target the dropdown components.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Duplicate comments:
In `@ui/app/workspace/virtual-keys/views/virtualKeySheet.tsx`:
- Around line 1922-1937: The SelectItem and MCP TableRow are using unstable
index keys (key={index} / key={`${config.mcp_client_name}-${index}`}) which can
cause remounts when order changes; update those components to use stable unique
identifiers instead (e.g., use client.config.name or a unique client ID for
SelectItem and use config.mcp_client_name or a unique row id for TableRow) and
remove index-based keys; additionally add data-testid attributes to the
SelectTrigger and MultiSelect elements (matching existing test-id patterns) so
tests can reliably target the dropdown components.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: fcfc00c5-0371-4a79-b809-87233d256671

📥 Commits

Reviewing files that changed from the base of the PR and between 3905d3b and d99a1d8.

📒 Files selected for processing (12)
  • ui/app/_fallbacks/enterprise/components/user-groups/teamsView.tsx
  • ui/app/workspace/audit-logs/page.tsx
  • ui/app/workspace/governance/access-profiles/page.tsx
  • ui/app/workspace/governance/business-units/page.tsx
  • ui/app/workspace/governance/customers/page.tsx
  • ui/app/workspace/governance/rbac/page.tsx
  • ui/app/workspace/governance/teams/page.tsx
  • ui/app/workspace/governance/users/page.tsx
  • ui/app/workspace/governance/views/teamSheet.tsx
  • ui/app/workspace/scim/page.tsx
  • ui/app/workspace/virtual-keys/views/virtualKeyDetailsSheet.tsx
  • ui/app/workspace/virtual-keys/views/virtualKeySheet.tsx

akshaydeo commented Jun 5, 2026

Copy link
Copy Markdown
Contributor

Merge activity

  • Jun 5, 2:00 PM UTC: A user started a stack merge that includes this pull request via Graphite.
  • Jun 5, 2:13 PM UTC: @akshaydeo merged this pull request with Graphite.

@akshaydeo
akshaydeo changed the base branch from 06-04-fix_dashboard_ranking_charts_label_and_hover_state_of_all_charts_tooltips to graphite-base/4046 June 5, 2026 14:09
@akshaydeo
akshaydeo changed the base branch from graphite-base/4046 to dev June 5, 2026 14:11
@akshaydeo
akshaydeo merged commit e4c49ba into dev Jun 5, 2026
9 of 10 checks passed
@akshaydeo
akshaydeo deleted the 06-04-fix_governance_pages_layout branch June 5, 2026 14:13
@akshaydeo akshaydeo mentioned this pull request Jun 7, 2026
akshaydeo pushed a commit that referenced this pull request Jun 7, 2026
…100dvh` sizing (#4046)

## Summary

Standardizes the page-level container layout across multiple workspace pages to ensure consistent full-viewport height behavior and uniform padding. Previously, pages used a mix of `max-w-7xl`, `100vh`, and inconsistent padding approaches. This aligns them all to use `100dvh` with a `1rem` offset and the `no-padding-parent` class to properly handle the parent container's padding.

## Changes

- Replaced `max-w-7xl` width constraints and `100vh`-based height calculations with a unified `h-[calc(100dvh-1rem)]` approach across audit logs, access profiles, business units, customers, RBAC, teams, and users pages
- Added `no-padding-parent` class to suppress inherited padding from parent layout containers
- Added explicit `p-4` padding at the page level so each view controls its own spacing
- Wrapped the teams page view in a consistent container div (it previously had no wrapper)
- Removed `overflow-y-auto` from the RBAC page container, deferring scroll behavior to the inner view
- Removed unused `parseAsString` import from the customers page

## Type of change

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

## Affected areas

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

## How to test

Navigate to each of the following pages and verify the layout fills the viewport correctly without overflow or unexpected scrollbars:

- `/workspace/audit-logs`
- `/workspace/governance/access-profiles`
- `/workspace/governance/business-units`
- `/workspace/governance/customers`
- `/workspace/governance/rbac`
- `/workspace/governance/teams`
- `/workspace/governance/users`

```sh
cd ui
pnpm i || npm i
pnpm build || npm run build
```

## Screenshots/Recordings

Before/after screenshots showing consistent full-height layout across pages recommended.

## 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

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

* **Style**
  * Updated layout and spacing across workspace and governance pages (audit logs, access profiles, business units, customers, RBAC, users, etc.) for improved responsiveness.
  * Adjusted header and container padding in team and virtual key sheets.
  * Refined SCIM page layout with improved scrolling behavior.

* **New Features**
  * Enhanced virtual key sheet with improved form initialization, provider configuration handling, and MCP client selection UI.
  * Added a layout wrapper to the teams page.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
akshaydeo added a commit that referenced this pull request Jun 7, 2026
## ✨ Features

- **OpenAI Compaction** — Added OpenAI conversation compaction support
across core, framework, logging, and the API surface (#4053)
- **Multi-Customer & Org Hierarchy** — Logs and usage tracking now
support multiple customers, teams, and business units, including
business unit CRUD, team assignment, and governance endpoints in the
OpenAPI spec (#4066, #4041, #4082)
- **Provider-Level Governance** — Budgets & limits are now scope-aware
and can be applied at the virtual-key top level and per provider, wired
from the model configs table, with UI filters for scope and providers
(#3938, #3937, #3939, #3981, #3962)
- **Customer Budgets** — Customers support multiple budgets and
`calendar_aligned` budget windows (#3998, #3997)
- **Virtual Key Attribution & Controls** — Added a `created_by` user
attribution column and a `blacklisted_models` column for virtual key
provider configs (#3672, #3653)
- **Request Header Capture** — OTel and Maxim observability plugins
capture `request_headers` by pattern, with wildcard support (e.g.
`x-custom-*`); logging gained the same wildcard header capture (#4012,
#3958)
- **OTel Content Controls & Collectors** — New `disable_content_logging`
option drops message/tool content from exported spans, plus support for
multiple OTel collectors (#4064, #3894)
- **xAI x_search** — Added xAI `x_search` tool support (#3976)
- **URL Validation** — Added fetch URL validation with private-network
configuration and link-local blocking (#3947, #3991)
- **File Scheme Pricing URLs** — Pricing source URLs now accept the
`file://` scheme for air-gapped and self-hosted deployments (#4045)
- **Paginated Virtual Keys** — Virtual key fetching is paginated to
handle deployments with very large numbers of keys (#3957)
- **Client IP Resolution** — Resolve client IP from
`X-Forwarded-For`/`X-Real-IP` headers
- **SCIM Provisioning** — Added `attributeType`/`attributeValue` SCIM
provisioning fields
- **Helm/Config Schema** — Added `roles` RBAC governance config and
`per_user_oauth` MCP auth to the Helm chart and config schema (#4004,
#4009)
- **Log Navigation UI** — Added a "View logs" menu item to customer,
team, and virtual key tables, clickable links in log detail views, a
customer detail sheet, and a reusable `BudgetDisplay` component (#4073,
#4054, #4026, #4055)
- **Faster First Paint** — Added an inline loading shell to `#root`
before React mounts (#4063)
- **Materialized View Alias** — Added an `alias` column to the
materialized view with filter support (#4078)

## 🐞 Fixed

- **Fetch URL IP Checks** — Hardened fetch URL IP checks against SSRF
(#4092)
- **Mantle Model Matching** — Broadened Mantle model matching to all
`gpt` variants (#4091)
- **Empty Thinking Blocks** — Strip thinking blocks when the signature
is empty (#4079)
- **OpenAI Stream Usage** — Removed usage from the `responses.created`
event in the OpenAI stream (#4080)
- **Prompt Cache Key** — Set the prompt cache key from the Anthropic
integration (#4086)
- **Upstream Failure Status** — Map upstream connection failures to 502
instead of 400 (#3929) (thanks
[@chris-colinsky](https://github.com/chris-colinsky)!)
- **Gemini Schema Constraints** — Accept numeric schema integer
constraints for Gemini (#3994) (thanks
[@yanhao98](https://github.com/yanhao98)!)
- **Files Provider Param** — Accept the `?provider=` query param on `GET
/v1/files` (#3971) (thanks [@alexef](https://github.com/alexef)!)
- **Optional Batch Model** — Made the `model` field optional on `POST
/v1/batches` (#3973) (thanks [@alexef](https://github.com/alexef)!)
- **Helm Azure Config** — Added missing `azure_key_config` fields to the
Helm schema (#3996) (thanks
[@axelray-dev](https://github.com/axelray-dev)!)
- **Text Completion Chunk Model** — Added the missing `Model` field to
`TextCompletionChunkResponse` (#3970) (thanks
[@kuishou68](https://github.com/kuishou68)!)
- **MCP Inline stdio Env** — MCP stdio server configs accept inline
environment variable assignments (#3861) (thanks
[@Shushmitaaaa](https://github.com/Shushmitaaaa)!)
- **Orphaned Tool Results** — Orphaned tool results in the OpenAI to
Anthropic conversion flow are no longer rejected by the Anthropic API
(#3919)
- **Node Usage Reconciliation** — Added a monotonic `inc_number` log
cursor so node usage reconciliation does not skip late async log writes
(#3664)
- **Bedrock Output Assessments** — Corrected the type of
`outputAssessments` in Bedrock responses (#4028)
- **Model Pool Pricing Reloads** — Preserve non-pricing model pool
entries across pricing reloads (#3999)
- **Ghost Node Reconciliation** — Replicate the VK hierarchy flow for
ghost node reconciliation (#4088)
- **VK Double Usage Counting** — Fixed double usage counting when
creating a virtual key (#4070)
- **Model Config Lifecycle** — Cascade deletes for model configs and
removal of stale in-memory model configs (#4051, #4043)
- **FTS Index Cap** — Reduced the FTS index `left()` cap from 800k to
250k chars to stay within the tsvector limit (#4057)
- **Sync Worker Drift** — Reduced the sync worker ticker period to 5m to
prevent threshold drift (#4023)
- **Passthrough** — Fixed passthrough budgets, gated passthrough models
per VK, model extraction for Azure passthrough, and restricted
fallbacks/provider selection to the VK boundary (#3941, #3988, #3983,
#3924)
- **Provider Response Headers** — Strip provider response headers and
add a content-type filter (#3955, #4024)
- **Stream Handling** — Drain non-SSE stream readers and retry stale
connections (#3956, #3967)
- **Azure Claude** — Strip Azure diagnostic property for Claude models
(#3925)
- **Compat max_tokens** — Preserve chat `max_tokens` during param
filtering (#3992)
- **Raw Request Flag** — Removed the raw request flag from providers
that don't support it (#4058)
- **UI Fixes** — Standardized page container layout, virtual key model
configs UI, and dashboard chart tooltips (#4046, #4052, #4044)

## 🔧 Maintenance

- **Dependency Upgrades** — Bumped transitive `golang.org/x`
dependencies (crypto, net, sys, text) for Docker Scout CVE remediation
and `recharts` to 3.8.1; cascaded version bumps across all modules
(#3900, #4003)
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.

4 participants