@fresh-editor/fresh-editor 0.1.70 → 0.1.74

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -36,46 +36,46 @@
36
36
  "panel.log_footer": "{count} commits | Up/Down/j/k: navigate | RET: show | y: yank hash | r: refresh | q: quit",
37
37
  "panel.detail_footer": "Up/Down/j/k: navigate | RET: open file at line | q: back to log"
38
38
  },
39
- "es": {
40
- "cmd.git_log": "Registro Git",
41
- "cmd.git_log_desc": "Mostrar registro git en interfaz estilo magit",
42
- "cmd.git_log_close": "Registro Git: Cerrar",
43
- "cmd.git_log_close_desc": "Cerrar el panel de registro git",
44
- "cmd.git_log_refresh": "Registro Git: Actualizar",
45
- "cmd.git_log_refresh_desc": "Actualizar el registro git",
39
+ "cs": {
40
+ "cmd.git_log": "Git Log",
41
+ "cmd.git_log_desc": "Zobrazit git log v rozhrani stylu magit",
42
+ "cmd.git_log_close": "Git Log: Zavrit",
43
+ "cmd.git_log_close_desc": "Zavrit panel git logu",
44
+ "cmd.git_log_refresh": "Git Log: Obnovit",
45
+ "cmd.git_log_refresh_desc": "Obnovit git log",
46
46
 
47
- "status.already_open": "El registro git ya esta abierto",
48
- "status.loading": "Cargando registro git...",
49
- "status.no_commits": "No se encontraron commits o no es un repositorio git",
50
- "status.closed": "Registro git cerrado",
51
- "status.failed_open": "Error al abrir el panel de registro git",
52
- "status.refreshing": "Actualizando registro git...",
53
- "status.refreshed": "Registro git actualizado: {count} commits",
54
- "status.log_ready": "Registro git: {count} commits | Arriba/Abajo: navegar | RET: mostrar | q: salir",
47
+ "status.already_open": "Git log je jiz otevren",
48
+ "status.loading": "Nacitam git log...",
49
+ "status.no_commits": "Zadne commity nenalezeny nebo to neni git repozitar",
50
+ "status.closed": "Git log zavren",
51
+ "status.failed_open": "Nepodarilo se otevrit panel git logu",
52
+ "status.refreshing": "Obnovuji git log...",
53
+ "status.refreshed": "Git log obnoven: {count} commitu",
54
+ "status.log_ready": "Git log: {count} commitu | Nahoru/Dolu: navigace | RET: zobrazit | q: ukoncit",
55
55
  "status.commit_position": "Commit {current}/{total}",
56
- "status.move_to_commit": "Mueve el cursor a una linea de commit",
57
- "status.loading_commit": "Cargando commit {hash}...",
58
- "status.commit_ready": "Commit {hash} | Arriba/Abajo: navegar | RET: abrir archivo | q: volver",
59
- "status.failed_open_details": "Error al abrir detalles del commit",
60
- "status.hash_copied": "Copiado: {short} ({full})",
56
+ "status.move_to_commit": "Presunte kurzor na radek commitu",
57
+ "status.loading_commit": "Nacitam commit {hash}...",
58
+ "status.commit_ready": "Commit {hash} | Nahoru/Dolu: navigace | RET: otevrit soubor | q: zpet",
59
+ "status.failed_open_details": "Nepodarilo se otevrit detaily commitu",
60
+ "status.hash_copied": "Zkopirovano: {short} ({full})",
61
61
  "status.hash_display": "Hash: {hash}",
62
- "status.git_error": "Error de registro git: {error}",
63
- "status.error_fetching_diff": "Error al obtener diff: {error}",
64
- "status.file_loading": "Cargando {file} en {hash}...",
65
- "status.file_not_found": "Archivo {file} no encontrado en commit {hash}",
66
- "status.file_view_ready": "{file} @ {hash} (solo lectura) | Objetivo: linea {line} | q: volver",
67
- "status.failed_open_file": "Error al abrir {file}",
68
- "status.move_to_diff_with_context": "Mueve el cursor a una linea de diff con contexto de archivo",
69
- "status.move_to_diff": "Mueve el cursor a una linea de diff",
62
+ "status.git_error": "Chyba git logu: {error}",
63
+ "status.error_fetching_diff": "Chyba pri ziskavani diffu: {error}",
64
+ "status.file_loading": "Nacitam {file} v {hash}...",
65
+ "status.file_not_found": "Soubor {file} nenalezen v commitu {hash}",
66
+ "status.file_view_ready": "{file} @ {hash} (pouze pro cteni) | Cil: radek {line} | q: zpet",
67
+ "status.failed_open_file": "Nepodarilo se otevrit {file}",
68
+ "status.move_to_diff_with_context": "Presunte kurzor na radek diffu s kontextem souboru",
69
+ "status.move_to_diff": "Presunte kurzor na radek diffu",
70
70
 
71
- "panel.commits_header": "Commits:",
72
- "panel.no_commits": " No se encontraron commits",
73
- "panel.log_footer": "{count} commits | Arriba/Abajo/j/k: navegar | RET: mostrar | y: copiar hash | r: actualizar | q: salir",
74
- "panel.detail_footer": "Arriba/Abajo/j/k: navegar | RET: abrir archivo en linea | q: volver al registro"
71
+ "panel.commits_header": "Commity:",
72
+ "panel.no_commits": " Zadne commity nenalezeny",
73
+ "panel.log_footer": "{count} commitu | Nahoru/Dolu/j/k: navigace | RET: zobrazit | y: kopirovat hash | r: obnovit | q: ukoncit",
74
+ "panel.detail_footer": "Nahoru/Dolu/j/k: navigace | RET: otevrit soubor na radku | q: zpet do logu"
75
75
  },
76
76
  "de": {
77
77
  "cmd.git_log": "Git-Protokoll",
78
- "cmd.git_log_desc": "Git-Protokoll in Magit-Stil-Oberflache anzeigen",
78
+ "cmd.git_log_desc": "Git-Protokoll in Magit-Stil-Oberflaeche anzeigen",
79
79
  "cmd.git_log_close": "Git-Protokoll: Schliessen",
80
80
  "cmd.git_log_close_desc": "Git-Protokoll-Panel schliessen",
81
81
  "cmd.git_log_refresh": "Git-Protokoll: Aktualisieren",
@@ -110,6 +110,43 @@
110
110
  "panel.log_footer": "{count} Commits | Auf/Ab/j/k: navigieren | RET: anzeigen | y: Hash kopieren | r: aktualisieren | q: beenden",
111
111
  "panel.detail_footer": "Auf/Ab/j/k: navigieren | RET: Datei bei Zeile oeffnen | q: zurueck zum Protokoll"
112
112
  },
113
+ "es": {
114
+ "cmd.git_log": "Registro Git",
115
+ "cmd.git_log_desc": "Mostrar registro git en interfaz estilo magit",
116
+ "cmd.git_log_close": "Registro Git: Cerrar",
117
+ "cmd.git_log_close_desc": "Cerrar el panel de registro git",
118
+ "cmd.git_log_refresh": "Registro Git: Actualizar",
119
+ "cmd.git_log_refresh_desc": "Actualizar el registro git",
120
+
121
+ "status.already_open": "El registro git ya esta abierto",
122
+ "status.loading": "Cargando registro git...",
123
+ "status.no_commits": "No se encontraron commits o no es un repositorio git",
124
+ "status.closed": "Registro git cerrado",
125
+ "status.failed_open": "Error al abrir el panel de registro git",
126
+ "status.refreshing": "Actualizando registro git...",
127
+ "status.refreshed": "Registro git actualizado: {count} commits",
128
+ "status.log_ready": "Registro git: {count} commits | Arriba/Abajo: navegar | RET: mostrar | q: salir",
129
+ "status.commit_position": "Commit {current}/{total}",
130
+ "status.move_to_commit": "Mueve el cursor a una linea de commit",
131
+ "status.loading_commit": "Cargando commit {hash}...",
132
+ "status.commit_ready": "Commit {hash} | Arriba/Abajo: navegar | RET: abrir archivo | q: volver",
133
+ "status.failed_open_details": "Error al abrir detalles del commit",
134
+ "status.hash_copied": "Copiado: {short} ({full})",
135
+ "status.hash_display": "Hash: {hash}",
136
+ "status.git_error": "Error de registro git: {error}",
137
+ "status.error_fetching_diff": "Error al obtener diff: {error}",
138
+ "status.file_loading": "Cargando {file} en {hash}...",
139
+ "status.file_not_found": "Archivo {file} no encontrado en commit {hash}",
140
+ "status.file_view_ready": "{file} @ {hash} (solo lectura) | Objetivo: linea {line} | q: volver",
141
+ "status.failed_open_file": "Error al abrir {file}",
142
+ "status.move_to_diff_with_context": "Mueve el cursor a una linea de diff con contexto de archivo",
143
+ "status.move_to_diff": "Mueve el cursor a una linea de diff",
144
+
145
+ "panel.commits_header": "Commits:",
146
+ "panel.no_commits": " No se encontraron commits",
147
+ "panel.log_footer": "{count} commits | Arriba/Abajo/j/k: navegar | RET: mostrar | y: copiar hash | r: actualizar | q: salir",
148
+ "panel.detail_footer": "Arriba/Abajo/j/k: navegar | RET: abrir archivo en linea | q: volver al registro"
149
+ },
113
150
  "fr": {
114
151
  "cmd.git_log": "Journal Git",
115
152
  "cmd.git_log_desc": "Afficher le journal git en interface style magit",
@@ -147,6 +184,41 @@
147
184
  "panel.log_footer": "{count} commits | Haut/Bas/j/k: naviguer | RET: afficher | y: copier hash | r: actualiser | q: quitter",
148
185
  "panel.detail_footer": "Haut/Bas/j/k: naviguer | RET: ouvrir fichier a la ligne | q: retour au journal"
149
186
  },
187
+ "it": {
188
+ "cmd.git_log": "Git Log",
189
+ "cmd.git_log_desc": "Mostra il log di git in un'interfaccia stile magit",
190
+ "cmd.git_log_close": "Git Log: Chiudi",
191
+ "cmd.git_log_close_desc": "Chiudi il pannello git log",
192
+ "cmd.git_log_refresh": "Git Log: Aggiorna",
193
+ "cmd.git_log_refresh_desc": "Aggiorna il log di git",
194
+ "status.already_open": "Git log già aperto",
195
+ "status.loading": "Caricamento git log...",
196
+ "status.no_commits": "Nessun commit trovato o non è un repository git",
197
+ "status.closed": "Git log chiuso",
198
+ "status.failed_open": "Apertura del pannello git log fallita",
199
+ "status.refreshing": "Aggiornamento git log...",
200
+ "status.refreshed": "Git log aggiornato: {count} commit",
201
+ "status.log_ready": "Git log: {count} commit | Su/Giù: naviga | RET: mostra | q: esci",
202
+ "status.commit_position": "Commit {current}/{total}",
203
+ "status.move_to_commit": "Sposta il cursore su una riga di commit",
204
+ "status.loading_commit": "Caricamento commit {hash}...",
205
+ "status.commit_ready": "Commit {hash} | Su/Giù: naviga | RET: apri file | q: indietro",
206
+ "status.failed_open_details": "Apertura dettagli commit fallita",
207
+ "status.hash_copied": "Copiato: {short} ({full})",
208
+ "status.hash_display": "Hash: {hash}",
209
+ "status.git_error": "Errore git log: {error}",
210
+ "status.error_fetching_diff": "Errore nel recupero del diff: {error}",
211
+ "status.file_loading": "Caricamento {file} a {hash}...",
212
+ "status.file_not_found": "File {file} non trovato al commit {hash}",
213
+ "status.file_view_ready": "{file} @ {hash} (sola lettura) | Destinazione: riga {line} | q: indietro",
214
+ "status.failed_open_file": "Apertura di {file} fallita",
215
+ "status.move_to_diff_with_context": "Sposta il cursore su una riga di diff con contesto file",
216
+ "status.move_to_diff": "Sposta il cursore su una riga di diff",
217
+ "panel.commits_header": "Commit:",
218
+ "panel.no_commits": " Nessun commit trovato",
219
+ "panel.log_footer": "{count} commit | Su/Giù/j/k: naviga | RET: mostra | y: copia hash | r: aggiorna | q: esci",
220
+ "panel.detail_footer": "Su/Giù/j/k: naviga | RET: apri file alla riga | q: torna al log"
221
+ },
150
222
  "ja": {
151
223
  "cmd.git_log": "Gitログ",
152
224
  "cmd.git_log_desc": "magitスタイルのインターフェースでgitログを表示",
@@ -184,7 +256,192 @@
184
256
  "panel.log_footer": "{count}件のコミット | 上/下/j/k: 移動 | RET: 表示 | y: ハッシュをコピー | r: 更新 | q: 終了",
185
257
  "panel.detail_footer": "上/下/j/k: 移動 | RET: ファイルを行で開く | q: ログに戻る"
186
258
  },
187
- "zh": {
259
+ "ko": {
260
+ "cmd.git_log": "Git 로그",
261
+ "cmd.git_log_desc": "magit 스타일 인터페이스로 git 로그 표시",
262
+ "cmd.git_log_close": "Git 로그: 닫기",
263
+ "cmd.git_log_close_desc": "git 로그 패널 닫기",
264
+ "cmd.git_log_refresh": "Git 로그: 새로고침",
265
+ "cmd.git_log_refresh_desc": "git 로그 새로고침",
266
+
267
+ "status.already_open": "Git 로그가 이미 열려 있습니다",
268
+ "status.loading": "Git 로그 로딩 중...",
269
+ "status.no_commits": "커밋을 찾을 수 없거나 git 저장소가 아닙니다",
270
+ "status.closed": "Git 로그 닫힘",
271
+ "status.failed_open": "Git 로그 패널을 열지 못했습니다",
272
+ "status.refreshing": "Git 로그 새로고침 중...",
273
+ "status.refreshed": "Git 로그 새로고침됨: {count}개 커밋",
274
+ "status.log_ready": "Git 로그: {count}개 커밋 | 위/아래: 탐색 | RET: 표시 | q: 종료",
275
+ "status.commit_position": "커밋 {current}/{total}",
276
+ "status.move_to_commit": "커서를 커밋 줄로 이동하세요",
277
+ "status.loading_commit": "커밋 {hash} 로딩 중...",
278
+ "status.commit_ready": "커밋 {hash} | 위/아래: 탐색 | RET: 파일 열기 | q: 뒤로",
279
+ "status.failed_open_details": "커밋 세부 정보를 열지 못했습니다",
280
+ "status.hash_copied": "복사됨: {short} ({full})",
281
+ "status.hash_display": "해시: {hash}",
282
+ "status.git_error": "Git 로그 오류: {error}",
283
+ "status.error_fetching_diff": "diff 가져오기 오류: {error}",
284
+ "status.file_loading": "{hash}에서 {file} 로딩 중...",
285
+ "status.file_not_found": "커밋 {hash}에서 파일 {file}을 찾을 수 없습니다",
286
+ "status.file_view_ready": "{file} @ {hash} (읽기 전용) | 대상: {line}행 | q: 뒤로",
287
+ "status.failed_open_file": "{file}을 열지 못했습니다",
288
+ "status.move_to_diff_with_context": "파일 컨텍스트가 있는 diff 줄로 커서를 이동하세요",
289
+ "status.move_to_diff": "커서를 diff 줄로 이동하세요",
290
+
291
+ "panel.commits_header": "커밋:",
292
+ "panel.no_commits": " 커밋을 찾을 수 없습니다",
293
+ "panel.log_footer": "{count}개 커밋 | 위/아래/j/k: 탐색 | RET: 표시 | y: 해시 복사 | r: 새로고침 | q: 종료",
294
+ "panel.detail_footer": "위/아래/j/k: 탐색 | RET: 해당 줄에서 파일 열기 | q: 로그로 돌아가기"
295
+ },
296
+ "pt-BR": {
297
+ "cmd.git_log": "Git Log",
298
+ "cmd.git_log_desc": "Mostrar git log em interface estilo magit",
299
+ "cmd.git_log_close": "Git Log: Fechar",
300
+ "cmd.git_log_close_desc": "Fechar o painel git log",
301
+ "cmd.git_log_refresh": "Git Log: Atualizar",
302
+ "cmd.git_log_refresh_desc": "Atualizar o git log",
303
+
304
+ "status.already_open": "Git log ja esta aberto",
305
+ "status.loading": "Carregando git log...",
306
+ "status.no_commits": "Nenhum commit encontrado ou nao e um repositorio git",
307
+ "status.closed": "Git log fechado",
308
+ "status.failed_open": "Falha ao abrir o painel git log",
309
+ "status.refreshing": "Atualizando git log...",
310
+ "status.refreshed": "Git log atualizado: {count} commits",
311
+ "status.log_ready": "Git log: {count} commits | Cima/Baixo: navegar | RET: mostrar | q: sair",
312
+ "status.commit_position": "Commit {current}/{total}",
313
+ "status.move_to_commit": "Mova o cursor para uma linha de commit",
314
+ "status.loading_commit": "Carregando commit {hash}...",
315
+ "status.commit_ready": "Commit {hash} | Cima/Baixo: navegar | RET: abrir arquivo | q: voltar",
316
+ "status.failed_open_details": "Falha ao abrir detalhes do commit",
317
+ "status.hash_copied": "Copiado: {short} ({full})",
318
+ "status.hash_display": "Hash: {hash}",
319
+ "status.git_error": "Erro git log: {error}",
320
+ "status.error_fetching_diff": "Erro ao buscar diff: {error}",
321
+ "status.file_loading": "Carregando {file} em {hash}...",
322
+ "status.file_not_found": "Arquivo {file} nao encontrado no commit {hash}",
323
+ "status.file_view_ready": "{file} @ {hash} (somente leitura) | Destino: linha {line} | q: voltar",
324
+ "status.failed_open_file": "Falha ao abrir {file}",
325
+ "status.move_to_diff_with_context": "Mova o cursor para uma linha de diff com contexto de arquivo",
326
+ "status.move_to_diff": "Mova o cursor para uma linha de diff",
327
+
328
+ "panel.commits_header": "Commits:",
329
+ "panel.no_commits": " Nenhum commit encontrado",
330
+ "panel.log_footer": "{count} commits | Cima/Baixo/j/k: navegar | RET: mostrar | y: copiar hash | r: atualizar | q: sair",
331
+ "panel.detail_footer": "Cima/Baixo/j/k: navegar | RET: abrir arquivo na linha | q: voltar ao log"
332
+ },
333
+ "ru": {
334
+ "cmd.git_log": "Git Log",
335
+ "cmd.git_log_desc": "Pokazat' git log v interfeyse stilya magit",
336
+ "cmd.git_log_close": "Git Log: Zakryt'",
337
+ "cmd.git_log_close_desc": "Zakryt' panel' git log",
338
+ "cmd.git_log_refresh": "Git Log: Obnovit'",
339
+ "cmd.git_log_refresh_desc": "Obnovit' git log",
340
+
341
+ "status.already_open": "Git log uzhe otkryt",
342
+ "status.loading": "Zagruzka git log...",
343
+ "status.no_commits": "Kommity ne naydeny ili eto ne git repozitoriy",
344
+ "status.closed": "Git log zakryt",
345
+ "status.failed_open": "Ne udalos' otkryt' panel' git log",
346
+ "status.refreshing": "Obnovlenie git log...",
347
+ "status.refreshed": "Git log obnovlen: {count} kommitov",
348
+ "status.log_ready": "Git log: {count} kommitov | Vverkh/Vniz: navigatsiya | RET: pokazat' | q: vyyti",
349
+ "status.commit_position": "Kommit {current}/{total}",
350
+ "status.move_to_commit": "Peremesstite kursor na stroku kommita",
351
+ "status.loading_commit": "Zagruzka kommita {hash}...",
352
+ "status.commit_ready": "Kommit {hash} | Vverkh/Vniz: navigatsiya | RET: otkryt' fayl | q: nazad",
353
+ "status.failed_open_details": "Ne udalos' otkryt' detali kommita",
354
+ "status.hash_copied": "Skopirovano: {short} ({full})",
355
+ "status.hash_display": "Khesh: {hash}",
356
+ "status.git_error": "Oshibka git log: {error}",
357
+ "status.error_fetching_diff": "Oshibka polucheniya diff: {error}",
358
+ "status.file_loading": "Zagruzka {file} v {hash}...",
359
+ "status.file_not_found": "Fayl {file} ne nayden v kommite {hash}",
360
+ "status.file_view_ready": "{file} @ {hash} (tol'ko dlya chteniya) | Tsel': stroka {line} | q: nazad",
361
+ "status.failed_open_file": "Ne udalos' otkryt' {file}",
362
+ "status.move_to_diff_with_context": "Peremesstite kursor na stroku diff s kontekstom fayla",
363
+ "status.move_to_diff": "Peremesstite kursor na stroku diff",
364
+
365
+ "panel.commits_header": "Kommity:",
366
+ "panel.no_commits": " Kommity ne naydeny",
367
+ "panel.log_footer": "{count} kommitov | Vverkh/Vniz/j/k: navigatsiya | RET: pokazat' | y: kopirovat' khesh | r: obnovit' | q: vyyti",
368
+ "panel.detail_footer": "Vverkh/Vniz/j/k: navigatsiya | RET: otkryt' fayl na stroke | q: nazad k logu"
369
+ },
370
+ "th": {
371
+ "cmd.git_log": "Git Log",
372
+ "cmd.git_log_desc": "แสดง git log ในอินเทอร์เฟซสไตล์ magit",
373
+ "cmd.git_log_close": "Git Log: ปิด",
374
+ "cmd.git_log_close_desc": "ปิดแผง git log",
375
+ "cmd.git_log_refresh": "Git Log: รีเฟรช",
376
+ "cmd.git_log_refresh_desc": "รีเฟรช git log",
377
+
378
+ "status.already_open": "Git log เปิดอยู่แล้ว",
379
+ "status.loading": "กำลังโหลด git log...",
380
+ "status.no_commits": "ไม่พบคอมมิตหรือไม่ใช่ git repository",
381
+ "status.closed": "ปิด git log แล้ว",
382
+ "status.failed_open": "ไม่สามารถเปิดแผง git log ได้",
383
+ "status.refreshing": "กำลังรีเฟรช git log...",
384
+ "status.refreshed": "รีเฟรช git log แล้ว: {count} คอมมิต",
385
+ "status.log_ready": "Git log: {count} คอมมิต | ขึ้น/ลง: นำทาง | RET: แสดง | q: ออก",
386
+ "status.commit_position": "คอมมิต {current}/{total}",
387
+ "status.move_to_commit": "เลื่อนเคอร์เซอร์ไปที่บรรทัดคอมมิต",
388
+ "status.loading_commit": "กำลังโหลดคอมมิต {hash}...",
389
+ "status.commit_ready": "คอมมิต {hash} | ขึ้น/ลง: นำทาง | RET: เปิดไฟล์ | q: กลับ",
390
+ "status.failed_open_details": "ไม่สามารถเปิดรายละเอียดคอมมิตได้",
391
+ "status.hash_copied": "คัดลอกแล้ว: {short} ({full})",
392
+ "status.hash_display": "แฮช: {hash}",
393
+ "status.git_error": "ข้อผิดพลาด git log: {error}",
394
+ "status.error_fetching_diff": "ข้อผิดพลาดในการดึง diff: {error}",
395
+ "status.file_loading": "กำลังโหลด {file} ที่ {hash}...",
396
+ "status.file_not_found": "ไม่พบไฟล์ {file} ในคอมมิต {hash}",
397
+ "status.file_view_ready": "{file} @ {hash} (อ่านอย่างเดียว) | เป้าหมาย: บรรทัด {line} | q: กลับ",
398
+ "status.failed_open_file": "ไม่สามารถเปิด {file} ได้",
399
+ "status.move_to_diff_with_context": "เลื่อนเคอร์เซอร์ไปที่บรรทัด diff ที่มีบริบทไฟล์",
400
+ "status.move_to_diff": "เลื่อนเคอร์เซอร์ไปที่บรรทัด diff",
401
+
402
+ "panel.commits_header": "คอมมิต:",
403
+ "panel.no_commits": " ไม่พบคอมมิต",
404
+ "panel.log_footer": "{count} คอมมิต | ขึ้น/ลง/j/k: นำทาง | RET: แสดง | y: คัดลอกแฮช | r: รีเฟรช | q: ออก",
405
+ "panel.detail_footer": "ขึ้น/ลง/j/k: นำทาง | RET: เปิดไฟล์ที่บรรทัด | q: กลับไปที่ log"
406
+ },
407
+ "uk": {
408
+ "cmd.git_log": "Git Log",
409
+ "cmd.git_log_desc": "Pokazaty git log v interfeysi stylyu magit",
410
+ "cmd.git_log_close": "Git Log: Zakryty",
411
+ "cmd.git_log_close_desc": "Zakryty panel' git log",
412
+ "cmd.git_log_refresh": "Git Log: Onovyty",
413
+ "cmd.git_log_refresh_desc": "Onovyty git log",
414
+
415
+ "status.already_open": "Git log vzhe vidkryto",
416
+ "status.loading": "Zavantazhennya git log...",
417
+ "status.no_commits": "Komity ne znaydeno abo tse ne git repozytoriy",
418
+ "status.closed": "Git log zakryto",
419
+ "status.failed_open": "Ne vdalosya vidkryty panel' git log",
420
+ "status.refreshing": "Onovlennya git log...",
421
+ "status.refreshed": "Git log onovleno: {count} komitiv",
422
+ "status.log_ready": "Git log: {count} komitiv | Vhoru/Vnyz: navihatsiya | RET: pokazaty | q: vyyty",
423
+ "status.commit_position": "Komit {current}/{total}",
424
+ "status.move_to_commit": "Peremistit' kursor na ryadok komitu",
425
+ "status.loading_commit": "Zavantazhennya komitu {hash}...",
426
+ "status.commit_ready": "Komit {hash} | Vhoru/Vnyz: navihatsiya | RET: vidkryty fayl | q: nazad",
427
+ "status.failed_open_details": "Ne vdalosya vidkryty detali komitu",
428
+ "status.hash_copied": "Skopiyovano: {short} ({full})",
429
+ "status.hash_display": "Khesh: {hash}",
430
+ "status.git_error": "Pomylka git log: {error}",
431
+ "status.error_fetching_diff": "Pomylka otrymannya diff: {error}",
432
+ "status.file_loading": "Zavantazhennya {file} v {hash}...",
433
+ "status.file_not_found": "Fayl {file} ne znaydeno v komiti {hash}",
434
+ "status.file_view_ready": "{file} @ {hash} (til'ky dlya chytannya) | Tsil': ryadok {line} | q: nazad",
435
+ "status.failed_open_file": "Ne vdalosya vidkryty {file}",
436
+ "status.move_to_diff_with_context": "Peremistit' kursor na ryadok diff z kontekstom faylu",
437
+ "status.move_to_diff": "Peremistit' kursor na ryadok diff",
438
+
439
+ "panel.commits_header": "Komity:",
440
+ "panel.no_commits": " Komity ne znaydeno",
441
+ "panel.log_footer": "{count} komitiv | Vhoru/Vnyz/j/k: navihatsiya | RET: pokazaty | y: kopiyuvaty khesh | r: onovyty | q: vyyty",
442
+ "panel.detail_footer": "Vhoru/Vnyz/j/k: navihatsiya | RET: vidkryty fayl na ryadku | q: nazad do lohu"
443
+ },
444
+ "zh-CN": {
188
445
  "cmd.git_log": "Git日志",
189
446
  "cmd.git_log_desc": "以magit风格界面显示git日志",
190
447
  "cmd.git_log_close": "Git日志: 关闭",
@@ -296,6 +296,70 @@ interface CreateVirtualBufferInCurrentSplitOptions {
296
296
  show_cursors?: boolean | null;
297
297
  /** Whether editing is disabled for this buffer (default false) */
298
298
  editing_disabled?: boolean | null;
299
+ /** Whether this buffer should be hidden from tabs (for composite source buffers) */
300
+ hidden_from_tabs?: boolean | null;
301
+ }
302
+
303
+ /** Layout configuration for composite buffers */
304
+ interface TsCompositeLayoutConfig {
305
+ /** Layout type: "side-by-side", "stacked", or "unified" */
306
+ layout_type: string;
307
+ /** Relative widths for side-by-side layout (e.g., [0.5, 0.5]) */
308
+ ratios?: number[] | null;
309
+ /** Show separator between panes */
310
+ show_separator?: boolean | null;
311
+ /** Spacing between stacked panes */
312
+ spacing?: u16 | null;
313
+ }
314
+
315
+ /** Pane style configuration */
316
+ interface TsCompositePaneStyle {
317
+ /** Background color for added lines (RGB tuple) */
318
+ add_bg?: [number, number, number] | null;
319
+ /** Background color for removed lines (RGB tuple) */
320
+ remove_bg?: [number, number, number] | null;
321
+ /** Background color for modified lines (RGB tuple) */
322
+ modify_bg?: [number, number, number] | null;
323
+ /** Gutter style: "line-numbers", "diff-markers", "both", "none" */
324
+ gutter_style?: string | null;
325
+ }
326
+
327
+ /** Source pane configuration for composite buffers */
328
+ interface TsCompositeSourceConfig {
329
+ /** Buffer ID to display in this pane */
330
+ buffer_id: number;
331
+ /** Label for the pane (shown in header) */
332
+ label?: string | null;
333
+ /** Whether the pane is editable */
334
+ editable: boolean;
335
+ /** Pane styling options */
336
+ style?: TsCompositePaneStyle | null;
337
+ }
338
+
339
+ /** Diff hunk configuration */
340
+ interface TsCompositeHunk {
341
+ /** Start line in old file (0-indexed) */
342
+ old_start: number;
343
+ /** Number of lines in old file */
344
+ old_count: number;
345
+ /** Start line in new file (0-indexed) */
346
+ new_start: number;
347
+ /** Number of lines in new file */
348
+ new_count: number;
349
+ }
350
+
351
+ /** Options for creating a composite buffer */
352
+ interface CreateCompositeBufferOptions {
353
+ /** Display name for the composite buffer (shown in tab) */
354
+ name: string;
355
+ /** Mode for keybindings (e.g., "diff-view") */
356
+ mode: string;
357
+ /** Layout configuration */
358
+ layout: TsCompositeLayoutConfig;
359
+ /** Source panes to display */
360
+ sources: TsCompositeSourceConfig[];
361
+ /** Optional diff hunks for line alignment */
362
+ hunks?: TsCompositeHunk[] | null;
299
363
  }
300
364
 
301
365
  /** JavaScript representation of ActionSpec (with optional count) */
@@ -341,6 +405,15 @@ interface EditorAPI {
341
405
  debug(message: string): void;
342
406
 
343
407
  // === Buffer Queries ===
408
+ /**
409
+ * Get the theme JSON Schema for the theme editor
410
+ *
411
+ * Returns the raw JSON Schema generated by schemars for ThemeFile.
412
+ * The schema uses standard JSON Schema format with $ref for type references.
413
+ * Plugins are responsible for parsing the schema and resolving $ref references.
414
+ * @returns JSON Schema object
415
+ */
416
+ getThemeSchema(): unknown;
344
417
  /**
345
418
  * Get the current editor configuration
346
419
  *
@@ -359,6 +432,20 @@ interface EditorAPI {
359
432
  * @returns User configuration object (sparse - only explicitly set values)
360
433
  */
361
434
  getUserConfig(): unknown;
435
+ /**
436
+ * Get the user configuration directory path
437
+ *
438
+ * Returns the absolute path to the directory where user config and themes are stored.
439
+ * e.g. ~/.config/fresh/ on Linux or ~/Library/Application Support/fresh/ on macOS.
440
+ */
441
+ getConfigDir(): string;
442
+ /**
443
+ * Get the user themes directory path
444
+ *
445
+ * Returns the absolute path to the directory where user themes are stored.
446
+ * e.g. ~/.config/fresh/themes/
447
+ */
448
+ getThemesDir(): string;
362
449
  /**
363
450
  * Get the buffer ID of the focused editor pane
364
451
  *
@@ -732,6 +819,27 @@ interface EditorAPI {
732
819
  * @returns true if prompt was started successfully
733
820
  */
734
821
  startPromptWithInitial(label: string, prompt_type: string, initial_value: string): boolean;
822
+ /**
823
+ * Create a composite buffer that displays multiple source buffers
824
+ *
825
+ * Composite buffers allow displaying multiple underlying buffers in a single
826
+ * tab/view area with custom layouts (side-by-side, stacked, unified).
827
+ * This is useful for diff views, merge conflict resolution, etc.
828
+ * @param options - Configuration for the composite buffer
829
+ * @returns Promise resolving to the buffer ID of the created composite buffer
830
+ */
831
+ createCompositeBuffer(options: CreateCompositeBufferOptions): Promise<number>;
832
+ /**
833
+ * Update line alignment for a composite buffer
834
+ * @param buffer_id - The composite buffer ID
835
+ * @param hunks - New diff hunks for alignment
836
+ */
837
+ updateCompositeAlignment(buffer_id: number, hunks: TsCompositeHunk[]): boolean;
838
+ /**
839
+ * Close a composite buffer
840
+ * @param buffer_id - The composite buffer ID to close
841
+ */
842
+ closeCompositeBuffer(buffer_id: number): boolean;
735
843
  /**
736
844
  * Send an arbitrary LSP request and receive the raw JSON response
737
845
  * @param language - Language ID (e.g., "cpp")