Skip to content

Commit 56cb0f4

Browse files
authored
feat(seer): Copy changes and fixup links between pages (#114918)
This updates all the labels to be "Handoff to Agent" instead of "Preferred Coding Agent" Also it adds some links to make Manage Agents more visible, so people can add their own agents in | Where | Img | | --- | --- | | Add Project to Autofix modal | <img width="655" height="144" alt="Image" src="https://github.com/user-attachments/assets/fca6b4a2-cd93-4d22-b563-c6f8846c0d91" /> | Autofix Project Details Settings page | <img width="1037" height="134" alt="Image" src="https://github.com/user-attachments/assets/0aebf76f-dcbf-4511-9c7c-eb50c6dab9ed" /> | Autofix bulk edit actions | <img width="342" height="175" alt="Image" src="https://github.com/user-attachments/assets/9fb53d4f-a7cb-4fdb-8ae5-aa0570fcd7ab" /> | Link to docs from bulk-edit actions | <img width="352" height="215" alt="Image" src="https://github.com/user-attachments/assets/5c6dcb2d-4abc-40d4-a2ed-21c7e7bb9677" />
1 parent 74b4b87 commit 56cb0f4

5 files changed

Lines changed: 76 additions & 30 deletions

File tree

static/gsApp/views/seerAutomation/components/projectAddRepoModal/projectAddRepoModal.tsx

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@ export function ProjectAddRepoModal({
261261
<form.AppField name="agent">
262262
{field => (
263263
<field.Layout.Row
264-
label={t('Preferred Coding Agent')}
264+
label={t('Handoff to Agent')}
265265
hintText={t(
266266
'Seer will always triage and perform Root Cause Analysis for you, but after that you can hand the results to an agent to create a plan, code a fix, and draft a PR.'
267267
)}
@@ -271,15 +271,27 @@ export function ProjectAddRepoModal({
271271
) : agentOptions.isError ? (
272272
<LoadingError />
273273
) : (
274-
<field.Select
275-
value={field.state.value}
276-
onChange={field.handleChange}
277-
options={agentOptions.data}
278-
isValueEqual={(a, b) =>
279-
a === b ||
280-
(typeof a === 'object' && typeof b === 'object' && a.id === b.id)
281-
}
282-
/>
274+
<Stack gap="md">
275+
<field.Select
276+
value={field.state.value}
277+
onChange={field.handleChange}
278+
options={agentOptions.data}
279+
isValueEqual={(a, b) =>
280+
a === b ||
281+
(typeof a === 'object' &&
282+
typeof b === 'object' &&
283+
a.id === b.id)
284+
}
285+
/>
286+
<Link
287+
to={{
288+
pathname: `/settings/${organization.slug}/integrations/`,
289+
query: {category: 'coding agent'},
290+
}}
291+
>
292+
{t('Manage Coding Agents')}
293+
</Link>
294+
</Stack>
283295
)}
284296
</field.Layout.Row>
285297
)}

static/gsApp/views/seerAutomation/components/projectDetails/autofixAgent.tsx

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import {z} from 'zod';
44

55
import {FeatureBadge} from '@sentry/scraps/badge';
66
import {AutoSaveForm, FieldGroup} from '@sentry/scraps/form';
7-
import {Flex} from '@sentry/scraps/layout';
7+
import {Flex, Stack} from '@sentry/scraps/layout';
88
import {ExternalLink, Link} from '@sentry/scraps/link';
99
import {Text} from '@sentry/scraps/text';
1010

@@ -102,11 +102,11 @@ export function AutofixAgent({canWrite, preference, project}: Props) {
102102
>
103103
{field => (
104104
<field.Layout.Row
105-
label={t('Preferred Coding Agent')}
105+
label={t('Handoff to Agent')}
106106
hintText={
107107
<Text>
108108
{tct(
109-
'Select the coding agent to use when proposing code changes. [manageLink:Manage Coding Agent Integrations]',
109+
'Select your preferred agent to create a plan, and code up an issue fix. Seer Agent will always be used for the Root Cause Analysis step.',
110110
{
111111
manageLink: (
112112
<Link
@@ -126,16 +126,26 @@ export function AutofixAgent({canWrite, preference, project}: Props) {
126126
) : agentOptions.isError ? (
127127
<LoadingError />
128128
) : (
129-
<field.Select
130-
disabled={Boolean(disabledReason)}
131-
value={field.state.value}
132-
onChange={field.handleChange}
133-
options={agentOptions.data}
134-
isValueEqual={(a, b) =>
135-
a === b ||
136-
(typeof a === 'object' && typeof b === 'object' && a.id === b.id)
137-
}
138-
/>
129+
<Stack gap="md">
130+
<field.Select
131+
disabled={Boolean(disabledReason)}
132+
value={field.state.value}
133+
onChange={field.handleChange}
134+
options={agentOptions.data}
135+
isValueEqual={(a, b) =>
136+
a === b ||
137+
(typeof a === 'object' && typeof b === 'object' && a.id === b.id)
138+
}
139+
/>
140+
<Link
141+
to={{
142+
pathname: `/settings/${organization.slug}/integrations/`,
143+
query: {category: 'coding agent'},
144+
}}
145+
>
146+
{t('Manage Coding Agents')}
147+
</Link>
148+
</Stack>
139149
)}
140150
</field.Layout.Row>
141151
)}

static/gsApp/views/seerAutomation/components/projectDetails/autofixRepositoriesItem.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -128,19 +128,19 @@ export function AutofixRepositoriesItem({
128128
onConfirm={onRemoveRepo}
129129
header={
130130
<Heading as="h4">
131-
{tct('Are you sure you want to remove [repo] from Seer?', {
131+
{tct('Are you sure you want to remove [repo] from Autofix?', {
132132
repo: <code>{repository.name}</code>,
133133
})}
134134
</Heading>
135135
}
136136
message={
137137
repositories.length > 1
138138
? tn(
139-
'There will still be %s other repository connected to this project for Root Cause Analysis to use.',
140-
'There will still be %s other repositories connected to this project for Root Cause Analysis to use.',
139+
'There will still be %s other repository connected to this project for Autofix to use.',
140+
'There will still be %s other repositories connected to this project for Autofix to use.',
141141
repositories.length - 1
142142
)
143-
: t('You will no longer be able to use Root Cause Analysis on your issue.')
143+
: t('Autofix will be disabled for issues in this project.')
144144
}
145145
confirmText={
146146
<Flex align="center" gap="md">

static/gsApp/views/seerAutomation/components/projectDetails/autofixRepositoriesList.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ export function AutofixRepositories({canWrite, preference, project}: Props) {
141141
<Flex padding="2xl" align="center" justify="center" gap="xl">
142142
<img src={seerConfigBug1} alt="" width="130px" height="130px" />
143143
<Stack gap="lg">
144-
<Heading as="h4">{t('Get the most out of Seer')}</Heading>
144+
<Heading as="h4">{t('Connect a repository')}</Heading>
145145
<Flex maxWidth="250px">
146146
{t(
147147
'Connect at least one repository so Seer can gather more insights from your code.'

static/gsApp/views/seerAutomation/components/projectTable/seerProjectTableHeader.tsx

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,14 @@ import {Alert} from '@sentry/scraps/alert';
66
import {Checkbox} from '@sentry/scraps/checkbox';
77
import {InfoTip} from '@sentry/scraps/info';
88
import {Flex} from '@sentry/scraps/layout';
9-
import {Link} from '@sentry/scraps/link';
9+
import {ExternalLink, Link} from '@sentry/scraps/link';
1010

1111
import {addErrorMessage, addSuccessMessage} from 'sentry/actionCreators/indicator';
1212
import {DropdownMenu} from 'sentry/components/dropdownMenu';
13+
import {DropdownMenuFooter} from 'sentry/components/dropdownMenu/footer';
1314
import type {useUpdateBulkAutofixAutomationSettings} from 'sentry/components/events/autofix/preferences/hooks/useBulkAutofixAutomationSettings';
1415
import {SimpleTable} from 'sentry/components/tables/simpleTable';
16+
import {IconOpen} from 'sentry/icons/iconOpen';
1517
import {t, tct, tn} from 'sentry/locale';
1618
import type {Organization} from 'sentry/types/organization';
1719
import type {Project} from 'sentry/types/project';
@@ -44,7 +46,7 @@ const COLUMNS = [
4446
{
4547
title: ({organization}: {organization: Organization}) => (
4648
<Flex gap="sm" align="center">
47-
{t('Preferred Coding Agent')}
49+
{t('Handoff to Agent')}
4850
<InfoTip
4951
title={tct(
5052
'Select the coding agent to use when proposing code changes. [manageLink:Manage Coding Agent Integrations]',
@@ -188,6 +190,18 @@ export function ProjectTableHeader({
188190
})) ?? []
189191
}
190192
triggerLabel={t('Agent')}
193+
menuFooter={
194+
<DropdownMenuFooter>
195+
<Link
196+
to={{
197+
pathname: `/settings/${organization.slug}/integrations/`,
198+
query: {category: 'coding agent'},
199+
}}
200+
>
201+
{t('Manage Coding Agents')}
202+
</Link>
203+
</DropdownMenuFooter>
204+
}
191205
/>
192206
<DropdownMenu
193207
isDisabled={!canWrite}
@@ -219,6 +233,16 @@ export function ProjectTableHeader({
219233
},
220234
}))}
221235
triggerLabel={t('Automation Steps')}
236+
menuFooter={
237+
<DropdownMenuFooter>
238+
<ExternalLink href="https://docs.sentry.io/product/ai-in-sentry/seer/autofix/#how-issue-autofix-works">
239+
<Flex gap="sm" align="center">
240+
<IconOpen size="xs" />
241+
{t('Read the Docs')}
242+
</Flex>
243+
</ExternalLink>
244+
</DropdownMenuFooter>
245+
}
222246
/>
223247
</TableCellsRemainingContent>
224248
</TableHeader>

0 commit comments

Comments
 (0)