From fa633c14381e9ecb3449a891e676f7e742379f38 Mon Sep 17 00:00:00 2001 From: Sawyer Cutler Date: Mon, 24 Aug 2026 07:38:40 -0700 Subject: [PATCH] Normalize create-workbench CTAs to New workbench Closes CL-6767 --- apps/web/src/command-palette-actions.test.ts | 2 ++ apps/web/src/command-palette-actions.ts | 5 +++-- apps/web/src/pages/mission-control-page.tsx | 4 ++-- apps/web/src/pages/new-workbench-picker.tsx | 3 ++- apps/web/src/routes.tsx | 5 +++-- apps/web/src/shell/sidebar.tsx | 10 +++++++--- apps/web/test/mission-control-page.test.tsx | 2 ++ apps/web/test/routes.test.tsx | 2 +- packages/chat-ui/src/strings.ts | 10 +++++++--- 9 files changed, 29 insertions(+), 14 deletions(-) diff --git a/apps/web/src/command-palette-actions.test.ts b/apps/web/src/command-palette-actions.test.ts index 2a0a3d4d6..ffe39598e 100644 --- a/apps/web/src/command-palette-actions.test.ts +++ b/apps/web/src/command-palette-actions.test.ts @@ -74,6 +74,8 @@ describe("ACTION_COMMANDS", () => { test("new-workbench and new-agent speak consumer language, not mint", () => { const workbench = ACTION_COMMANDS.find((c) => c.id === "new-workbench"); const agent = ACTION_COMMANDS.find((c) => c.id === "new-agent"); + expect(workbench?.title).toBe("New workbench"); + expect(agent?.title).toBe("New workbench"); expect(workbench?.subtitle).toBe("Start a new workbench"); expect(agent?.subtitle).toBe("Start a new workbench"); expect(workbench?.subtitle.toLowerCase()).not.toContain("mint"); diff --git a/apps/web/src/command-palette-actions.ts b/apps/web/src/command-palette-actions.ts index 8e0f394d5..e612a9034 100644 --- a/apps/web/src/command-palette-actions.ts +++ b/apps/web/src/command-palette-actions.ts @@ -28,6 +28,7 @@ // never hops to `/routines` first the way this used to. import { createPendingDialogRequest } from "@corbits/shell-layout"; +import { CHAT_STRINGS } from "@corbits/chat-ui"; import { WORKBENCH_PATH_PREFIX } from "./workbench-path"; import { NEW_WORKBENCH_PATH } from "./routes"; import { listAgentDefinitions } from "./agents-api"; @@ -97,12 +98,12 @@ export type ActionCommand = { export const ACTION_COMMANDS: readonly ActionCommand[] = [ { id: "new-workbench", - title: "New workbench", + title: CHAT_STRINGS.newWorkbenchAction, subtitle: "Start a new workbench", }, { id: "new-agent", - title: "New workbench", + title: CHAT_STRINGS.newWorkbenchAction, subtitle: "Start a new workbench", }, { diff --git a/apps/web/src/pages/mission-control-page.tsx b/apps/web/src/pages/mission-control-page.tsx index 9d1567439..473154c37 100644 --- a/apps/web/src/pages/mission-control-page.tsx +++ b/apps/web/src/pages/mission-control-page.tsx @@ -31,7 +31,7 @@ import { useMemo, useState } from "react"; import { useQueryClient } from "@tanstack/react-query"; import { formatUsd } from "@corbits/insights/client"; -import type { Workbench } from "@corbits/chat-ui"; +import { CHAT_STRINGS, type Workbench } from "@corbits/chat-ui"; import { approveApproval, @@ -278,7 +278,7 @@ export function MissionControlRoute({ size="sm" onClick={() => navigate(NEW_WORKBENCH_PATH)} > - New bench + {CHAT_STRINGS.newWorkbenchAction} } /> diff --git a/apps/web/src/pages/new-workbench-picker.tsx b/apps/web/src/pages/new-workbench-picker.tsx index 608be6706..08d940f78 100644 --- a/apps/web/src/pages/new-workbench-picker.tsx +++ b/apps/web/src/pages/new-workbench-picker.tsx @@ -17,6 +17,7 @@ import { } from "@corbits/icons"; import { ChatApiError, + CHAT_STRINGS, describeChatError, WorkbenchLoadingState, } from "@corbits/chat-ui"; @@ -216,7 +217,7 @@ export function NewWorkbenchPickerRoute() { return (
, render: () => , hasStageTopBar: false, @@ -268,7 +269,7 @@ export const APP_ROUTES: readonly AppRoute[] = [ }, { path: NEW_WORKBENCH_PATH, - label: "New workbench", + label: CHAT_STRINGS.newWorkbenchAction, icon: , render: () => , }, diff --git a/apps/web/src/shell/sidebar.tsx b/apps/web/src/shell/sidebar.tsx index d388ae489..4bb80b751 100644 --- a/apps/web/src/shell/sidebar.tsx +++ b/apps/web/src/shell/sidebar.tsx @@ -50,7 +50,11 @@ import { import type { CSSProperties } from "react"; import { useMemo } from "react"; -import { AVATAR_IDENTITY_CLASS, generatedAvatarStyle } from "@corbits/chat-ui"; +import { + AVATAR_IDENTITY_CLASS, + CHAT_STRINGS, + generatedAvatarStyle, +} from "@corbits/chat-ui"; import { createInsightsWindow, usageChromeLabel, @@ -150,8 +154,8 @@ export function Sidebar({