From d80b484487f2b42f9917fcc405d4c408a3d48b70 Mon Sep 17 00:00:00 2001 From: Jake Howell Date: Wed, 27 May 2026 02:50:36 +1000 Subject: [PATCH] feat(site): promote AI settings to a top-level section (#25582) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit > 🤖 This PR was written by Coder Agents on behalf of Jake Howell. Linear: [DEVEX-355](https://linear.app/coder/issue/DEVEX-355) Fifth and final PR in a 5-PR stack splitting #25328. Surfaces the AI settings section in the dashboard chrome and moves the existing AI Governance page out of `/deployment`. - `Navbar` / `NavbarView` / `DeploymentDropdown` gain a `canViewAISettings` prop sourced from the `viewAnyAIProvider` permission added in PR 2. The deployment dropdown gets a new AI entry that links to `/ai/settings`. - `DeploymentSidebarView` drops the AI-related entries that now live under `/ai/settings`. - `AISettingsSidebarView` expands to include AI Governance and a cross-section link to Manage Coder Agents. - `router.tsx` removes the `/deployment/ai-governance` route and mounts the matching `/ai/settings/governance` child route under the new AI settings layout. - `ChatsSidebar` settings panel repoints the Providers link from `/deployment/ai-providers` to `/ai/settings`.
Stack 1. #25579 jakehwll/DEVEX-355/01-primitives, primitives 2. #25580 jakehwll/DEVEX-355/02-api, API client and query layer 3. #25581 jakehwll/DEVEX-355/03-components, provider form components 4. #25583 jakehwll/DEVEX-355/04-pages, pages and routes 5. **jakehwll/DEVEX-355/05-section, section reshuffle (this PR)** Replaces #25328 once the stack lands.
--- .../dashboard/Navbar/DeploymentDropdown.tsx | 22 ++++++++++++----- site/src/modules/dashboard/Navbar/Navbar.tsx | 2 ++ .../dashboard/Navbar/NavbarView.stories.tsx | 8 +++++++ .../modules/dashboard/Navbar/NavbarView.tsx | 5 +++- .../modules/management/AISettingsSidebar.tsx | 7 ++++-- .../management/AISettingsSidebarView.tsx | 24 ++++++++++++++++++- .../management/DeploymentSidebarView.tsx | 13 +--------- .../ChatsSidebar/settings/SettingsPanel.tsx | 7 +++--- site/src/router.tsx | 8 +++---- 9 files changed, 67 insertions(+), 29 deletions(-) diff --git a/site/src/modules/dashboard/Navbar/DeploymentDropdown.tsx b/site/src/modules/dashboard/Navbar/DeploymentDropdown.tsx index 70c81f21dd..6517feca26 100644 --- a/site/src/modules/dashboard/Navbar/DeploymentDropdown.tsx +++ b/site/src/modules/dashboard/Navbar/DeploymentDropdown.tsx @@ -15,8 +15,9 @@ interface DeploymentDropdownProps { canViewOrganizations: boolean; canViewAuditLog: boolean; canViewConnectionLog: boolean; - canViewHealth: boolean; canViewAIBridge: boolean; + canViewAISettings: boolean; + canViewHealth: boolean; } export const DeploymentDropdown: FC = ({ @@ -24,16 +25,18 @@ export const DeploymentDropdown: FC = ({ canViewOrganizations, canViewAuditLog, canViewConnectionLog, - canViewHealth, canViewAIBridge, + canViewAISettings, + canViewHealth, }) => { if ( !canViewAuditLog && !canViewConnectionLog && !canViewDeployment && !canViewOrganizations && - !canViewHealth && - !canViewAIBridge + !canViewAIBridge && + !canViewAISettings && + !canViewHealth ) { return null; } @@ -53,8 +56,9 @@ export const DeploymentDropdown: FC = ({ canViewOrganizations={canViewOrganizations} canViewAuditLog={canViewAuditLog} canViewConnectionLog={canViewConnectionLog} - canViewHealth={canViewHealth} canViewAIBridge={canViewAIBridge} + canViewAISettings={canViewAISettings} + canViewHealth={canViewHealth} /> @@ -64,9 +68,10 @@ export const DeploymentDropdown: FC = ({ const DeploymentDropdownContent: FC = ({ canViewDeployment, canViewAuditLog, - canViewHealth, canViewConnectionLog, canViewAIBridge, + canViewAISettings, + canViewHealth, }) => { return (