Skip to content

Conversation

@akshaydeo
Copy link
Contributor

@akshaydeo akshaydeo commented Dec 17, 2025

Summary

This PR improves the UI layout of configuration pages by standardizing the width and centering content, while also removing the sidebar tabs in favor of a more organized navigation structure through the main sidebar.

Changes

  • Fixed a typo in the Azure provider's BatchRetrieve method call
  • Improved configuration page layouts by adding consistent max width and centering content
  • Removed the configuration page sidebar tabs in favor of using the main application sidebar for navigation
  • Added detailed configuration sub-items to the main sidebar with proper query parameter handling
  • Enhanced the logs recalculate costs menu item with a more descriptive tooltip

Type of change

  • Bug fix
  • Feature
  • Refactor
  • Documentation
  • Chore/CI

Affected areas

  • Core (Go)
  • Transports (HTTP)
  • Providers/Integrations
  • Plugins
  • UI (Next.js)
  • Docs

How to test

  1. Navigate to the configuration pages via the sidebar
  2. Verify that each configuration page is properly centered with a consistent width
  3. Check that the sidebar navigation correctly highlights the active configuration section
  4. Verify that clicking on configuration sub-items in the sidebar correctly navigates to the appropriate tab
  5. Test the Azure provider's batch functionality to ensure the typo fix works correctly
# Core/Transports
go version
go test ./...

# UI
cd ui
pnpm i || npm i
pnpm dev || npm run dev

Screenshots/Recordings

N/A

Breaking changes

  • Yes
  • No

Related issues

N/A

Security considerations

No security implications.

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

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 17, 2025

Warning

Rate limit exceeded

@akshaydeo has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 9 minutes and 49 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, 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 have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between 1d2ee7d and 0d6747b.

📒 Files selected for processing (17)
  • core/bifrost_test.go (2 hunks)
  • core/chatbot_test.go (1 hunks)
  • core/providers/azure/azure.go (2 hunks)
  • core/providers/bedrock/s3.go (1 hunks)
  • ui/app/_fallbacks/enterprise/components/api-keys/APIKeysView.tsx (1 hunks)
  • ui/app/workspace/config/page.tsx (2 hunks)
  • ui/app/workspace/config/views/cachingView.tsx (1 hunks)
  • ui/app/workspace/config/views/clientSettingsView.tsx (1 hunks)
  • ui/app/workspace/config/views/governanceView.tsx (1 hunks)
  • ui/app/workspace/config/views/loggingView.tsx (1 hunks)
  • ui/app/workspace/config/views/observabilityView.tsx (1 hunks)
  • ui/app/workspace/config/views/performanceTuningView.tsx (1 hunks)
  • ui/app/workspace/config/views/pricingConfigView.tsx (1 hunks)
  • ui/app/workspace/config/views/proxyView.tsx (1 hunks)
  • ui/app/workspace/config/views/securityView.tsx (1 hunks)
  • ui/app/workspace/logs/views/filters.tsx (2 hunks)
  • ui/components/sidebar.tsx (11 hunks)
📝 Walkthrough

Walkthrough

Adds tab-based query-param navigation for workspace config sub-items in the sidebar; refactors the config page to render views by tab; standardizes centering/width across many config views; UI tweaks to API Keys, pricing form, logs filters, and proxy; fixes Azure Batch call name and Bedrock modelID validation.

Changes

Cohort / File(s) Summary
Sidebar: Tab-based routing
ui/components/sidebar.tsx
Added queryParam?: string to SidebarItem; integrated useSearchParams; pass searchParams into SidebarItemView; handle sub-item clicks to navigate with ?tab=<queryParam>; determine active sub-items by tab or path; added Config subItems with queryParam values.
Config page refactor
ui/app/workspace/config/page.tsx
Replaced multi-tab left navigation with single content region driven by tab query param; added validTabs and a useEffect redirect defaulting to client-settings for missing/invalid tab; direct conditional rendering of views.
Layout standardization (multiple views)
Container updates:
ui/app/workspace/config/views/cachingView.tsx, ui/app/workspace/config/views/clientSettingsView.tsx, ui/app/workspace/config/views/governanceView.tsx, ui/app/workspace/config/views/loggingView.tsx, ui/app/workspace/config/views/observabilityView.tsx, ui/app/workspace/config/views/performanceTuningView.tsx, ui/app/workspace/config/views/securityView.tsx
Updated root container className to include centering and width constraints (mx-auto w-full max-w-4xl) with no logic changes.
API Keys view layout
ui/app/_fallbacks/enterprise/components/api-keys/APIKeysView.tsx
Added centering and max-width (mx-auto w-full max-w-4xl) to the outer container; no logic changes.
Pricing config form changes
ui/app/workspace/config/views/pricingConfigView.tsx
Reorganized form layout; added Pricing Datasheet URL input with pattern and HTTP-prefix validation; moved pricing sync interval block (numeric/min-max/valueAsNumber); preserved submission and force-sync behavior.
Proxy view formatting
ui/app/workspace/config/views/proxyView.tsx
Formatting/quoting and minor signature spacing change (export default function ProxyView()); no functional changes.
Logs filter UI tweaks
ui/app/workspace/logs/views/filters.tsx
Removed onSelect from missing_cost_only item (now driven by Checkbox onCheckedChange); widened PopoverContent from 200px→250px; updated "Recalculate costs" label to primary+secondary vertical layout.
Azure batch fixes
core/providers/azure/azure.go
Updated BatchList error message to reference "batch list operation"; fixed misspelled call to BatchRetrieve in BatchResults; removed an extraneous blank line in BatchCancel.
Bedrock request validation
core/providers/bedrock/s3.go
Added validation to require non-empty modelID in ConvertBedrockRequestsToJSONL (returns error if missing) and initialized output buffer before processing.
Tests: title-casing change
core/bifrost_test.go
Replaced strings.Title with cases.Title(language.English).String for title-casing patterns in tests.
Test cleanup
core/chatbot_test.go
Removed helper getEnvWithDefault; simplified nil checks by using length checks for tool calls and content blocks.

Sequence Diagram

sequenceDiagram
    participant User
    participant Sidebar as Sidebar Component
    participant Router as Next.js Router
    participant ConfigPage as Config Page
    participant View as Config View

    User->>Sidebar: Click Config sub-item (has queryParam)
    Sidebar->>Sidebar: Read subItem.queryParam
    Sidebar->>Router: navigate(subItem.url + "?tab=" + queryParam)
    Router->>ConfigPage: Route loads with searchParams (tab)
    ConfigPage->>ConfigPage: Read tab from searchParams (useSearchParams)
    ConfigPage->>View: Render view matching tab (e.g., LoggingView)
    View->>User: Render selected config UI
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

  • Pay extra attention to:
    • ui/components/sidebar.tsx — new queryParam field, active-state logic, navigation behavior.
    • ui/app/workspace/config/page.tsx — tab validation, redirect effect, and conditional rendering.
    • ui/app/workspace/config/views/pricingConfigView.tsx — URL pattern/HTTP validation and numeric input handling.
    • core/providers/azure/azure.go and core/providers/bedrock/s3.go — ensure fixes preserve external behavior and error messages.

Poem

🐇 I hopped through tabs and query strings bright,
Centered views snug in the moonlit night,
Sidebar sends a tab with a cheerful spring,
Azure batches fixed — the call does sing,
Bedrock now asks for models before we bring!

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 7.14% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title 'moves config items into sidebar' directly reflects the main change: removing sidebar tabs and consolidating configuration navigation into the main application sidebar.
Description check ✅ Passed The description covers all required template sections including summary, changes, type of change, affected areas, testing instructions, breaking changes, and checklist items.

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

@akshaydeo akshaydeo mentioned this pull request Dec 17, 2025
18 tasks
Copy link
Contributor Author

akshaydeo commented Dec 17, 2025

@akshaydeo akshaydeo marked this pull request as ready for review December 17, 2025 05:33
coderabbitai[bot]
coderabbitai bot previously requested changes Dec 17, 2025
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
ui/components/sidebar.tsx (1)

610-621: Auto-expand logic should check queryParam to match active state detection.

The auto-expand logic at line 614 uses only pathname.startsWith(subItem.url), but all 10 Config sub-items share the same URL (/workspace/config) with distinct queryParam values. This causes the Config menu to expand whenever navigating to any config tab, which works but is semantically inconsistent with how active states are detected elsewhere.

The SidebarItemView component correctly checks both pathname and queryParam:

pathname === subItem.url && currentTab === subItem.queryParam

Update the auto-expand logic to apply the same check:

if (item.subItems?.some((subItem) => {
  const match = subItem.queryParam 
    ? pathname === subItem.url && searchParams.get("tab") === subItem.queryParam
    : pathname.startsWith(subItem.url);
  return match;
})) {
  newExpandedItems.add(item.title);
}
🧹 Nitpick comments (2)
ui/app/workspace/config/views/clientSettingsView.tsx (1)

69-69: Consider standardizing Tailwind class order across config views.

The layout change is functionally correct, but the class ordering varies across the config views:

  • This file: space-y-4 w-full max-w-4xl mx-auto
  • governanceView: space-y-4 mx-auto w-full max-w-4xl
  • cachingView: mx-auto w-full max-w-4xl space-y-4

While Tailwind doesn't care about order functionally, consistent ordering improves code maintainability and makes diffs cleaner.

ui/app/workspace/config/views/pricingConfigView.tsx (1)

111-121: URL validation has a redundancy.

The regex pattern already requires the URL to start with http:// or https:// (via ^(https?:\/\/)?), but the ? makes the protocol optional. The checkIfHttp validator then enforces the protocol requirement separately. This creates a conflict: the regex allows URLs without a protocol, but checkIfHttp rejects them.

Consider simplifying by making the protocol required in the regex pattern itself:

 {...register("pricing_datasheet_url", {
   pattern: {
-    value: /^(https?:\/\/)?((localhost|(\d{1,3}\.){3}\d{1,3})(:\d+)?|([\da-z\.-]+)\.([a-z\.]{2,6}))([\/\w \.-]*)*\/?$/,
+    value: /^https?:\/\/((localhost|(\d{1,3}\.){3}\d{1,3})(:\d+)?|([\da-z\.-]+)\.([a-z\.]{2,6}))([\/\w \.-]*)*\/?$/,
     message: "Please enter a valid URL.",
   },
-  validate: {
-    checkIfHttp: (value) => {
-      if (!value) return true; // Allow empty
-      return value.startsWith("http://") || value.startsWith("https://") || "URL must start with http:// or https://";
-    },
-  },
 })}

Alternatively, keep both validators if you want distinct error messages for malformed URLs vs. missing protocol.

📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 6e483b1 and 579b286.

📒 Files selected for processing (14)
  • core/providers/azure/azure.go (1 hunks)
  • ui/app/_fallbacks/enterprise/components/api-keys/APIKeysView.tsx (1 hunks)
  • ui/app/workspace/config/page.tsx (1 hunks)
  • ui/app/workspace/config/views/cachingView.tsx (1 hunks)
  • ui/app/workspace/config/views/clientSettingsView.tsx (1 hunks)
  • ui/app/workspace/config/views/governanceView.tsx (1 hunks)
  • ui/app/workspace/config/views/loggingView.tsx (1 hunks)
  • ui/app/workspace/config/views/observabilityView.tsx (1 hunks)
  • ui/app/workspace/config/views/performanceTuningView.tsx (1 hunks)
  • ui/app/workspace/config/views/pricingConfigView.tsx (1 hunks)
  • ui/app/workspace/config/views/proxyView.tsx (1 hunks)
  • ui/app/workspace/config/views/securityView.tsx (1 hunks)
  • ui/app/workspace/logs/views/filters.tsx (1 hunks)
  • ui/components/sidebar.tsx (11 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
**

⚙️ CodeRabbit configuration file

always check the stack if there is one for the current PR. do not give localized reviews for the PR, always see all changes in the light of the whole stack of PRs (if there is a stack, if there is no stack you can continue to make localized suggestions/reviews)

Files:

  • ui/app/workspace/config/views/clientSettingsView.tsx
  • ui/app/_fallbacks/enterprise/components/api-keys/APIKeysView.tsx
  • ui/app/workspace/config/views/securityView.tsx
  • ui/app/workspace/config/views/cachingView.tsx
  • ui/app/workspace/config/page.tsx
  • ui/app/workspace/logs/views/filters.tsx
  • ui/app/workspace/config/views/performanceTuningView.tsx
  • ui/app/workspace/config/views/pricingConfigView.tsx
  • ui/app/workspace/config/views/governanceView.tsx
  • ui/app/workspace/config/views/loggingView.tsx
  • ui/components/sidebar.tsx
  • core/providers/azure/azure.go
  • ui/app/workspace/config/views/observabilityView.tsx
  • ui/app/workspace/config/views/proxyView.tsx
🧠 Learnings (1)
📚 Learning: 2025-12-09T17:07:42.007Z
Learnt from: qwerty-dvorak
Repo: maximhq/bifrost PR: 1006
File: core/schemas/account.go:9-18
Timestamp: 2025-12-09T17:07:42.007Z
Learning: In core/schemas/account.go, the HuggingFaceKeyConfig field within the Key struct is currently unused and reserved for future Hugging Face inference endpoint deployments. Do not flag this field as missing from OpenAPI documentation or require its presence in the API spec until the feature is actively implemented and used. When the feature is added, update the OpenAPI docs accordingly; otherwise, treat this field as non-breaking and not part of the current API surface.

Applied to files:

  • core/providers/azure/azure.go
🧬 Code graph analysis (5)
ui/app/workspace/config/page.tsx (1)
ui/lib/constants/config.ts (1)
  • IS_ENTERPRISE (124-124)
ui/app/workspace/logs/views/filters.tsx (2)
ui/components/ui/popover.tsx (1)
  • PopoverContent (37-37)
ui/components/ui/command.tsx (3)
  • Command (114-114)
  • CommandList (114-114)
  • CommandItem (114-114)
ui/app/workspace/config/views/pricingConfigView.tsx (3)
ui/components/ui/button.tsx (1)
  • Button (70-70)
ui/components/ui/label.tsx (1)
  • Label (21-21)
ui/components/ui/input.tsx (1)
  • Input (15-69)
ui/components/sidebar.tsx (1)
ui/lib/constants/config.ts (1)
  • IS_ENTERPRISE (124-124)
core/providers/azure/azure.go (1)
core/schemas/batch.go (1)
  • BifrostBatchRetrieveRequest (150-159)
⏰ Context from checks skipped due to timeout of 900000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (6)
  • GitHub Check: Graphite / mergeability_check
  • GitHub Check: Graphite / mergeability_check
  • GitHub Check: Graphite / mergeability_check
  • GitHub Check: Graphite / mergeability_check
  • GitHub Check: Graphite / mergeability_check
  • GitHub Check: Graphite / mergeability_check
🔇 Additional comments (14)
ui/app/workspace/config/views/governanceView.tsx (1)

64-64: LGTM! Layout standardization applied.

The container now uses horizontal centering and a maximum width constraint, aligning with the PR's goal of standardizing configuration page layouts.

ui/app/workspace/config/views/cachingView.tsx (1)

10-10: LGTM! Consistent layout pattern applied.

The centered, width-constrained layout matches the PR's standardization goals.

ui/app/workspace/config/views/securityView.tsx (1)

170-170: LGTM! Layout standardization applied.

The centered, width-constrained container aligns with the PR's UI consistency goals.

ui/app/workspace/config/views/performanceTuningView.tsx (1)

102-102: LGTM! Consistent layout pattern applied.

The container now uses horizontal centering and maximum width constraints, matching the PR's standardization effort.

ui/app/workspace/config/views/loggingView.tsx (1)

79-79: LGTM! Layout standardization applied.

The centered, width-constrained layout aligns with the broader UI consistency improvements in this PR.

core/providers/azure/azure.go (1)

1842-1845: LGTM! Typo fixed in method call.

The corrected BatchRetrieve method call properly invokes the function defined at line 1622. This fixes what would have been a critical compilation or runtime error.

ui/app/workspace/config/views/observabilityView.tsx (1)

79-79: LGTM! Layout standardization applied.

The centered, width-constrained container matches the consistent layout pattern applied across configuration views.

ui/app/workspace/logs/views/filters.tsx (1)

330-339: LGTM!

The enhanced "Recalculate costs" menu item with a descriptive subtitle improves UX clarity, and the increased popover width (250px) accommodates the new two-line layout well. The implementation is clean with appropriate muted styling for the secondary text.

ui/app/workspace/config/views/pricingConfigView.tsx (1)

83-98: LGTM!

The layout restructuring with mx-auto w-full max-w-4xl aligns well with the standardized config page layouts across the PR. The header with inline action buttons (Force Sync Now, Save Changes) provides a clean, consistent UX pattern.

ui/app/workspace/config/views/proxyView.tsx (1)

60-62: LGTM!

The layout wrapper with mx-auto w-full max-w-4xl space-y-4 is consistent with the standardized config view layouts across this PR. The rest of the file maintains existing functionality with import/formatting normalization.

ui/app/_fallbacks/enterprise/components/api-keys/APIKeysView.tsx (1)

70-70: LGTM!

The addition of mx-auto w-full max-w-4xl to center and constrain the content width is consistent with the standardized layout pattern applied across all config views in this PR.

ui/components/sidebar.tsx (3)

492-577: LGTM!

The Config sub-items with queryParam-based navigation are well-structured. The conditional inclusion of the "Proxy" item for enterprise builds via spread operator is clean, and all sub-items have consistent hasAccess checks tied to hasSettingsAccess.


176-187: LGTM!

The isAnySubItemActive logic correctly handles both queryParam-based and path-based sub-items. The check pathname === subItem.url && currentTab === subItem.queryParam ensures exact matching for tab-based items while pathname.startsWith(subItem.url) preserves the existing behavior for path-based navigation.


205-211: LGTM!

The handleSubItemClick function cleanly handles the two navigation modes - appending ?tab= for queryParam-based items and direct navigation for path-based items.

@akshaydeo akshaydeo force-pushed the 12-17-moves_config_items_into_sidebar branch 2 times, most recently from 1c6c761 to 1d2ee7d Compare December 17, 2025 06:15
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 579b286 and 1d2ee7d.

📒 Files selected for processing (15)
  • core/providers/azure/azure.go (2 hunks)
  • core/providers/bedrock/s3.go (1 hunks)
  • ui/app/_fallbacks/enterprise/components/api-keys/APIKeysView.tsx (1 hunks)
  • ui/app/workspace/config/page.tsx (2 hunks)
  • ui/app/workspace/config/views/cachingView.tsx (1 hunks)
  • ui/app/workspace/config/views/clientSettingsView.tsx (1 hunks)
  • ui/app/workspace/config/views/governanceView.tsx (1 hunks)
  • ui/app/workspace/config/views/loggingView.tsx (1 hunks)
  • ui/app/workspace/config/views/observabilityView.tsx (1 hunks)
  • ui/app/workspace/config/views/performanceTuningView.tsx (1 hunks)
  • ui/app/workspace/config/views/pricingConfigView.tsx (1 hunks)
  • ui/app/workspace/config/views/proxyView.tsx (1 hunks)
  • ui/app/workspace/config/views/securityView.tsx (1 hunks)
  • ui/app/workspace/logs/views/filters.tsx (2 hunks)
  • ui/components/sidebar.tsx (11 hunks)
🚧 Files skipped from review as they are similar to previous changes (10)
  • ui/app/workspace/config/views/performanceTuningView.tsx
  • ui/app/workspace/config/views/securityView.tsx
  • ui/app/workspace/logs/views/filters.tsx
  • core/providers/azure/azure.go
  • ui/app/workspace/config/views/loggingView.tsx
  • ui/app/workspace/config/views/governanceView.tsx
  • ui/app/workspace/config/views/observabilityView.tsx
  • ui/app/workspace/config/views/pricingConfigView.tsx
  • ui/app/workspace/config/views/cachingView.tsx
  • ui/app/workspace/config/views/clientSettingsView.tsx
🧰 Additional context used
📓 Path-based instructions (1)
**

⚙️ CodeRabbit configuration file

always check the stack if there is one for the current PR. do not give localized reviews for the PR, always see all changes in the light of the whole stack of PRs (if there is a stack, if there is no stack you can continue to make localized suggestions/reviews)

Files:

  • core/providers/bedrock/s3.go
  • ui/app/workspace/config/page.tsx
  • ui/app/_fallbacks/enterprise/components/api-keys/APIKeysView.tsx
  • ui/app/workspace/config/views/proxyView.tsx
  • ui/components/sidebar.tsx
🧠 Learnings (1)
📚 Learning: 2025-12-09T17:07:42.007Z
Learnt from: qwerty-dvorak
Repo: maximhq/bifrost PR: 1006
File: core/schemas/account.go:9-18
Timestamp: 2025-12-09T17:07:42.007Z
Learning: In core/schemas/account.go, the HuggingFaceKeyConfig field within the Key struct is currently unused and reserved for future Hugging Face inference endpoint deployments. Do not flag this field as missing from OpenAPI documentation or require its presence in the API spec until the feature is actively implemented and used. When the feature is added, update the OpenAPI docs accordingly; otherwise, treat this field as non-breaking and not part of the current API surface.

Applied to files:

  • core/providers/bedrock/s3.go
🧬 Code graph analysis (2)
ui/app/workspace/config/views/proxyView.tsx (5)
ui/lib/types/config.ts (2)
  • GlobalProxyConfig (269-281)
  • DefaultGlobalProxyConfig (284-296)
core/network/http.go (1)
  • GlobalProxyConfig (55-68)
framework/configstore/tables/config.go (1)
  • GlobalProxyConfig (16-29)
ui/lib/types/schemas.ts (1)
  • globalProxyConfigSchema (625-669)
ui/lib/constants/config.ts (1)
  • IS_ENTERPRISE (124-124)
ui/components/sidebar.tsx (1)
ui/lib/constants/config.ts (1)
  • IS_ENTERPRISE (124-124)
⏰ Context from checks skipped due to timeout of 900000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (15)
  • GitHub Check: Graphite / mergeability_check
  • GitHub Check: Graphite / mergeability_check
  • GitHub Check: Graphite / mergeability_check
  • GitHub Check: Graphite / mergeability_check
  • GitHub Check: Graphite / mergeability_check
  • GitHub Check: Graphite / mergeability_check
  • GitHub Check: Graphite / mergeability_check
  • GitHub Check: Graphite / mergeability_check
  • GitHub Check: Graphite / mergeability_check
  • GitHub Check: Graphite / mergeability_check
  • GitHub Check: Graphite / mergeability_check
  • GitHub Check: Graphite / mergeability_check
  • GitHub Check: Graphite / mergeability_check
  • GitHub Check: Graphite / mergeability_check
  • GitHub Check: Graphite / mergeability_check
🔇 Additional comments (8)
ui/app/_fallbacks/enterprise/components/api-keys/APIKeysView.tsx (1)

70-70: LGTM! Standardized layout applied correctly.

The addition of mx-auto w-full max-w-4xl properly centers and constrains the configuration view, aligning with the PR's objective to standardize UI layouts across config pages. The Tailwind utilities are correct and maintain responsive behavior.

ui/app/workspace/config/views/proxyView.tsx (1)

1-349: LGTM! Formatting standardization.

The changes in this file are primarily formatting and style normalization (converting single quotes to double quotes, adjusting indentation and spacing, adding trailing semicolons). The layout update on Line 61 adding max-w-4xl standardizes the container width to match other config views in this PR.

All functional behavior—form validation, data fetching, submission flow, RBAC checks, and enterprise gating—remains unchanged.

ui/components/sidebar.tsx (4)

150-150: Good addition of queryParam for tab-based navigation.

The optional queryParam field on the SidebarItem interface enables tab-based subitems that share the same URL path but differ by query parameter. This is a clean approach for implementing the Config section's sub-navigation.


177-187: Correct active state logic for tab-based subitems.

The updated isAnySubItemActive logic correctly handles both:

  • Query-param-based subitems: checks if pathname === subItem.url && currentTab === subItem.queryParam
  • Path-based subitems: checks if pathname.startsWith(subItem.url)

This allows the sidebar to properly highlight the active Config parent item when any of its tab-based sub-items are active.


205-211: Proper navigation handling for tab-based subitems.

The handleSubItemClick function correctly routes tab-based subitems by appending the query parameter (?tab=${subItem.queryParam}) to the URL, while preserving the original path-based navigation for non-tab subitems.


492-577: The queryParam values in the sidebar already match the config page tab conditionals exactly. All 10 tab identifiers (client-settings, pricing-config, logging, governance, caching, observability, security, proxy, api-keys, performance-tuning) have corresponding activeTab checks in the config page, with proper enterprise-gating for the proxy tab.

core/providers/bedrock/s3.go (2)

92-95: LGTM!

The comment improvements enhance code readability, and the buffer initialization is correct.


88-91: Good defensive validation to prevent empty model ID.

The validation at lines 88-91 correctly prevents an empty modelID from being used. However, the nil check is unreachable in the current code path—BatchCreate validates request.Model is not nil before dereferencing modelID at line 101. The empty string check provides the real value here.

@akshaydeo akshaydeo force-pushed the 12-17-moves_config_items_into_sidebar branch from 1d2ee7d to a60450c Compare December 17, 2025 06:56
@akshaydeo akshaydeo changed the base branch from 12-17-fixes_blur_issue_on_char_type_in_headers_table to graphite-base/1115 December 17, 2025 06:59
@akshaydeo akshaydeo force-pushed the 12-17-moves_config_items_into_sidebar branch from a60450c to 5f276bd Compare December 17, 2025 07:00
@graphite-app graphite-app bot changed the base branch from graphite-base/1115 to main December 17, 2025 07:01
@akshaydeo akshaydeo force-pushed the 12-17-moves_config_items_into_sidebar branch from 5f276bd to 0d6747b Compare December 17, 2025 07:01
Copy link
Contributor Author

akshaydeo commented Dec 17, 2025

Merge activity

  • Dec 17, 7:02 AM UTC: A user started a stack merge that includes this pull request via Graphite.
  • Dec 17, 7:02 AM UTC: @akshaydeo merged this pull request with Graphite.

@akshaydeo akshaydeo merged commit 3a84ae8 into main Dec 17, 2025
8 checks passed
@akshaydeo akshaydeo deleted the 12-17-moves_config_items_into_sidebar branch December 17, 2025 07:02
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