Skip to content

Commit 35bd927

Browse files
committed
Add commit message default configuration support for web chatbots and consolidate UI translations
- should be able to set default chatbot for commit messages, similarly how we set default agent for commit messages - place repeated translations in `apps/editor/src/views/settings/frontend/i18n/translations/common.ts` └── apps └── editor └── src ├── commands │ └── generate-commit-message-commands │ └── actions │ └── run-generate-action.ts ├── constants │ └── state-keys.ts ├── types │ └── web-configuration.ts ├── utils │ ├── cli-configuration-format-converters.ts │ └── web-configuration-format-converters.ts └── views └── settings ├── backend │ ├── message-handlers │ │ ├── handle-get-cli-configurations.ts │ │ ├── handle-get-web-configurations.ts │ │ ├── handle-select-default-cli-configuration.ts │ │ ├── handle-select-default-web-configuration.ts │ │ ├── handle-set-default-cli-configuration.ts │ │ ├── handle-set-default-web-configuration.ts │ │ └── index.ts │ └── settings-view-provider.ts ├── frontend │ ├── App.tsx │ ├── Home │ │ ├── Home.tsx │ │ ├── hooks │ │ │ └── use-scroll-to.ts │ │ ├── index.ts │ │ └── sections │ │ ├── ApiSection.tsx │ │ ├── CliSection.tsx │ │ ├── GeneralSection.tsx │ │ └── WebSection.tsx │ ├── Settings.tsx │ ├── forms │ │ ├── EditProviderForm │ │ │ ├── EditProviderForm.module.scss │ │ │ ├── EditProviderForm.tsx │ │ │ └── index.ts │ │ └── EditTemplateForm │ │ ├── EditTemplateForm.module.scss │ │ ├── EditTemplateForm.tsx │ │ └── index.ts │ ├── hooks │ │ ├── use-api-configuration-editing.ts │ │ ├── use-cli-configuration-editing.ts │ │ ├── use-provider-editing.ts │ │ ├── use-settings.ts │ │ └── use-web-configuration-editing.ts │ ├── i18n │ │ ├── translations │ │ │ ├── actions.ts │ │ │ ├── api.ts │ │ │ ├── cli.ts │ │ │ ├── common.ts │ │ │ ├── edit-provider-form.ts │ │ │ ├── edit-template-form.ts │ │ │ ├── general.ts │ │ │ ├── index.ts │ │ │ ├── sections.ts │ │ │ └── web.ts │ │ └── use-translation.tsx │ └── utils │ └── post-message.ts └── types └── messages.ts
1 parent 9b7cc21 commit 35bd927

18 files changed

Lines changed: 255 additions & 578 deletions

‎apps/editor/src/utils/web-configuration-format-converters.ts‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ export type ConfigWebConfigurationFormat = {
1414
isDefaultForCodeAtCursor?: boolean
1515
isDefaultForIntelligentSearch?: boolean
1616
isDefaultForPatchRepair?: boolean
17+
isDefaultForCommitMessage?: boolean
1718
}
1819

1920
export const config_web_configuration_to_ui_format = (

‎apps/editor/src/views/settings/backend/message-handlers/handle-get-web-configurations.ts‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,10 @@ export const handle_get_web_configurations = async (
4343
'intelligent-search':
4444
web_configurations_config.find(
4545
(c: any) => c.isDefaultForIntelligentSearch
46-
)?.name || null
46+
)?.name || null,
47+
'commit-message':
48+
web_configurations_config.find((c: any) => c.isDefaultForCommitMessage)
49+
?.name || null
4750
}
4851
})
4952
}

‎apps/editor/src/views/settings/backend/message-handlers/handle-select-default-web-configuration.ts‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,12 @@ export const handle_select_default_web_configuration = async (
9797
} else {
9898
delete new_c.isDefaultForIntelligentSearch
9999
}
100+
} else if (message.web_feature == 'commit-message') {
101+
if (c.name == selected.web_configuration_name) {
102+
new_c.isDefaultForCommitMessage = true
103+
} else {
104+
delete new_c.isDefaultForCommitMessage
105+
}
100106
}
101107
return new_c
102108
})

‎apps/editor/src/views/settings/backend/message-handlers/handle-set-default-web-configuration.ts‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,12 @@ export const handle_set_default_web_configuration = async (
2626
} else {
2727
delete new_c.isDefaultForIntelligentSearch
2828
}
29+
} else if (message.web_feature == 'commit-message') {
30+
if (c.name == message.web_configuration_name) {
31+
new_c.isDefaultForCommitMessage = true
32+
} else {
33+
delete new_c.isDefaultForCommitMessage
34+
}
2935
}
3036
return new_c
3137
})

‎apps/editor/src/views/settings/frontend/Home/Home.tsx‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ export const NAV_ITEMS_CONFIG: NavConfigItem[] = [
6868
},
6969
{
7070
id: 'section:web:group:web-defaults',
71-
label: 'web.default-configurations.title'
71+
label: 'common.defaults'
7272
},
7373
{
7474
id: 'section:api',
@@ -88,7 +88,7 @@ export const NAV_ITEMS_CONFIG: NavConfigItem[] = [
8888
},
8989
{
9090
id: 'section:api:group:api-defaults',
91-
label: 'api.default-configurations.title'
91+
label: 'common.defaults'
9292
},
9393
{
9494
id: 'section:cli',
@@ -100,7 +100,7 @@ export const NAV_ITEMS_CONFIG: NavConfigItem[] = [
100100
},
101101
{
102102
id: 'section:cli:group:agent-defaults',
103-
label: 'cli.default-configurations.title'
103+
label: 'common.defaults'
104104
}
105105
]
106106

‎apps/editor/src/views/settings/frontend/Home/sections/ApiSection.tsx‎

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -342,11 +342,11 @@ export const ApiSection = forwardRef<HTMLDivElement, Props>((props, ref) => {
342342
}
343343
>
344344
<UiGroup
345-
title={t('api.default-configurations.title')}
345+
title={t('common.defaults')}
346346
is_disabled={props.api_configurations.length === 0}
347347
>
348348
<DefaultConfigurationSelector
349-
title={t('api.default-configurations.tool.code-at-cursor')}
349+
title={t('common.code-at-cursor')}
350350
value={props.defaults['code-at-cursor'] || null}
351351
configurations={selector_configurations}
352352
on_unset={() =>
@@ -357,11 +357,11 @@ export const ApiSection = forwardRef<HTMLDivElement, Props>((props, ref) => {
357357
}
358358
translations={{
359359
select: t('api.configurations.action.select-default'),
360-
unset: t('api.configurations.action.unset-default')
360+
unset: t('common.unset-default')
361361
}}
362362
/>
363363
<DefaultConfigurationSelector
364-
title={t('api.default-configurations.tool.commit-message')}
364+
title={t('common.commit-message')}
365365
value={props.defaults['commit-message'] || null}
366366
configurations={selector_configurations}
367367
on_unset={() =>
@@ -372,11 +372,11 @@ export const ApiSection = forwardRef<HTMLDivElement, Props>((props, ref) => {
372372
}
373373
translations={{
374374
select: t('api.configurations.action.select-default'),
375-
unset: t('api.configurations.action.unset-default')
375+
unset: t('common.unset-default')
376376
}}
377377
/>
378378
<DefaultConfigurationSelector
379-
title={t('api.default-configurations.tool.intelligent-search')}
379+
title={t('common.intelligent-search')}
380380
value={props.defaults['intelligent-search'] || null}
381381
configurations={selector_configurations}
382382
on_unset={() =>
@@ -387,11 +387,11 @@ export const ApiSection = forwardRef<HTMLDivElement, Props>((props, ref) => {
387387
}
388388
translations={{
389389
select: t('api.configurations.action.select-default'),
390-
unset: t('api.configurations.action.unset-default')
390+
unset: t('common.unset-default')
391391
}}
392392
/>
393393
<DefaultConfigurationSelector
394-
title={t('api.default-configurations.tool.patch-repair')}
394+
title={t('common.patch-repair')}
395395
value={props.defaults['patch-repair'] || null}
396396
configurations={selector_configurations}
397397
on_unset={() =>
@@ -402,11 +402,11 @@ export const ApiSection = forwardRef<HTMLDivElement, Props>((props, ref) => {
402402
}
403403
translations={{
404404
select: t('api.configurations.action.select-default'),
405-
unset: t('api.configurations.action.unset-default')
405+
unset: t('common.unset-default')
406406
}}
407407
/>
408408
<DefaultConfigurationSelector
409-
title={t('api.default-configurations.tool.voice-input')}
409+
title={t('common.voice-input')}
410410
value={props.defaults['voice-input'] || null}
411411
configurations={selector_configurations}
412412
on_unset={() =>
@@ -417,7 +417,7 @@ export const ApiSection = forwardRef<HTMLDivElement, Props>((props, ref) => {
417417
}
418418
translations={{
419419
select: t('api.configurations.action.select-default'),
420-
unset: t('api.configurations.action.unset-default')
420+
unset: t('common.unset-default')
421421
}}
422422
/>
423423
</UiGroup>

‎apps/editor/src/views/settings/frontend/Home/sections/CliSection.tsx‎

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -169,11 +169,11 @@ export const CliSection = forwardRef<HTMLDivElement, Props>((props, ref) => {
169169
}
170170
>
171171
<UiGroup
172-
title={t('cli.default-configurations.title')}
172+
title={t('common.defaults')}
173173
is_disabled={props.cli_configurations.length === 0}
174174
>
175175
<DefaultConfigurationSelector
176-
title={t('cli.default-configurations.tool.agentic-search')}
176+
title={t('common.agentic-search')}
177177
value={props.agent_defaults['agentic-search'] || null}
178178
configurations={selector_configurations}
179179
on_unset={() =>
@@ -184,11 +184,11 @@ export const CliSection = forwardRef<HTMLDivElement, Props>((props, ref) => {
184184
}
185185
translations={{
186186
select: t('agents.configurations.action.select-default'),
187-
unset: t('agents.configurations.action.unset-default')
187+
unset: t('common.unset-default')
188188
}}
189189
/>
190190
<DefaultConfigurationSelector
191-
title={t('cli.default-configurations.tool.code-at-cursor')}
191+
title={t('common.code-at-cursor')}
192192
value={props.agent_defaults['code-at-cursor'] || null}
193193
configurations={selector_configurations}
194194
on_unset={() =>
@@ -199,11 +199,11 @@ export const CliSection = forwardRef<HTMLDivElement, Props>((props, ref) => {
199199
}
200200
translations={{
201201
select: t('agents.configurations.action.select-default'),
202-
unset: t('agents.configurations.action.unset-default')
202+
unset: t('common.unset-default')
203203
}}
204204
/>
205205
<DefaultConfigurationSelector
206-
title={t('cli.default-configurations.tool.commit-message')}
206+
title={t('common.commit-message')}
207207
value={props.agent_defaults['commit-message'] || null}
208208
configurations={selector_configurations}
209209
on_unset={() =>
@@ -214,11 +214,11 @@ export const CliSection = forwardRef<HTMLDivElement, Props>((props, ref) => {
214214
}
215215
translations={{
216216
select: t('agents.configurations.action.select-default'),
217-
unset: t('agents.configurations.action.unset-default')
217+
unset: t('common.unset-default')
218218
}}
219219
/>
220220
<DefaultConfigurationSelector
221-
title={t('cli.default-configurations.tool.intelligent-search')}
221+
title={t('common.intelligent-search')}
222222
value={props.agent_defaults['intelligent-search'] || null}
223223
configurations={selector_configurations}
224224
on_unset={() =>
@@ -229,11 +229,11 @@ export const CliSection = forwardRef<HTMLDivElement, Props>((props, ref) => {
229229
}
230230
translations={{
231231
select: t('agents.configurations.action.select-default'),
232-
unset: t('agents.configurations.action.unset-default')
232+
unset: t('common.unset-default')
233233
}}
234234
/>
235235
<DefaultConfigurationSelector
236-
title={t('cli.default-configurations.tool.patch-repair')}
236+
title={t('common.patch-repair')}
237237
value={props.agent_defaults['patch-repair'] || null}
238238
configurations={selector_configurations}
239239
on_unset={() =>
@@ -244,11 +244,11 @@ export const CliSection = forwardRef<HTMLDivElement, Props>((props, ref) => {
244244
}
245245
translations={{
246246
select: t('agents.configurations.action.select-default'),
247-
unset: t('agents.configurations.action.unset-default')
247+
unset: t('common.unset-default')
248248
}}
249249
/>
250250
<DefaultConfigurationSelector
251-
title={t('cli.default-configurations.tool.voice-input')}
251+
title={t('common.voice-input')}
252252
value={props.agent_defaults['voice-input'] || null}
253253
configurations={selector_configurations}
254254
on_unset={() =>
@@ -259,7 +259,7 @@ export const CliSection = forwardRef<HTMLDivElement, Props>((props, ref) => {
259259
}
260260
translations={{
261261
select: t('agents.configurations.action.select-default'),
262-
unset: t('agents.configurations.action.unset-default')
262+
unset: t('common.unset-default')
263263
}}
264264
/>
265265
</UiGroup>

‎apps/editor/src/views/settings/frontend/Home/sections/GeneralSection.tsx‎

Lines changed: 7 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -224,21 +224,15 @@ export const GeneralSection = forwardRef<HTMLDivElement, Props>(
224224
options={[
225225
{
226226
value: 'ask',
227-
label: t(
228-
'general.commits.use-context-files-in-commit-message-prompt.ask'
229-
)
227+
label: t('common.ask')
230228
},
231229
{
232230
value: 'always',
233-
label: t(
234-
'general.commits.use-context-files-in-commit-message-prompt.always'
235-
)
231+
label: t('common.always')
236232
},
237233
{
238234
value: 'never',
239-
label: t(
240-
'general.commits.use-context-files-in-commit-message-prompt.never'
241-
)
235+
label: t('common.never')
242236
}
243237
]}
244238
value={props.use_context_files_in_commit_message_prompt}
@@ -258,21 +252,15 @@ export const GeneralSection = forwardRef<HTMLDivElement, Props>(
258252
options={[
259253
{
260254
value: 'ask',
261-
label: t(
262-
'general.commits.attach-ascii-tree-of-context.ask'
263-
)
255+
label: t('common.ask')
264256
},
265257
{
266258
value: 'always',
267-
label: t(
268-
'general.commits.attach-ascii-tree-of-context.always'
269-
)
259+
label: t('common.always')
270260
},
271261
{
272262
value: 'never',
273-
label: t(
274-
'general.commits.attach-ascii-tree-of-context.never'
275-
)
263+
label: t('common.never')
276264
}
277265
]}
278266
value={props.attach_ascii_tree_of_context}
@@ -336,7 +324,7 @@ export const GeneralSection = forwardRef<HTMLDivElement, Props>(
336324
options={[
337325
{
338326
value: 'ask',
339-
label: t('general.voice-input.default-action.ask')
327+
label: t('common.ask')
340328
},
341329
{
342330
value: 'send-request',

‎apps/editor/src/views/settings/frontend/Home/sections/WebSection.tsx‎

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -339,11 +339,11 @@ export const WebSection = forwardRef<HTMLDivElement, Props>((props, ref) => {
339339
}
340340
>
341341
<UiGroup
342-
title={t('web.default-configurations.title')}
342+
title={t('common.defaults')}
343343
is_disabled={props.web_configurations.length === 0}
344344
>
345345
<DefaultConfigurationSelector
346-
title={t('web.default-configurations.tool.code-at-cursor')}
346+
title={t('common.code-at-cursor')}
347347
value={props.web_defaults['code-at-cursor'] || null}
348348
configurations={selector_configurations}
349349
on_unset={() =>
@@ -354,11 +354,11 @@ export const WebSection = forwardRef<HTMLDivElement, Props>((props, ref) => {
354354
}
355355
translations={{
356356
select: t('chatbots.configurations.action.select-default'),
357-
unset: t('chatbots.configurations.action.unset-default')
357+
unset: t('common.unset-default')
358358
}}
359359
/>
360360
<DefaultConfigurationSelector
361-
title={t('web.default-configurations.tool.intelligent-search')}
361+
title={t('common.intelligent-search')}
362362
value={props.web_defaults['intelligent-search'] || null}
363363
configurations={selector_configurations}
364364
on_unset={() =>
@@ -369,11 +369,11 @@ export const WebSection = forwardRef<HTMLDivElement, Props>((props, ref) => {
369369
}
370370
translations={{
371371
select: t('chatbots.configurations.action.select-default'),
372-
unset: t('chatbots.configurations.action.unset-default')
372+
unset: t('common.unset-default')
373373
}}
374374
/>
375375
<DefaultConfigurationSelector
376-
title={t('web.default-configurations.tool.patch-repair')}
376+
title={t('common.patch-repair')}
377377
value={props.web_defaults['patch-repair'] || null}
378378
configurations={selector_configurations}
379379
on_unset={() =>
@@ -384,7 +384,22 @@ export const WebSection = forwardRef<HTMLDivElement, Props>((props, ref) => {
384384
}
385385
translations={{
386386
select: t('chatbots.configurations.action.select-default'),
387-
unset: t('chatbots.configurations.action.unset-default')
387+
unset: t('common.unset-default')
388+
}}
389+
/>
390+
<DefaultConfigurationSelector
391+
title={t('common.commit-message')}
392+
value={props.web_defaults['commit-message'] || null}
393+
configurations={selector_configurations}
394+
on_unset={() =>
395+
props.on_set_default_web_configuration('commit-message', null)
396+
}
397+
on_select={() =>
398+
props.on_select_default_web_configuration('commit-message')
399+
}
400+
translations={{
401+
select: t('chatbots.configurations.action.select-default'),
402+
unset: t('common.unset-default')
388403
}}
389404
/>
390405
</UiGroup>

‎apps/editor/src/views/settings/frontend/forms/EditProviderForm/EditProviderForm.tsx‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ export const EditProviderForm: React.FC<Props> = (props) => {
4545
<UiScrollable top_shadow>
4646
<div className={styles.form}>
4747
<UiFieldset>
48-
<UiField label={t('edit-provider-form.name.label')} html_for="name">
48+
<UiField label={t('common.name')} html_for="name">
4949
<UiInput
5050
id="name"
5151
type="text"

0 commit comments

Comments
 (0)