mirror of
https://github.com/coder/coder.git
synced 2026-10-29 17:44:33 +08:00
fix: rename user-facing 'chats' to 'Coder Agents' (#23905)
Refs #23897 - Rename user-facing "chats" to "Coder Agents" (feature name) or "conversations" (individual instances) - Covers UI strings, docs prose, Storybook stories, and aria labels - API paths, internal code identifiers, and the "Chats API" docs page name are intentionally left unchanged - TaskPage / AI Tasks are out of scope > 🤖 Written by a Coder Agent. Will be reviewed by a human.
This commit is contained in:
@@ -24,7 +24,7 @@ export const AgentAnalyticsPageView: FC<AgentAnalyticsPageViewProps> = ({
|
||||
<div className="mx-auto w-full max-w-3xl">
|
||||
<SectionHeader
|
||||
label="Analytics"
|
||||
description="Review your personal chat usage and cost breakdowns."
|
||||
description="Review your personal Coder Agents usage and cost breakdowns."
|
||||
action={
|
||||
<div className="flex items-center gap-2 text-xs text-content-secondary">
|
||||
<BarChart3Icon className="h-4 w-4" />
|
||||
|
||||
@@ -249,7 +249,7 @@ export const AgentSettingsBehaviorPageView: FC<
|
||||
<>
|
||||
<SectionHeader
|
||||
label="Behavior"
|
||||
description="Custom instructions that shape how the agent responds in your chats."
|
||||
description="Custom instructions that shape how the agent responds in your conversations."
|
||||
/>
|
||||
{/* ── Personal prompt (always visible) ── */}
|
||||
<form
|
||||
@@ -260,7 +260,7 @@ export const AgentSettingsBehaviorPageView: FC<
|
||||
Personal Instructions
|
||||
</h3>
|
||||
<p className="!mt-0.5 m-0 text-xs text-content-secondary">
|
||||
Applied to all your chats. Only visible to you.
|
||||
Applied to all your conversations. Only visible to you.
|
||||
</p>
|
||||
<TextareaAutosize
|
||||
className={cn(
|
||||
@@ -462,8 +462,8 @@ export const AgentSettingsBehaviorPageView: FC<
|
||||
<p className="!mt-0.5 m-0 flex-1 text-xs text-content-secondary">
|
||||
Set a default autostop for agent-created workspaces that don't
|
||||
have one defined in their template. Template-defined autostop
|
||||
rules always take precedence. Active chats will extend the stop
|
||||
time.
|
||||
rules always take precedence. Active conversations will extend
|
||||
the stop time.
|
||||
</p>
|
||||
<Switch
|
||||
checked={isAutostopEnabled}
|
||||
|
||||
@@ -25,7 +25,7 @@ const AgentSettingsMCPServersPage: FC = () => {
|
||||
<RequirePermission isFeatureVisible={permissions.editDeploymentConfig}>
|
||||
<MCPServerAdminPanel
|
||||
sectionLabel="MCP Servers"
|
||||
sectionDescription="Configure external MCP servers that provide additional tools for AI chat sessions."
|
||||
sectionDescription="Configure external MCP servers that provide additional tools for Coder Agents."
|
||||
sectionBadge={<AdminBadge />}
|
||||
serversData={serversQuery.data}
|
||||
isLoadingServers={serversQuery.isLoading}
|
||||
|
||||
@@ -45,7 +45,7 @@ const AgentSettingsProvidersPage: FC = () => {
|
||||
<ChatModelAdminPanel
|
||||
section="providers"
|
||||
sectionLabel="Providers"
|
||||
sectionDescription="Connect third-party LLM services like OpenAI, Anthropic, or Google. Each provider supplies models that users can select for their chats."
|
||||
sectionDescription="Connect third-party LLM services like OpenAI, Anthropic, or Google. Each provider supplies models that users can select for their conversations."
|
||||
sectionBadge={<AdminBadge />}
|
||||
providerConfigsData={providerConfigsQuery.data}
|
||||
modelConfigsData={modelConfigsQuery.data}
|
||||
|
||||
@@ -188,8 +188,8 @@ export const AgentSettingsUsagePageView: FC<
|
||||
label="Usage"
|
||||
description={
|
||||
selectedUserId
|
||||
? "Review deployment chat usage for a specific user."
|
||||
: "Review deployment chat usage and drill into individual users."
|
||||
? "Review deployment Coder Agents usage for a specific user."
|
||||
: "Review deployment Coder Agents usage and drill into individual users."
|
||||
}
|
||||
badge={<AdminBadge />}
|
||||
action={
|
||||
|
||||
@@ -611,7 +611,7 @@ export const OpensAnalyticsForAdmins: Story = {
|
||||
await waitFor(() => {
|
||||
expect(
|
||||
screen.getByText(
|
||||
"Review your personal chat usage and cost breakdowns.",
|
||||
"Review your personal Coder Agents usage and cost breakdowns.",
|
||||
),
|
||||
).toBeInTheDocument();
|
||||
});
|
||||
@@ -633,7 +633,7 @@ export const OpensAnalyticsForNonAdmins: Story = {
|
||||
await waitFor(() => {
|
||||
expect(
|
||||
screen.getByText(
|
||||
"Review your personal chat usage and cost breakdowns.",
|
||||
"Review your personal Coder Agents usage and cost breakdowns.",
|
||||
),
|
||||
).toBeInTheDocument();
|
||||
});
|
||||
@@ -650,7 +650,7 @@ export const OpensSettingsForAdmins: Story = {
|
||||
await waitFor(() => {
|
||||
expect(
|
||||
screen.getByText(
|
||||
"Custom instructions that shape how the agent responds in your chats.",
|
||||
"Custom instructions that shape how the agent responds in your conversations.",
|
||||
),
|
||||
).toBeInTheDocument();
|
||||
});
|
||||
@@ -670,7 +670,7 @@ export const OpensSettingsForNonAdmins: Story = {
|
||||
await waitFor(() => {
|
||||
expect(
|
||||
screen.getByText(
|
||||
"Custom instructions that shape how the agent responds in your chats.",
|
||||
"Custom instructions that shape how the agent responds in your conversations.",
|
||||
),
|
||||
).toBeInTheDocument();
|
||||
});
|
||||
@@ -688,7 +688,7 @@ export const SettingsViewResets: Story = {
|
||||
await waitFor(() => {
|
||||
expect(
|
||||
screen.getByText(
|
||||
"Custom instructions that shape how the agent responds in your chats.",
|
||||
"Custom instructions that shape how the agent responds in your conversations.",
|
||||
),
|
||||
).toBeInTheDocument();
|
||||
});
|
||||
@@ -698,13 +698,13 @@ export const SettingsViewResets: Story = {
|
||||
await waitFor(() => {
|
||||
expect(
|
||||
screen.getByText(
|
||||
"Review deployment chat usage and drill into individual users.",
|
||||
"Review deployment Coder Agents usage and drill into individual users.",
|
||||
),
|
||||
).toBeInTheDocument();
|
||||
});
|
||||
|
||||
// Go back to chats
|
||||
const backButton = screen.getByLabelText("Back to chats");
|
||||
// Go back to conversations
|
||||
const backButton = screen.getByLabelText("Back to Agents");
|
||||
await userEvent.click(backButton);
|
||||
|
||||
// Re-open settings, should reset to Behavior
|
||||
@@ -712,7 +712,7 @@ export const SettingsViewResets: Story = {
|
||||
await waitFor(() => {
|
||||
expect(
|
||||
screen.getByText(
|
||||
"Custom instructions that shape how the agent responds in your chats.",
|
||||
"Custom instructions that shape how the agent responds in your conversations.",
|
||||
),
|
||||
).toBeInTheDocument();
|
||||
});
|
||||
|
||||
@@ -24,7 +24,7 @@ const mock403Error = Object.assign(
|
||||
statusText: "Forbidden",
|
||||
data: {
|
||||
message: "Forbidden.",
|
||||
detail: "Insufficient permissions to create chat.",
|
||||
detail: "Insufficient permissions to use Coder Agents.",
|
||||
},
|
||||
headers: {},
|
||||
config: {},
|
||||
|
||||
@@ -30,7 +30,7 @@ export const ChatAccessDeniedAlert: FC = () => {
|
||||
>
|
||||
<p className="m-0 font-medium">Permission required</p>
|
||||
<p className="m-0 mt-1 text-sm text-content-secondary">
|
||||
You don't have permission to create chats. Contact your Coder
|
||||
You don't have permission to use Coder Agents. Contact your Coder
|
||||
administrator for access. Refresh this page after access has been
|
||||
granted.
|
||||
</p>
|
||||
|
||||
@@ -298,10 +298,13 @@ export const ChatCostSummaryView: FC<ChatCostSummaryViewProps> = ({
|
||||
</div>
|
||||
|
||||
<div className="overflow-x-auto rounded-lg border border-border-default">
|
||||
<Table className="text-sm" aria-label="Cost breakdown by chat">
|
||||
<Table
|
||||
className="text-sm"
|
||||
aria-label="Cost breakdown by conversation"
|
||||
>
|
||||
<TableHeader>
|
||||
<TableRow className="text-left text-xs font-medium uppercase tracking-wide text-content-secondary">
|
||||
<TableHead className="px-4 py-3">Chat</TableHead>
|
||||
<TableHead className="px-4 py-3">Conversation</TableHead>
|
||||
<TableHead className="px-4 py-3 text-right">Cost</TableHead>
|
||||
<TableHead className="px-4 py-3 text-right">
|
||||
Messages
|
||||
@@ -325,7 +328,7 @@ export const ChatCostSummaryView: FC<ChatCostSummaryViewProps> = ({
|
||||
<TableCell className="px-4 py-3">
|
||||
{chat.chat_title || (
|
||||
<span className="italic text-content-secondary">
|
||||
Untitled chat
|
||||
Untitled conversation
|
||||
</span>
|
||||
)}
|
||||
</TableCell>
|
||||
|
||||
@@ -39,7 +39,7 @@ export const ChatSummarizedTool: React.FC<{
|
||||
<TriangleAlertIcon className="h-3.5 w-3.5 shrink-0 text-content-secondary" />
|
||||
</TooltipTrigger>
|
||||
<TooltipContent>
|
||||
{errorMessage || "Failed to summarize chat"}
|
||||
{errorMessage || "Failed to summarize conversation"}
|
||||
</TooltipContent>
|
||||
</Tooltip>
|
||||
)}
|
||||
|
||||
@@ -341,8 +341,8 @@ export const ModelsSection: FC<ModelsSectionProps> = ({
|
||||
{!modelConfig.enabled
|
||||
? "Cannot set a disabled model as default"
|
||||
: modelConfig.is_default
|
||||
? "Pinned as default for new chats"
|
||||
: "Pin as default for new chats"}
|
||||
? "Pinned as default for new conversations"
|
||||
: "Pin as default for new conversations"}
|
||||
</TooltipContent>
|
||||
</Tooltip>
|
||||
<ChevronRightIcon className="h-5 w-5 shrink-0 text-content-secondary" />
|
||||
|
||||
@@ -64,7 +64,7 @@ const AVAILABILITY_OPTIONS = [
|
||||
{
|
||||
value: "force_on",
|
||||
label: "Force On",
|
||||
description: "Always injected into every chat session.",
|
||||
description: "Always injected into every conversation.",
|
||||
},
|
||||
{
|
||||
value: "default_on",
|
||||
@@ -158,7 +158,7 @@ const ServerList: FC<ServerListProps> = ({
|
||||
label={sectionLabel ?? "MCP Servers"}
|
||||
description={
|
||||
sectionDescription ??
|
||||
"Configure external MCP servers that provide additional tools for AI chat sessions."
|
||||
"Configure external MCP servers that provide additional tools for Coder Agents."
|
||||
}
|
||||
badge={sectionBadge}
|
||||
action={
|
||||
@@ -744,7 +744,7 @@ const ServerForm: FC<ServerFormProps> = ({
|
||||
<Field
|
||||
label="Availability"
|
||||
htmlFor={`${formId}-availability`}
|
||||
description="Controls how this server appears in new chats."
|
||||
description="Controls how this server appears in new conversations."
|
||||
>
|
||||
<Select
|
||||
value={form.values.availability}
|
||||
|
||||
@@ -1221,7 +1221,7 @@ export const AgentsSidebar: FC<AgentsSidebarProps> = (props) => {
|
||||
asChild
|
||||
variant="subtle"
|
||||
size="icon"
|
||||
aria-label="Back to chats"
|
||||
aria-label="Back to Agents"
|
||||
className="relative z-10 h-7 w-7 min-w-0 text-content-secondary hover:text-content-primary"
|
||||
>
|
||||
<Link
|
||||
|
||||
@@ -182,8 +182,8 @@ export const UserCompactionThresholdSettings: FC<
|
||||
Context Compaction
|
||||
</h3>
|
||||
<p className="!mt-0.5 m-0 text-xs text-content-secondary">
|
||||
Control when chat context is automatically summarized for each model.
|
||||
Setting 100% means the chat will never auto-compact.
|
||||
Control when conversation context is automatically summarized for each
|
||||
model. Setting 100% means the conversation will never auto-compact.
|
||||
</p>
|
||||
<div className="flex items-center gap-2 text-sm text-content-secondary">
|
||||
<Spinner loading className="h-4 w-4" />
|
||||
@@ -200,8 +200,8 @@ export const UserCompactionThresholdSettings: FC<
|
||||
Context Compaction
|
||||
</h3>
|
||||
<p className="!mt-0.5 m-0 text-xs text-content-secondary">
|
||||
Control when chat context is automatically summarized for each model.
|
||||
Setting 100% means the chat will never auto-compact.
|
||||
Control when conversation context is automatically summarized for each
|
||||
model. Setting 100% means the conversation will never auto-compact.
|
||||
</p>
|
||||
<p className="m-0 text-xs text-content-destructive">
|
||||
{getErrorMessage(
|
||||
@@ -219,8 +219,8 @@ export const UserCompactionThresholdSettings: FC<
|
||||
Context Compaction
|
||||
</h3>
|
||||
<p className="!mt-0.5 m-0 text-xs text-content-secondary">
|
||||
Control when chat context is automatically summarized for each model.
|
||||
Setting 100% means the chat will never auto-compact.
|
||||
Control when conversation context is automatically summarized for each
|
||||
model. Setting 100% means the conversation will never auto-compact.
|
||||
</p>
|
||||
{isLoadingModelConfigs ? (
|
||||
<div className="flex items-center gap-2 text-sm text-content-secondary">
|
||||
|
||||
@@ -29,7 +29,7 @@ const roleDescriptions: Record<string, string> = {
|
||||
"user-admin": "User admin can manage all users and groups.",
|
||||
"template-admin": "Template admin can manage all templates and workspaces.",
|
||||
auditor: "Auditor can access the audit logs.",
|
||||
"agents-access": "Coder Agents User allows creating and using AI chats.",
|
||||
"agents-access": "Coder Agents User allows creating and using Coder Agents.",
|
||||
member:
|
||||
"Everybody is a member. This is a shared and default role for all users.",
|
||||
};
|
||||
|
||||
@@ -227,7 +227,7 @@ export const WorkspacesTable: FC<WorkspacesTableProps> = ({
|
||||
<Link
|
||||
to={`/agents/${chatsByWorkspace[workspace.id]}`}
|
||||
onClick={(e) => e.stopPropagation()}
|
||||
aria-label={`View agent chat for ${workspace.name}`}
|
||||
aria-label={`View agent conversation for ${workspace.name}`}
|
||||
>
|
||||
Agent
|
||||
</Link>
|
||||
|
||||
Reference in New Issue
Block a user