Skip to content

Commit d30b963

Browse files
committed
Add dynamic prompt inclusion in commit messages and restructure settings translations
- when committing manually, the commit message should have "prompts for commit" attached, now it does not have.
1 parent 104743d commit d30b963

21 files changed

Lines changed: 1854 additions & 0 deletions

apps/editor/src/services/git-discard-file-watcher.ts

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import * as vscode from 'vscode'
22
import * as path from 'path'
33
import { PromptsForCommitMessagesUtils } from '../utils/prompts-for-commit-messages-utils'
4+
import { simplify_prompt_symbols } from '@shared/utils/simplify-prompt-symbols'
45

56
export const setup_git_discard_file_watcher = (
67
context: vscode.ExtensionContext
@@ -16,6 +17,7 @@ export const setup_git_discard_file_watcher = (
1617
const git_api = git_extension.exports.getAPI(1)
1718

1819
const repo_states = new Map<string, Set<string>>()
20+
const previous_prompts_text_map = new Map<string, string>()
1921

2022
const update_repo_state = (repo: any) => {
2123
const workspace_root = repo.rootUri.fsPath
@@ -51,6 +53,54 @@ export const setup_git_discard_file_watcher = (
5153
}
5254

5355
repo_states.set(workspace_root, current_changes)
56+
57+
const include_prompts_setting = vscode.workspace
58+
.getConfiguration('codeWebChat')
59+
.get<boolean>('includePromptsInCommitMessages', true)
60+
61+
let relevant_prompts_text = ''
62+
63+
if (include_prompts_setting) {
64+
const all_prompts =
65+
PromptsForCommitMessagesUtils.load_all(context)[workspace_root] ||
66+
[]
67+
const staged_files = (repo.state.indexChanges || []).map(
68+
(change: any) =>
69+
path
70+
.relative(workspace_root, change.uri.fsPath)
71+
.replace(/\\/g, '/')
72+
)
73+
74+
const relevant_prompts = all_prompts.filter((p) =>
75+
p.files.some((file) => staged_files.includes(file))
76+
)
77+
78+
if (relevant_prompts.length > 0) {
79+
relevant_prompts_text =
80+
'\n\n' +
81+
relevant_prompts
82+
.map(
83+
(p) => `- ${simplify_prompt_symbols({ prompt: p.prompt })}`
84+
)
85+
.join('\n')
86+
}
87+
}
88+
89+
const previous_text =
90+
previous_prompts_text_map.get(workspace_root) || ''
91+
92+
if (previous_text !== relevant_prompts_text) {
93+
let current_value = repo.inputBox.value
94+
95+
if (previous_text && current_value.includes(previous_text)) {
96+
current_value = current_value.replace(previous_text, '')
97+
}
98+
99+
current_value = current_value.trimEnd()
100+
101+
repo.inputBox.value = current_value + relevant_prompts_text
102+
previous_prompts_text_map.set(workspace_root, relevant_prompts_text)
103+
}
54104
}
55105

56106
for (const repo of git_api.repositories) {
Lines changed: 326 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,326 @@
1+
export const actions = {
2+
'action.add-new': {
3+
en: 'Add New',
4+
pl: 'Dodaj...',
5+
'zh-cn': '添加新的',
6+
ja: '新規追加',
7+
'zh-tw': '新增',
8+
de: 'Neu hinzufügen',
9+
es: 'Añadir nuevo',
10+
fr: 'Ajouter nouveau',
11+
'pt-br': 'Adicionar Novo',
12+
ru: 'Добавить',
13+
ko: '새로 추가',
14+
it: 'Aggiungi nuovo',
15+
tr: 'Yeni Ekle',
16+
cs: 'Přidat nový',
17+
hu: 'Új Hozzáadása',
18+
bg: 'Добавяне на нов'
19+
},
20+
'action.insert-provider': {
21+
en: 'Insert a new provider below/above',
22+
pl: 'Wstaw nowego dostawcę poniżej/powyżej',
23+
'zh-cn': '在下方/上方插入新提供商',
24+
ja: '下/上に新しいプロバイダーを挿入',
25+
'zh-tw': '在下方/上方插入新供應商',
26+
de: 'Neuen Anbieter darunter/darüber einfügen',
27+
es: 'Insertar un nuevo proveedor debajo/arriba',
28+
fr: 'Insérer un nouveau fournisseur en dessous/au-dessus',
29+
'pt-br': 'Inserir um novo provedor abaixo/acima',
30+
ru: 'Вставить нового провайдера ниже/выше',
31+
ko: '아래/위에 새 제공자 삽입',
32+
it: 'Inserisci un nuovo fornitore sotto/sopra',
33+
tr: 'Aşağıya/yukarıya yeni bir sağlayıcı ekle',
34+
cs: 'Vložit nového poskytovatele pod/nad',
35+
hu: 'Új szolgáltató beszúrása alá/fölé',
36+
bg: 'Вмъкване на нов доставчик отдолу/отгоре'
37+
},
38+
'action.edit-provider': {
39+
en: 'Edit provider',
40+
pl: 'Edytuj dostawcę',
41+
'zh-cn': '编辑提供商',
42+
ja: 'プロバイダーを編集',
43+
'zh-tw': '編輯供應商',
44+
de: 'Anbieter bearbeiten',
45+
es: 'Editar proveedor',
46+
fr: 'Modifier le fournisseur',
47+
'pt-br': 'Editar provedor',
48+
ru: 'Редактировать провайдера',
49+
ko: '제공자 편집',
50+
it: 'Modifica fornitore',
51+
tr: 'Sağlayıcıyı düzenle',
52+
cs: 'Upravit poskytovatele',
53+
hu: 'Szolgáltató szerkesztése',
54+
bg: 'Редактиране на доставчик'
55+
},
56+
'action.change-api-key': {
57+
en: 'Change API key',
58+
pl: 'Zmień klucz API',
59+
'zh-cn': '更改 API 密钥',
60+
ja: 'APIキーを変更',
61+
'zh-tw': '更改 API 金鑰',
62+
de: 'API-Schlüssel ändern',
63+
es: 'Cambiar clave API',
64+
fr: 'Changer la clé API',
65+
'pt-br': 'Alterar chave da API',
66+
ru: 'Изменить API ключ',
67+
ko: 'API 키 변경',
68+
it: 'Cambia chiave API',
69+
tr: 'API anahtarını değiştir',
70+
cs: 'Změnit API klíč',
71+
hu: 'API kulcs módosítása',
72+
bg: 'Промяна на API ключ'
73+
},
74+
'action.delete-provider': {
75+
en: 'Delete provider',
76+
pl: 'Usuń dostawcę',
77+
'zh-cn': '删除提供商',
78+
ja: 'プロバイダーを削除',
79+
'zh-tw': '刪除供應商',
80+
de: 'Anbieter löschen',
81+
es: 'Eliminar proveedor',
82+
fr: 'Supprimer le fournisseur',
83+
'pt-br': 'Excluir provedor',
84+
ru: 'Удалить провайдера',
85+
ko: '제공자 삭제',
86+
it: 'Elimina fornitore',
87+
tr: 'Sağlayıcıyı sil',
88+
cs: 'Smazat poskytovatele',
89+
hu: 'Szolgáltató törlése',
90+
bg: 'Изтриване на доставчик'
91+
},
92+
'action.model-provider': {
93+
en: 'model provider',
94+
pl: 'dostawca modelu',
95+
'zh-cn': '模型提供商',
96+
ja: 'モデルプロバイダー',
97+
'zh-tw': '模型供應商',
98+
de: 'Modellanbieter',
99+
es: 'proveedor de modelos',
100+
fr: 'fournisseur de modèles',
101+
'pt-br': 'provedor de modelos',
102+
ru: 'провайдер модели',
103+
ko: '모델 제공자',
104+
it: 'fornitore di modelli',
105+
tr: 'model sağlayıcı',
106+
cs: 'poskytovatel modelu',
107+
hu: 'modell szolgáltató',
108+
bg: 'доставчик на модели'
109+
},
110+
'action.model-providers': {
111+
en: 'model providers',
112+
pl: 'dostawcy modelu',
113+
'zh-cn': '模型提供商',
114+
ja: 'モデルプロバイダー',
115+
'zh-tw': '模型供應商',
116+
de: 'Modellanbieter',
117+
es: 'proveedores de modelos',
118+
fr: 'fournisseurs de modèles',
119+
'pt-br': 'provedores de modelos',
120+
ru: 'провайдеры модели',
121+
ko: '모델 제공자',
122+
it: 'fornitori di modelli',
123+
tr: 'model sağlayıcılar',
124+
cs: 'poskytovatelé modelu',
125+
hu: 'modell szolgáltatók',
126+
bg: 'доставчици на модели'
127+
},
128+
'action.model-providers-many': {
129+
en: 'model providers',
130+
pl: 'dostawców modelu',
131+
'zh-cn': '模型提供商',
132+
ja: 'モデルプロバイダー',
133+
'zh-tw': '模型供應商',
134+
de: 'Modellanbieter',
135+
es: 'proveedores de modelos',
136+
fr: 'fournisseurs de modèles',
137+
'pt-br': 'provedores de modelos',
138+
ru: 'провайдеров модели',
139+
ko: '모델 제공자',
140+
it: 'fornitori di modelli',
141+
tr: 'model sağlayıcılar',
142+
cs: 'poskytovatelů modelu',
143+
hu: 'modell szolgáltatók',
144+
bg: 'доставчици на модели'
145+
},
146+
'action.insert-configuration': {
147+
en: 'Insert a new configuration below/above',
148+
pl: 'Wstaw nową konfigurację poniżej/powyżej',
149+
'zh-cn': '在下方/上方插入新配置',
150+
ja: '下/上に新しい設定を挿入',
151+
'zh-tw': '在下方/上方插入新設定',
152+
de: 'Neue Konfiguration darunter/darüber einfügen',
153+
es: 'Insertar una nueva configuración debajo/arriba',
154+
fr: 'Insérer une nouvelle configuration en dessous/au-dessus',
155+
'pt-br': 'Inserir uma nova configuração abaixo/acima',
156+
ru: 'Вставить новую конфигурацию ниже/выше',
157+
ko: '아래/위에 새 구성 삽입',
158+
it: 'Inserisci una nuova configurazione sotto/sopra',
159+
tr: 'Aşağıya/yukarıya yeni bir yapılandırma ekle',
160+
cs: 'Vložit novou konfiguraci pod/nad',
161+
hu: 'Új konfiguráció beszúrása alá/fölé',
162+
bg: 'Вмъкване на нова конфигурация отдолу/отгоре'
163+
},
164+
'action.edit-configuration': {
165+
en: 'Edit configuration',
166+
pl: 'Edytuj konfigurację',
167+
'zh-cn': '编辑配置',
168+
ja: '設定を編集',
169+
'zh-tw': '編輯設定',
170+
de: 'Konfiguration bearbeiten',
171+
es: 'Editar configuración',
172+
fr: 'Modifier la configuration',
173+
'pt-br': 'Editar configuration',
174+
ru: 'Редактировать конфигурацию',
175+
ko: '구성 편집',
176+
it: 'Modifica configurazione',
177+
tr: 'Yapılandırmayı düzenle',
178+
cs: 'Upravit konfiguraci',
179+
hu: 'Konfiguráció szerkesztése',
180+
bg: 'Редактиране на конфигурация'
181+
},
182+
'action.delete-configuration': {
183+
en: 'Delete configuration',
184+
pl: 'Usuń konfigurację',
185+
'zh-cn': '删除配置',
186+
ja: '設定を削除',
187+
'zh-tw': '刪除設定',
188+
de: 'Konfiguration löschen',
189+
es: 'Eliminar configuración',
190+
fr: 'Supprimer la configuration',
191+
'pt-br': 'Excluir configuração',
192+
ru: 'Удалить конфигурацию',
193+
ko: '구성 삭제',
194+
it: 'Elimina configurazione',
195+
tr: 'Yapılandırmayı sil',
196+
cs: 'Smazat konfiguraci',
197+
hu: 'Konfiguráció törlése',
198+
bg: 'Изтриване на конфигурация'
199+
},
200+
'action.set-default': {
201+
en: 'Set as default',
202+
pl: 'Ustaw jako domyślne',
203+
'zh-cn': '设为默认',
204+
ja: 'デフォルトに設定',
205+
'zh-tw': '設為預設',
206+
de: 'Als Standard festlegen',
207+
es: 'Establecer como predeterminado',
208+
fr: 'Définir par défaut',
209+
'pt-br': 'Definir como padrão',
210+
ru: 'Установить по умолчанию',
211+
ko: '기본값으로 설정',
212+
it: 'Imposta come predefinito',
213+
tr: 'Varsayılan olarak ayarla',
214+
cs: 'Nastavit jako výchozí',
215+
hu: 'Beállítás alapértelmezettként',
216+
bg: 'Задаване по подразбиране'
217+
},
218+
'action.unset-default': {
219+
en: 'Unset default',
220+
pl: 'Usuń domyślne',
221+
'zh-cn': '取消默认设置',
222+
ja: 'デフォルトを解除',
223+
'zh-tw': '取消預設設定',
224+
de: 'Standard aufheben',
225+
es: 'Quitar predeterminado',
226+
fr: 'Annuler par défaut',
227+
'pt-br': 'Remover padrão',
228+
ru: 'Снять по умолчанию',
229+
ko: '기본값 해제',
230+
it: 'Rimuovi predefinito',
231+
tr: 'Varsayılanı kaldır',
232+
cs: 'Zrušit výchozí',
233+
hu: 'Alapértelmezés törlése',
234+
bg: 'Премахване на по подразбиране'
235+
},
236+
'action.configuration': {
237+
en: 'configuration',
238+
pl: 'konfiguracja',
239+
'zh-cn': '配置',
240+
ja: '設定',
241+
'zh-tw': '設定',
242+
de: 'Konfiguration',
243+
es: 'configuración',
244+
fr: 'configuration',
245+
'pt-br': 'configuração',
246+
ru: 'конфигурация',
247+
ko: '구성',
248+
it: 'configurazione',
249+
tr: 'yapılandırma',
250+
cs: 'konfigurace',
251+
hu: 'konfiguráció',
252+
bg: 'конфигурация'
253+
},
254+
'action.configurations': {
255+
en: 'configurations',
256+
pl: 'konfiguracje',
257+
'zh-cn': '配置',
258+
ja: '設定',
259+
'zh-tw': '設定',
260+
de: 'Konfigurationen',
261+
es: 'configuraciones',
262+
fr: 'configurations',
263+
'pt-br': 'configurações',
264+
ru: 'конфигурации',
265+
ko: '구성',
266+
it: 'configurazioni',
267+
tr: 'yapılandırmalar',
268+
cs: 'konfigurace',
269+
hu: 'konfigurációk',
270+
bg: 'конфигурации'
271+
},
272+
'action.configurations-many': {
273+
en: 'configurations',
274+
pl: 'konfiguracji',
275+
'zh-cn': '配置',
276+
ja: '設定',
277+
'zh-tw': '設定',
278+
de: 'Konfigurationen',
279+
es: 'configuraciones',
280+
fr: 'configurations',
281+
'pt-br': 'configurações',
282+
ru: 'конфигураций',
283+
ko: '구성',
284+
it: 'configurazioni',
285+
tr: 'yapılandırmalar',
286+
cs: 'konfigurací',
287+
hu: 'konfigurációk',
288+
bg: 'конфигурации'
289+
},
290+
'message.missing-configuration': {
291+
en: 'Missing configuration.',
292+
pl: 'Brak konfiguracji.',
293+
'zh-cn': '缺少配置。',
294+
ja: '設定が不足しています。',
295+
'zh-tw': '缺少設定。',
296+
de: 'Fehlende Konfiguration.',
297+
es: 'Configuración faltante.',
298+
fr: 'Configuration manquante.',
299+
'pt-br': 'Configuração ausente.',
300+
ru: 'Отсутствует конфигурация.',
301+
ko: '구성이 누락되었습니다.',
302+
it: 'Configurazione mancante.',
303+
tr: 'Eksik yapılandırma.',
304+
cs: 'Chybějící konfigurace.',
305+
hu: 'Hiányzó konfiguráció.',
306+
bg: 'Липсваща конфигурация.'
307+
},
308+
'section.api-tool': {
309+
en: 'API Tool',
310+
pl: 'Narzędzie API',
311+
'zh-cn': 'API 工具',
312+
ja: 'API ツール',
313+
'zh-tw': 'API 工具',
314+
de: 'API-Tool',
315+
es: 'Herramienta API',
316+
fr: 'Outil API',
317+
'pt-br': 'Ferramenta API',
318+
ru: 'Инструмент API',
319+
ko: 'API 도구',
320+
it: 'Strumento API',
321+
tr: 'API Aracı',
322+
cs: 'Nástroj API',
323+
hu: 'API Eszköz',
324+
bg: 'API Инструмент'
325+
}
326+
} as const

0 commit comments

Comments
 (0)