diff --git a/packages/shared/src/types/instance.ts b/packages/shared/src/types/instance.ts index 2dc7aac7994..0bb8009ca42 100644 --- a/packages/shared/src/types/instance.ts +++ b/packages/shared/src/types/instance.ts @@ -29,6 +29,7 @@ export interface InstanceGeneralSettings { export interface InstanceExperimentalSettings { enableEnvironments: boolean; enableIsolatedWorkspaces: boolean; + enableStreamlinedLeftNavigation: boolean; enableIssuePlanDecompositions: boolean; enableCloudSync: boolean; autoRestartDevServerWhenIdle: boolean; diff --git a/packages/shared/src/validators/instance.ts b/packages/shared/src/validators/instance.ts index beb1c8db07d..448aa107f23 100644 --- a/packages/shared/src/validators/instance.ts +++ b/packages/shared/src/validators/instance.ts @@ -38,6 +38,7 @@ export const patchInstanceGeneralSettingsSchema = instanceGeneralSettingsSchema. export const instanceExperimentalSettingsSchema = z.object({ enableEnvironments: z.boolean().default(false), enableIsolatedWorkspaces: z.boolean().default(false), + enableStreamlinedLeftNavigation: z.boolean().default(false), enableIssuePlanDecompositions: z.boolean().default(false), enableCloudSync: z.boolean().default(false), autoRestartDevServerWhenIdle: z.boolean().default(false), diff --git a/server/src/__tests__/instance-settings-service.test.ts b/server/src/__tests__/instance-settings-service.test.ts index fbb6ea5adb9..cc4f4a235f2 100644 --- a/server/src/__tests__/instance-settings-service.test.ts +++ b/server/src/__tests__/instance-settings-service.test.ts @@ -15,6 +15,7 @@ describe("instance settings service", () => { })).toEqual({ enableEnvironments: true, enableIsolatedWorkspaces: true, + enableStreamlinedLeftNavigation: false, enableIssuePlanDecompositions: true, enableCloudSync: true, autoRestartDevServerWhenIdle: true, diff --git a/server/src/services/instance-settings.ts b/server/src/services/instance-settings.ts index f6bdb98a9a4..e6c15745069 100644 --- a/server/src/services/instance-settings.ts +++ b/server/src/services/instance-settings.ts @@ -43,6 +43,7 @@ export function normalizeExperimentalSettings(raw: unknown): InstanceExperimenta return { enableEnvironments: parsed.data.enableEnvironments ?? false, enableIsolatedWorkspaces: parsed.data.enableIsolatedWorkspaces ?? false, + enableStreamlinedLeftNavigation: parsed.data.enableStreamlinedLeftNavigation ?? false, enableIssuePlanDecompositions: parsed.data.enableIssuePlanDecompositions ?? false, enableCloudSync: parsed.data.enableCloudSync ?? false, autoRestartDevServerWhenIdle: parsed.data.autoRestartDevServerWhenIdle ?? false, @@ -55,6 +56,7 @@ export function normalizeExperimentalSettings(raw: unknown): InstanceExperimenta return { enableEnvironments: false, enableIsolatedWorkspaces: false, + enableStreamlinedLeftNavigation: false, enableIssuePlanDecompositions: false, enableCloudSync: false, autoRestartDevServerWhenIdle: false, diff --git a/ui/src/pages/InstanceExperimentalSettings.tsx b/ui/src/pages/InstanceExperimentalSettings.tsx index 6d9f1d72fe2..7c196ab8ef1 100644 --- a/ui/src/pages/InstanceExperimentalSettings.tsx +++ b/ui/src/pages/InstanceExperimentalSettings.tsx @@ -205,6 +205,8 @@ export function InstanceExperimentalSettings() { const enableEnvironments = experimentalQuery.data?.enableEnvironments === true; const enableIsolatedWorkspaces = experimentalQuery.data?.enableIsolatedWorkspaces === true; + const enableStreamlinedLeftNavigation = + experimentalQuery.data?.enableStreamlinedLeftNavigation === true; const enableIssuePlanDecompositions = experimentalQuery.data?.enableIssuePlanDecompositions === true; const enableCloudSync = experimentalQuery.data?.enableCloudSync === true; @@ -301,6 +303,28 @@ export function InstanceExperimentalSettings() { + + + + Streamlined Left Navigation Bar + + Reduces the maximum number of items in the left navigation bar — nests Projects under Work with a + dedicated Projects page, and shows only active agents (max 5 recently-active) in the sidebar. + + + + toggleMutation.mutate({ + enableStreamlinedLeftNavigation: !enableStreamlinedLeftNavigation, + }) + } + disabled={toggleMutation.isPending} + aria-label="Toggle streamlined left navigation experimental setting" + /> + + +
+ Reduces the maximum number of items in the left navigation bar — nests Projects under Work with a + dedicated Projects page, and shows only active agents (max 5 recently-active) in the sidebar. +