dsh-gitbash-shell 0.27.0 → 0.28.0
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.
- package/CHANGELOG.md +37 -0
- package/README.md +21 -0
- package/cordis.patch.yml +5 -1
- package/dsh.plugin.json +1 -1
- package/package.json +1 -1
- package/src/bash-path.js +371 -0
- package/src/client.js +353 -7
- package/src/index.js +84 -23
- package/src/shell.js +58 -10
package/src/client.js
CHANGED
|
@@ -87,12 +87,19 @@ window.__ModuleLoader__.load({
|
|
|
87
87
|
"split.hint": "glob 的绝对 pattern(/c/.../*.md)自动拆为 path + 相对 pattern;关闭则原样传递。",
|
|
88
88
|
"code.label": "run_code 程序内路径",
|
|
89
89
|
"code.hint": "run_code 程序里写的 /c/... 等路径字面量在执行前按同一张挂载表翻译;注释、插值模板、$VAR 与非路径字符串不动,扫描有任何不确定就整份不改。 并给程序补 TEMP/TMP:空 env 下 Windows 的 os.tmpdir() 会得到 undefined\\temp,程序会静默写错地方。",
|
|
90
|
+
"bashmiss.title": "找不到 Git Bash —— 命令无法执行",
|
|
91
|
+
"bashmiss.body": "本插件只用 Git for Windows 自带的 bash(不接受 WSL、MSYS2、Cygwin 的 bash),也不会回退到 PowerShell/cmd —— 所以这里只报错,不偷偷换一个能跑的顶上。请在下面填写 bash.exe 的完整路径,或先安装 Git for Windows。",
|
|
92
|
+
"bashmiss.tried": "按顺序探测过这些位置(都被拒绝):",
|
|
93
|
+
"bashmiss.download": "去下载 Git for Windows",
|
|
94
|
+
"bashmiss.where": "也可以稍后到「设置 → 插件 → dsh-gitbash-shell」的「Git Bash 路径」里填写;host 启动日志里有同一份探测清单。",
|
|
95
|
+
"bashmiss.close": "关闭",
|
|
90
96
|
"sub.label": "子代理/队员使用 Git Bash",
|
|
91
97
|
"sub.hint": "默认开启:子代理与团队队员(含嵌套子代理)的提示词方言、路径参数翻译、结果回显与 DSH_PATH_DIALECT 环境事实与主代理一致。关闭后这些只对主代理生效,子代理按官方 shell 语义运行(提示词不改写、路径参数不翻译);注意 dsh 每个进程只有一个 shell 执行器,所以 Git Bash 二进制本身仍是全局的,此开关管的是方言/翻译层。",
|
|
92
98
|
"eol.label": "Git 行尾(与 Linux 一致)",
|
|
93
99
|
"eol.hint": "模型跑的 git 命令按 Linux 行为:core.autocrlf=input、core.eol=lf。你自己终端的 git 与仓库里的 .gitattributes 都不受影响。",
|
|
94
100
|
"bash.label": "Git Bash 路径",
|
|
95
101
|
"bash.hint": "自定义 bash.exe 完整路径,用于 /usr 等挂载的 Git 根解析;留空自动探测默认安装与 PATH。",
|
|
102
|
+
"bash.saveFailed": "保存未生效:宿主拒绝了这次写入 —— 确认路径存在且是 Git for Windows 的 bash,或查看宿主日志",
|
|
96
103
|
"bash.save": "保存",
|
|
97
104
|
"bash.saved": "已保存",
|
|
98
105
|
"adopt.label": "接管侧栏终端",
|
|
@@ -129,12 +136,19 @@ window.__ModuleLoader__.load({
|
|
|
129
136
|
"split.hint": "An absolute glob pattern (/c/.../*.md) splits into path + relative pattern; off passes it through verbatim.",
|
|
130
137
|
"code.label": "run_code program paths",
|
|
131
138
|
"code.hint": "Path literals inside a run_code program are translated through the same mount table before it runs; comments, interpolated templates, $VARs and non-path strings stay untouched, and any uncertainty leaves the whole program as written. It also seeds TEMP/TMP for the program: with an empty env Windows' os.tmpdir() returns undefined\\temp and writes land in a bogus folder.",
|
|
139
|
+
"bashmiss.title": "Git Bash not found — commands cannot run",
|
|
140
|
+
"bashmiss.body": "This plugin only accepts the bash shipped with Git for Windows (WSL, MSYS2 and Cygwin bash are refused) and never falls back to PowerShell/cmd — so it reports the failure instead of quietly swapping in something runnable. Enter the full path to bash.exe below, or install Git for Windows first.",
|
|
141
|
+
"bashmiss.tried": "Probed these locations in order (all rejected):",
|
|
142
|
+
"bashmiss.download": "Download Git for Windows",
|
|
143
|
+
"bashmiss.where": "You can also fill this in later under Settings → Plugins → dsh-gitbash-shell → “Git Bash path”; the host startup log carries the same probe list.",
|
|
144
|
+
"bashmiss.close": "Close",
|
|
132
145
|
"sub.label": "Subagents/teammates use Git Bash",
|
|
133
146
|
"sub.hint": "On (default): subagents and team members — nested ones included — get the same prompt dialect, path-argument translation, result echo and DSH_PATH_DIALECT fact as the main agent. Off: those apply to the main agent only, and delegated agents run with the official shell semantics (no prompt rewrite, no path translation). Note that dsh has exactly one shell executor per process, so the Git Bash binary stays global; this switch governs the dialect/translation layers.",
|
|
134
147
|
"eol.label": "Git line endings (Linux match)",
|
|
135
148
|
"eol.hint": "Git commands the model runs behave like Linux: core.autocrlf=input, core.eol=lf. Your own terminal's git and a repository's .gitattributes are unaffected.",
|
|
136
149
|
"bash.label": "Git Bash path",
|
|
137
150
|
"bash.hint": "Full path of a custom bash.exe for resolving /usr mounts; empty = auto-detect the default install and PATH.",
|
|
151
|
+
"bash.saveFailed": "The save did not take effect: the host refused the write — check that the path exists and points at Git for Windows’ bash, or read the host log",
|
|
138
152
|
"bash.save": "Save",
|
|
139
153
|
"bash.saved": "Saved",
|
|
140
154
|
"adopt.label": "Adopt sidebar terminal",
|
|
@@ -181,12 +195,19 @@ window.__ModuleLoader__.load({
|
|
|
181
195
|
"split.hint": "نمط glob المطلق يُقسم إلى path + نمط نسبي؛ الإيقاف يمرره كما هو.",
|
|
182
196
|
"code.label": "مسارات برامج run_code",
|
|
183
197
|
"code.hint": "تُترجم السلاسل النصية للمسارات المكتوبة داخل برنامج run_code عبر جدول التحميل نفسه قبل التشغيل؛ وتبقى التعليقات والقوالب ذات الإدراج و$VAR والسلاسل غير المسارية كما هي، وأي التباس يُبقي البرنامج كاملًا دون تغيير. وتُهيَّأ أيضًا TEMP/TMP للبرنامج: مع بيئة فارغة يعيد os.tmpdir() على ويندوز القيمة undefined\\temp فيُكتب في مكان خاطئ.",
|
|
198
|
+
"bashmiss.title": "لم يُعثر على Git Bash — لا يمكن تنفيذ الأوامر",
|
|
199
|
+
"bashmiss.body": "هذه الإضافة تقبل فقط bash المرفق مع Git for Windows (ولا تقبل bash الخاص بـ WSL أو MSYS2 أو Cygwin)، ولا ترجع أبدًا إلى PowerShell/cmd — لذلك تُبلغ عن الفشل بدل استبداله بصمت. أدخل المسار الكامل لـ bash.exe أدناه أو ثبّت Git for Windows أولًا.",
|
|
200
|
+
"bashmiss.tried": "تم فحص هذه المواقع بالترتيب (ورُفضت جميعها):",
|
|
201
|
+
"bashmiss.download": "تنزيل Git for Windows",
|
|
202
|
+
"bashmiss.where": "يمكنك أيضًا تعبئة هذا لاحقًا من «الإعدادات → الإضافات → dsh-gitbash-shell → مسار Git Bash»؛ وسجل تشغيل المضيف يحمل نفس قائمة الفحص.",
|
|
203
|
+
"bashmiss.close": "إغلاق",
|
|
184
204
|
"sub.label": "استخدام الوكلاء الفرعيين لـ Git Bash",
|
|
185
205
|
"sub.hint": "مُفعَّل (افتراضيًا): يحصل الوكلاء الفرعيون وأعضاء الفريق — بما في ذلك المتداخلون — على لهجة المطالبة وترجمة مسارات الوسائط وصدى النتائج وحقيقة DSH_PATH_DIALECT نفسها التي يحصل عليها الوكيل الرئيسي. عند الإيقاف تُطبَّق هذه على الوكيل الرئيسي فقط ويعمل الوكلاء المفوَّضون بدلالات الصدفة الرسمية (دون إعادة كتابة المطالبة أو ترجمة المسارات). لاحظ أن dsh يملك مُنفِّذ صدفة واحدًا لكل عملية، لذا يبقى ثنائي Git Bash عامًّا؛ هذا المفتاح يحكم طبقتي اللهجة والترجمة.",
|
|
186
206
|
"eol.label": "نهايات أسطر Git (مطابقة لينكس)",
|
|
187
207
|
"eol.hint": "أوامر git التي يشغّلها النموذج تتبع سلوك لينكس: core.autocrlf=input و core.eol=lf؛ لا يتأثر طرفيتك ولا ملف .gitattributes للمستودع.",
|
|
188
208
|
"bash.label": "مسار Git Bash",
|
|
189
209
|
"bash.hint": "المسار الكامل لنسخة bash.exe مخصصة؛ فارغ = اكتشاف تلقائي.",
|
|
210
|
+
"bash.saveFailed": "لم يُطبَّق الحفظ: رفض المضيف هذه الكتابة — تحقق من وجود المسار وأنه bash الخاص بـ Git for Windows، أو راجع سجل المضيف",
|
|
190
211
|
"bash.save": "حفظ",
|
|
191
212
|
"bash.saved": "تم الحفظ",
|
|
192
213
|
"adopt.label": "تبنّي طرفية الشريط الجانبي",
|
|
@@ -223,12 +244,19 @@ window.__ModuleLoader__.load({
|
|
|
223
244
|
"split.hint": "Ein absolutes Glob-Muster zerfällt in Pfad + relatives Muster; aus übergibt es unverändert.",
|
|
224
245
|
"code.label": "Pfade in run_code-Programmen",
|
|
225
246
|
"code.hint": "Pfadliterale in einem run_code-Programm werden vor dem Start über dieselbe Mount-Tabelle übersetzt; Kommentare, interpolierte Templates, $VARs und Nicht-Pfad-Strings bleiben unangetastet, und bei Unklarheit bleibt das ganze Programm unverändert. Zusätzlich werden TEMP/TMP für das Programm gesetzt: bei leerer Umgebung liefert os.tmpdir() unter Windows undefined\\temp und schreibt an einen falschen Ort.",
|
|
247
|
+
"bashmiss.title": "Git Bash nicht gefunden — Befehle können nicht laufen",
|
|
248
|
+
"bashmiss.body": "Dieses Plugin akzeptiert nur die mit Git for Windows gelieferte bash (WSL-, MSYS2- und Cygwin-bash werden abgelehnt) und fällt nie auf PowerShell/cmd zurück — es meldet den Fehler, statt still etwas Lauffähiges einzusetzen. Trage unten den vollständigen Pfad zu bash.exe ein oder installiere zuerst Git for Windows.",
|
|
249
|
+
"bashmiss.tried": "Der Reihe nach geprüft (alle abgelehnt):",
|
|
250
|
+
"bashmiss.download": "Git for Windows herunterladen",
|
|
251
|
+
"bashmiss.where": "Du kannst das später auch unter „Einstellungen → Plugins → dsh-gitbash-shell → Git-Bash-Pfad“ eintragen; das Startprotokoll des Hosts enthält dieselbe Liste.",
|
|
252
|
+
"bashmiss.close": "Schließen",
|
|
226
253
|
"sub.label": "Subagenten/Teammitglieder nutzen Git Bash",
|
|
227
254
|
"sub.hint": "An (Standard): Subagenten und Teammitglieder — auch verschachtelte — erhalten denselben Prompt-Dialekt, dieselbe Pfadargument-Übersetzung, dieselbe Ergebnisanzeige und dieselbe DSH_PATH_DIALECT-Tatsache wie der Hauptagent. Aus: Das gilt nur für den Hauptagenten, delegierte Agenten laufen mit den offiziellen Shell-Semantiken (keine Prompt-Umschreibung, keine Pfadübersetzung). Beachte: dsh hat genau einen Shell-Executor pro Prozess, das Git-Bash-Binary bleibt also global; dieser Schalter steuert die Dialekt-/Übersetzungsschichten.",
|
|
228
255
|
"eol.label": "Git-Zeilenenden (Linux-gleich)",
|
|
229
256
|
"eol.hint": "Vom Modell ausgeführte git-Befehle verhalten sich wie unter Linux: core.autocrlf=input, core.eol=lf. Dein eigenes Terminal und die .gitattributes eines Repos bleiben unberührt.",
|
|
230
257
|
"bash.label": "Git-Bash-Pfad",
|
|
231
258
|
"bash.hint": "Vollständiger Pfad einer benutzerdefinierten bash.exe; leer = automatische Erkennung.",
|
|
259
|
+
"bash.saveFailed": "Speichern ohne Wirkung: Der Host hat den Schreibvorgang abgelehnt — prüfe, ob der Pfad existiert und zu Git for Windows gehört, oder lies das Host-Protokoll",
|
|
232
260
|
"bash.save": "Speichern",
|
|
233
261
|
"bash.saved": "Gespeichert",
|
|
234
262
|
"adopt.label": "Sidebar-Terminal übernehmen",
|
|
@@ -265,12 +293,19 @@ window.__ModuleLoader__.load({
|
|
|
265
293
|
"split.hint": "Un motif glob absolu se scinde en chemin + motif relatif ; désactivé le passe tel quel.",
|
|
266
294
|
"code.label": "chemins dans les programmes run_code",
|
|
267
295
|
"code.hint": "Les littéraux de chemin écrits dans un programme run_code sont traduits via la même table de montage avant exécution; commentaires, gabarits interpolés, $VAR et chaînes non-chemin restent intacts, et la moindre incertitude laisse le programme tel quel. TEMP/TMP sont aussi fournis au programme : avec un env vide, os.tmpdir() sous Windows renvoie undefined\\temp et écrit au mauvais endroit.",
|
|
296
|
+
"bashmiss.title": "Git Bash introuvable — les commandes ne peuvent pas s'exécuter",
|
|
297
|
+
"bashmiss.body": "Ce plugin n'accepte que le bash fourni avec Git for Windows (les bash WSL, MSYS2 et Cygwin sont refusés) et ne retombe jamais sur PowerShell/cmd : il signale la panne au lieu de substituer discrètement un shell utilisable. Saisissez ci-dessous le chemin complet de bash.exe, ou installez d'abord Git for Windows.",
|
|
298
|
+
"bashmiss.tried": "Emplacements testés dans l'ordre (tous refusés) :",
|
|
299
|
+
"bashmiss.download": "Télécharger Git for Windows",
|
|
300
|
+
"bashmiss.where": "Vous pourrez aussi le renseigner plus tard dans « Paramètres → Plugins → dsh-gitbash-shell → Chemin Git Bash » ; le journal de démarrage de l'hôte contient la même liste.",
|
|
301
|
+
"bashmiss.close": "Fermer",
|
|
268
302
|
"sub.label": "Les sous-agents utilisent Git Bash",
|
|
269
303
|
"sub.hint": "Activé (par défaut) : les sous-agents et membres d'équipe — y compris imbriqués — reçoivent le même dialecte de prompt, la même traduction des chemins d'arguments, le même écho de résultat et le même fait DSH_PATH_DIALECT que l'agent principal. Désactivé : ces éléments ne s'appliquent qu'à l'agent principal et les agents délégués suivent les sémantiques de shell officielles (pas de réécriture du prompt, pas de traduction des chemins). À noter : dsh n'a qu'un seul exécuteur de shell par processus, le binaire Git Bash reste donc global ; cet interrupteur régit les couches de dialecte et de traduction.",
|
|
270
304
|
"eol.label": "fins de ligne Git (comme Linux)",
|
|
271
305
|
"eol.hint": "Les commandes git lancées par le modèle suivent le comportement Linux : core.autocrlf=input, core.eol=lf. Votre terminal et les .gitattributes du dépôt ne sont pas touchés.",
|
|
272
306
|
"bash.label": "Chemin Git Bash",
|
|
273
307
|
"bash.hint": "Chemin complet d'un bash.exe personnalisé ; vide = détection automatique.",
|
|
308
|
+
"bash.saveFailed": "L’enregistrement n’a pas pris effet : l’hôte a refusé l’écriture — vérifiez que le chemin existe et correspond au bash de Git for Windows, ou consultez le journal de l’hôte",
|
|
274
309
|
"bash.save": "Enregistrer",
|
|
275
310
|
"bash.saved": "Enregistré",
|
|
276
311
|
"adopt.label": "Adopter le terminal latéral",
|
|
@@ -307,12 +342,19 @@ window.__ModuleLoader__.load({
|
|
|
307
342
|
"split.hint": "एब्सोल्यूट glob पैटर्न path + रिलेटिव पैटर्न में विभाजित होता है; बंद इसे वैसे ही पास करता है।",
|
|
308
343
|
"code.label": "run_code प्रोग्राम पथ",
|
|
309
344
|
"code.hint": "run_code प्रोग्राम में लिखे पथ लिटरल चलने से पहले उसी माउंट तालिका से अनूदित होते हैं; टिप्पणियाँ, इंटरपोलेटेड टेम्पलेट, $VAR और गैर-पथ स्ट्रिंग अछूते रहते हैं, और किसी भी अनिश्चितता पर पूरा प्रोग्राम अपरिवर्तित रहता है। साथ ही प्रोग्राम के लिए TEMP/TMP भर दिए जाते हैं: खाली env में Windows पर os.tmpdir() undefined\\temp देता है और गलत जगह लिखता है।",
|
|
345
|
+
"bashmiss.title": "Git Bash नहीं मिला — कमांड नहीं चल सकतीं",
|
|
346
|
+
"bashmiss.body": "यह प्लगइन केवल Git for Windows के साथ आने वाले bash को स्वीकार करता है (WSL, MSYS2 और Cygwin का bash अस्वीकार है) और कभी PowerShell/cmd पर नहीं लौटता — इसलिए यह विफलता बताता है, चुपचाप कोई चलने वाला शेल नहीं लगाता। नीचे bash.exe का पूरा पाथ भरें, या पहले Git for Windows इंस्टॉल करें।",
|
|
347
|
+
"bashmiss.tried": "इन स्थानों को क्रम से जाँचा गया (सभी अस्वीकृत):",
|
|
348
|
+
"bashmiss.download": "Git for Windows डाउनलोड करें",
|
|
349
|
+
"bashmiss.where": "बाद में «सेटिंग्स → प्लगइन → dsh-gitbash-shell → Git Bash पाथ» में भी भर सकते हैं; होस्ट स्टार्टअप लॉग में वही सूची है।",
|
|
350
|
+
"bashmiss.close": "बंद करें",
|
|
310
351
|
"sub.label": "सबएजेंट/टीम सदस्य Git Bash इस्तेमाल करें",
|
|
311
352
|
"sub.hint": "चालू (डिफ़ॉल्ट): सबएजेंट और टीम सदस्य — नेस्टेड सहित — मुख्य एजेंट जैसा ही प्रॉम्प्ट डायलेक्ट, पाथ आर्ग्युमेंट अनुवाद, परिणाम इको और DSH_PATH_DIALECT तथ्य पाते हैं। बंद: ये केवल मुख्य एजेंट पर लागू होते हैं और प्रतिनिधित एजेंट आधिकारिक शेल अर्थ में चलते हैं (प्रॉम्प्ट नहीं बदलता, पाथ अनुवाद नहीं होता)। ध्यान दें: dsh में प्रति प्रोसेस एक ही शेल एक्ज़ीक्यूटर होता है, इसलिए Git Bash बाइनरी वैश्विक रहती है; यह स्विच डायलेक्ट/अनुवाद परतों को नियंत्रित करता है।",
|
|
312
353
|
"eol.label": "Git पंक्ति-अंत (Linux जैसा)",
|
|
313
354
|
"eol.hint": "मॉडल द्वारा चलाए git कमांड Linux व्यवहार अपनाते हैं: core.autocrlf=input, core.eol=lf। आपका टर्मिनल और रेपो का .gitattributes अछूते रहते हैं।",
|
|
314
355
|
"bash.label": "Git Bash पथ",
|
|
315
356
|
"bash.hint": "कस्टम bash.exe का पूर्ण पथ; खाली = ऑटो-डिटेक्ट।",
|
|
357
|
+
"bash.saveFailed": "सहेजना लागू नहीं हुआ: होस्ट ने यह लेखन अस्वीकार किया — जाँचें कि पाथ मौजूद है और Git for Windows का bash है, या होस्ट लॉग देखें",
|
|
316
358
|
"bash.save": "सहेजें",
|
|
317
359
|
"bash.saved": "सहेजा गया",
|
|
318
360
|
"adopt.label": "साइडबार टर्मिनल अपनाएँ",
|
|
@@ -349,12 +391,19 @@ window.__ModuleLoader__.load({
|
|
|
349
391
|
"split.hint": "Pattern glob absolut dipecah menjadi path + pattern relatif; nonaktif meneruskannya apa adanya.",
|
|
350
392
|
"code.label": "jalur dalam program run_code",
|
|
351
393
|
"code.hint": "Literal jalur yang ditulis di program run_code diterjemahkan lewat tabel mount yang sama sebelum dijalankan; komentar, template berinterpolasi, $VAR, dan string non-jalur dibiarkan, dan bila ada keraguan seluruh program tidak diubah. TEMP/TMP juga diisi untuk program: dengan env kosong, os.tmpdir() di Windows mengembalikan undefined\\temp dan menulis ke lokasi salah.",
|
|
394
|
+
"bashmiss.title": "Git Bash tidak ditemukan — perintah tidak bisa jalan",
|
|
395
|
+
"bashmiss.body": "Plugin ini hanya menerima bash bawaan Git for Windows (bash WSL, MSYS2 dan Cygwin ditolak) dan tidak pernah mundur ke PowerShell/cmd — jadi ia melaporkan kegagalan alih-alih diam-diam memasang shell lain. Isi path lengkap bash.exe di bawah, atau pasang Git for Windows dulu.",
|
|
396
|
+
"bashmiss.tried": "Diperiksa berurutan (semua ditolak):",
|
|
397
|
+
"bashmiss.download": "Unduh Git for Windows",
|
|
398
|
+
"bashmiss.where": "Bisa juga diisi nanti di «Setelan → Plugin → dsh-gitbash-shell → Path Git Bash»; log mulai host memuat daftar yang sama.",
|
|
399
|
+
"bashmiss.close": "Tutup",
|
|
352
400
|
"sub.label": "Subagen/teman tim memakai Git Bash",
|
|
353
401
|
"sub.hint": "Aktif (bawaan): subagen dan anggota tim — termasuk yang bersarang — mendapat dialek prompt, terjemahan argumen path, gema hasil, dan fakta DSH_PATH_DIALECT yang sama seperti agen utama. Nonaktif: semuanya hanya berlaku untuk agen utama dan agen yang didelegasikan berjalan dengan semantik shell resmi (prompt tidak ditulis ulang, path tidak diterjemahkan). Catatan: dsh hanya punya satu eksekutor shell per proses, jadi biner Git Bash tetap global; sakelar ini mengatur lapisan dialek/terjemahan.",
|
|
354
402
|
"eol.label": "akhir baris Git (sama seperti Linux)",
|
|
355
403
|
"eol.hint": "Perintah git yang dijalankan model mengikuti perilaku Linux: core.autocrlf=input, core.eol=lf. Terminal Anda dan .gitattributes repo tidak terpengaruh.",
|
|
356
404
|
"bash.label": "Path Git Bash",
|
|
357
405
|
"bash.hint": "Path lengkap bash.exe kustom; kosong = deteksi otomatis.",
|
|
406
|
+
"bash.saveFailed": "Penyimpanan tidak berlaku: host menolak penulisan ini — pastikan path ada dan menunjuk ke bash Git for Windows, atau baca log host",
|
|
358
407
|
"bash.save": "Simpan",
|
|
359
408
|
"bash.saved": "Tersimpan",
|
|
360
409
|
"adopt.label": "Adopsi terminal sidebar",
|
|
@@ -391,12 +440,19 @@ window.__ModuleLoader__.load({
|
|
|
391
440
|
"split.hint": "Un pattern glob assoluto si divide in percorso + pattern relativo; off lo passa invariato.",
|
|
392
441
|
"code.label": "percorsi nei programmi run_code",
|
|
393
442
|
"code.hint": "I letterali di percorso scritti in un programma run_code vengono tradotti con la stessa tabella di mount prima dell'esecuzione; commenti, template interpolati, $VAR e stringhe non di percorso restano intatti e qualsiasi incertezza lascia il programma invariato. Inoltre TEMP/TMP vengono forniti al programma: con env vuoto, os.tmpdir() su Windows restituisce undefined\\temp e scrive nel posto sbagliato.",
|
|
443
|
+
"bashmiss.title": "Git Bash non trovato — i comandi non possono partire",
|
|
444
|
+
"bashmiss.body": "Questo plugin accetta solo la bash fornita con Git for Windows (le bash WSL, MSYS2 e Cygwin sono rifiutate) e non ripiega mai su PowerShell/cmd: segnala il guasto invece di sostituire in silenzio una shell utilizzabile. Inserisci sotto il percorso completo di bash.exe, oppure installa prima Git for Windows.",
|
|
445
|
+
"bashmiss.tried": "Posizioni provate in ordine (tutte rifiutate):",
|
|
446
|
+
"bashmiss.download": "Scarica Git for Windows",
|
|
447
|
+
"bashmiss.where": "Puoi anche compilarlo più tardi in «Impostazioni → Plugin → dsh-gitbash-shell → Percorso Git Bash»; il log di avvio dell'host contiene lo stesso elenco.",
|
|
448
|
+
"bashmiss.close": "Chiudi",
|
|
394
449
|
"sub.label": "Subagenti/compagni usano Git Bash",
|
|
395
450
|
"sub.hint": "Attivo (predefinito): subagenti e membri del team — anche annidati — ricevono lo stesso dialetto del prompt, la stessa traduzione dei percorsi negli argomenti, lo stesso eco dei risultati e lo stesso fatto DSH_PATH_DIALECT dell'agente principale. Disattivo: valgono solo per l'agente principale e gli agenti delegati usano le semantiche di shell ufficiali (nessuna riscrittura del prompt, nessuna traduzione dei percorsi). Nota: dsh ha un solo esecutore di shell per processo, quindi il binario Git Bash resta globale; questo interruttore governa gli strati di dialetto e traduzione.",
|
|
396
451
|
"eol.label": "fine riga Git (come Linux)",
|
|
397
452
|
"eol.hint": "I comandi git eseguiti dal modello seguono il comportamento Linux: core.autocrlf=input, core.eol=lf. Il tuo terminale e i .gitattributes del repo non vengono toccati.",
|
|
398
453
|
"bash.label": "Percorso Git Bash",
|
|
399
454
|
"bash.hint": "Percorso completo di un bash.exe personalizzato; vuoto = rilevamento automatico.",
|
|
455
|
+
"bash.saveFailed": "Salvataggio non applicato: l’host ha rifiutato la scrittura — verifica che il percorso esista e sia la bash di Git for Windows, oppure leggi il log dell’host",
|
|
400
456
|
"bash.save": "Salva",
|
|
401
457
|
"bash.saved": "Salvato",
|
|
402
458
|
"adopt.label": "Adotta il terminale laterale",
|
|
@@ -433,12 +489,19 @@ window.__ModuleLoader__.load({
|
|
|
433
489
|
"split.hint": "絶対 glob パターンを path + 相対パターンに分割;オフならそのまま渡します。",
|
|
434
490
|
"code.label": "run_code プログラム内のパス",
|
|
435
491
|
"code.hint": "run_code プログラム内に書いた /c/... などのパスリテラルは実行前に同じマウント表で変換されます。コメント・補間テンプレート・$VAR・パス以外の文字列は変更せず、解析に不確かさがあればプログラム全体をそのまま実行します。 さらにプログラムに TEMP/TMP を渡します: 空の env では Windows の os.tmpdir() が undefined\\temp を返し、誤った場所に書き込みます。",
|
|
492
|
+
"bashmiss.title": "Git Bash が見つかりません — コマンドを実行できません",
|
|
493
|
+
"bashmiss.body": "本プラグインは Git for Windows 付属の bash のみを受け付け(WSL・MSYS2・Cygwin の bash は拒否)、PowerShell/cmd へフォールバックしません —— 動くシェルを黙って差し替えるのではなく、失敗として報告します。下に bash.exe のフルパスを入力するか、先に Git for Windows をインストールしてください。",
|
|
494
|
+
"bashmiss.tried": "順に確認した場所(すべて拒否):",
|
|
495
|
+
"bashmiss.download": "Git for Windows をダウンロード",
|
|
496
|
+
"bashmiss.where": "後から「設定 → プラグイン → dsh-gitbash-shell → Git Bash パス」でも入力できます。host の起動ログにも同じ一覧があります。",
|
|
497
|
+
"bashmiss.close": "閉じる",
|
|
436
498
|
"sub.label": "サブエージェント/チームメンバーも Git Bash を使う",
|
|
437
499
|
"sub.hint": "オン(既定):サブエージェントとチームメンバー(ネスト含む)は、メインエージェントと同じプロンプト方言・パス引数の翻訳・結果エコー・DSH_PATH_DIALECT の事実を受け取ります。オフ:これらはメインエージェントのみに適用され、委譲されたエージェントは公式の shell セマンティクスで動作します(プロンプト改写なし、パス翻訳なし)。なお dsh はプロセスごとに shell 実行器を 1 つだけ持つため、Git Bash バイナリ自体は常に全体共通です。このスイッチが制御するのは方言/翻訳の層です。",
|
|
438
500
|
"eol.label": "Git の行末(Linux と同じ)",
|
|
439
501
|
"eol.hint": "モデルが実行する git コマンドは Linux と同じ挙動になります: core.autocrlf=input、core.eol=lf。あなたのターミナルやリポジトリの .gitattributes は影響を受けません。",
|
|
440
502
|
"bash.label": "Git Bash パス",
|
|
441
503
|
"bash.hint": "カスタム bash.exe の完全パス;空欄なら自動検出。",
|
|
504
|
+
"bash.saveFailed": "保存が反映されません:ホストがこの書き込みを拒否しました —— パスが存在し Git for Windows の bash か確認するか、ホストログを見てください",
|
|
442
505
|
"bash.save": "保存",
|
|
443
506
|
"bash.saved": "保存済み",
|
|
444
507
|
"adopt.label": "サイドバーターミナルを引き継ぐ",
|
|
@@ -475,12 +538,19 @@ window.__ModuleLoader__.load({
|
|
|
475
538
|
"split.hint": "절대 glob 패턴을 path + 상대 패턴으로 분할; 끄면 그대로 전달.",
|
|
476
539
|
"code.label": "run_code 프로그램 경로",
|
|
477
540
|
"code.hint": "run_code 프로그램에 쓴 /c/... 경로 리터럴은 실행 전에 같은 마운트 표로 변환됩니다. 주석, 보간 템플릿, $VAR, 경로가 아닌 문자열은 그대로 두고, 스캔이 불확실하면 프로그램 전체를 그대로 둡니다. 또한 프로그램에 TEMP/TMP를 채워 줍니다: 빈 env에서 Windows의 os.tmpdir()는 undefined\\temp를 반환해 엉뚱한 곳에 씁니다.",
|
|
541
|
+
"bashmiss.title": "Git Bash를 찾을 수 없음 — 명령을 실행할 수 없습니다",
|
|
542
|
+
"bashmiss.body": "이 플러그인은 Git for Windows에 포함된 bash만 허용하며(WSL·MSYS2·Cygwin bash는 거부), PowerShell/cmd로 되돌아가지 않습니다 — 실행 가능한 셸을 조용히 바꿔치기하지 않고 실패를 그대로 알립니다. 아래에 bash.exe 전체 경로를 입력하거나 먼저 Git for Windows를 설치하세요.",
|
|
543
|
+
"bashmiss.tried": "순서대로 확인한 위치(모두 거부):",
|
|
544
|
+
"bashmiss.download": "Git for Windows 다운로드",
|
|
545
|
+
"bashmiss.where": "나중에 «설정 → 플러그인 → dsh-gitbash-shell → Git Bash 경로»에서도 입력할 수 있습니다. host 시작 로그에도 같은 목록이 있습니다.",
|
|
546
|
+
"bashmiss.close": "닫기",
|
|
478
547
|
"sub.label": "서브에이전트/팀원도 Git Bash 사용",
|
|
479
548
|
"sub.hint": "켬(기본): 서브에이전트와 팀원(중첩 포함)은 메인 에이전트와 동일한 프롬프트 방언, 경로 인자 번역, 결과 에코, DSH_PATH_DIALECT 사실을 받습니다. 끔: 이것들은 메인 에이전트에만 적용되고 위임된 에이전트는 공식 shell 의미로 동작합니다(프롬프트 재작성 없음, 경로 번역 없음). 참고로 dsh는 프로세스당 shell 실행기가 하나뿐이라 Git Bash 바이너리 자체는 항상 전역입니다. 이 스위치는 방언/번역 계층을 제어합니다.",
|
|
480
549
|
"eol.label": "Git 줄바꿈(Linux와 동일)",
|
|
481
550
|
"eol.hint": "모델이 실행하는 git 명령은 Linux 동작을 따릅니다: core.autocrlf=input, core.eol=lf. 사용자의 터미널과 저장소의 .gitattributes는 영향을 받지 않습니다.",
|
|
482
551
|
"bash.label": "Git Bash 경로",
|
|
483
552
|
"bash.hint": "사용자 bash.exe 전체 경로; 비우면 자동 감지.",
|
|
553
|
+
"bash.saveFailed": "저장이 반영되지 않았습니다: 호스트가 이 쓰기를 거부했습니다 — 경로가 존재하고 Git for Windows의 bash인지 확인하거나 호스트 로그를 보세요",
|
|
484
554
|
"bash.save": "저장",
|
|
485
555
|
"bash.saved": "저장됨",
|
|
486
556
|
"adopt.label": "사이드바 터미널 인수",
|
|
@@ -517,12 +587,19 @@ window.__ModuleLoader__.load({
|
|
|
517
587
|
"split.hint": "Een absoluut glob-patroon splitst in pad + relatief patroon; uit geeft het ongewijzigd door.",
|
|
518
588
|
"code.label": "paden in run_code-programma's",
|
|
519
589
|
"code.hint": "Pad-literalen in een run_code-programma worden vóór uitvoering via dezelfde mounttabel vertaald; opmerkingen, geïnterpoleerde templates, $VAR's en niet-pad-strings blijven ongemoeid, en bij twijfel blijft het hele programma ongewijzigd. Ook worden TEMP/TMP voor het programma gezet: met een lege env geeft os.tmpdir() op Windows undefined\\temp en schrijft het op de verkeerde plek.",
|
|
590
|
+
"bashmiss.title": "Git Bash niet gevonden — opdrachten kunnen niet lopen",
|
|
591
|
+
"bashmiss.body": "Deze plugin accepteert alleen de bash van Git for Windows (bash van WSL, MSYS2 en Cygwin wordt geweigerd) en valt nooit terug op PowerShell/cmd — hij meldt de storing in plaats van stil iets werkends in te zetten. Vul hieronder het volledige pad naar bash.exe in, of installeer eerst Git for Windows.",
|
|
592
|
+
"bashmiss.tried": "In volgorde geprobeerd (alle geweigerd):",
|
|
593
|
+
"bashmiss.download": "Git for Windows downloaden",
|
|
594
|
+
"bashmiss.where": "Je kunt dit later ook invullen onder ‘Instellingen → Plugins → dsh-gitbash-shell → Git Bash-pad’; het opstartlogboek van de host bevat dezelfde lijst.",
|
|
595
|
+
"bashmiss.close": "Sluiten",
|
|
520
596
|
"sub.label": "Subagenten/teammaten gebruiken Git Bash",
|
|
521
597
|
"sub.hint": "Aan (standaard): subagenten en teamleden — ook geneste — krijgen hetzelfde promptdialect, dezelfde padargument-vertaling, dezelfde resultaat-echo en hetzelfde DSH_PATH_DIALECT-feit als de hoofdagent. Uit: die gelden alleen voor de hoofdagent en gedelegeerde agenten draaien met de officiële shell-semantiek (geen promptherschrijving, geen padvertaling). Let op: dsh heeft één shell-uitvoerder per proces, dus het Git Bash-binary blijft globaal; deze schakelaar beheert de dialect-/vertaallagen.",
|
|
522
598
|
"eol.label": "Git regeleinden (zoals Linux)",
|
|
523
599
|
"eol.hint": "Git-opdrachten die het model uitvoert volgen Linux-gedrag: core.autocrlf=input, core.eol=lf. Je eigen terminal en de .gitattributes van een repo blijven onaangetast.",
|
|
524
600
|
"bash.label": "Git Bash-pad",
|
|
525
601
|
"bash.hint": "Volledig pad van een aangepaste bash.exe; leeg = automatisch detecteren.",
|
|
602
|
+
"bash.saveFailed": "Opslaan had geen effect: de host weigerde deze schrijfactie — controleer of het pad bestaat en naar Git for Windows’ bash wijst, of lees het hostlogboek",
|
|
526
603
|
"bash.save": "Opslaan",
|
|
527
604
|
"bash.saved": "Opgeslagen",
|
|
528
605
|
"adopt.label": "Zijbalkterminal overnemen",
|
|
@@ -559,12 +636,19 @@ window.__ModuleLoader__.load({
|
|
|
559
636
|
"split.hint": "Absolutny wzorzec glob dzieli się na ścieżkę + wzorzec względny; wył. przekazuje bez zmian.",
|
|
560
637
|
"code.label": "ścieżki w programach run_code",
|
|
561
638
|
"code.hint": "Literały ścieżek w programie run_code są tłumaczone przez tę samą tabelę montowania przed uruchomieniem; komentarze, szablony z interpolacją, $VAR i ciągi niebędące ścieżkami pozostają nietknięte, a każda niepewność pozostawia program bez zmian. Dodatkowo ustawiane są TEMP/TMP dla programu: przy pustym env Windows zwraca z os.tmpdir() undefined\\temp i zapisuje w złym miejscu.",
|
|
639
|
+
"bashmiss.title": "Nie znaleziono Git Bash — polecenia nie mogą działać",
|
|
640
|
+
"bashmiss.body": "Ta wtyczka akceptuje wyłącznie bash dołączony do Git for Windows (bash z WSL, MSYS2 i Cygwin jest odrzucany) i nigdy nie cofa się do PowerShell/cmd — zgłasza awarię zamiast po cichu podstawić działającą powłokę. Wpisz poniżej pełną ścieżkę do bash.exe albo najpierw zainstaluj Git for Windows.",
|
|
641
|
+
"bashmiss.tried": "Sprawdzone po kolei (wszystkie odrzucone):",
|
|
642
|
+
"bashmiss.download": "Pobierz Git for Windows",
|
|
643
|
+
"bashmiss.where": "Możesz to też wpisać później w „Ustawienia → Wtyczki → dsh-gitbash-shell → Ścieżka Git Bash”; log startowy hosta zawiera tę samą listę.",
|
|
644
|
+
"bashmiss.close": "Zamknij",
|
|
562
645
|
"sub.label": "Subagenci/członkowie zespołu używają Git Bash",
|
|
563
646
|
"sub.hint": "Wł. (domyślnie): subagenci i członkowie zespołu — także zagnieżdżeni — otrzymują ten sam dialekt podpowiedzi, tłumaczenie argumentów ścieżek, echo wyników i fakt DSH_PATH_DIALECT co agent główny. Wył.: dotyczy to tylko agenta głównego, a agenci delegowani działają według oficjalnej semantyki powłoki (bez przepisywania podpowiedzi i tłumaczenia ścieżek). Uwaga: dsh ma jeden executor powłoki na proces, więc binarka Git Bash pozostaje globalna; ten przełącznik steruje warstwami dialektu i tłumaczenia.",
|
|
564
647
|
"eol.label": "końce linii Git (jak w Linuksie)",
|
|
565
648
|
"eol.hint": "Polecenia git uruchamiane przez model działają jak w Linuksie: core.autocrlf=input, core.eol=lf. Twój terminal i .gitattributes repozytorium pozostają nietknięte.",
|
|
566
649
|
"bash.label": "Ścieżka Git Bash",
|
|
567
650
|
"bash.hint": "Pełna ścieżka własnego bash.exe; puste = autodetekcja.",
|
|
651
|
+
"bash.saveFailed": "Zapis nie został zastosowany: host odrzucił ten zapis — sprawdź, czy ścieżka istnieje i wskazuje bash Git for Windows, albo przeczytaj log hosta",
|
|
568
652
|
"bash.save": "Zapisz",
|
|
569
653
|
"bash.saved": "Zapisano",
|
|
570
654
|
"adopt.label": "Przejmij terminal boczny",
|
|
@@ -601,12 +685,19 @@ window.__ModuleLoader__.load({
|
|
|
601
685
|
"split.hint": "Um padrão glob absoluto divide em caminho + padrão relativo; desligado passa-o inalterado.",
|
|
602
686
|
"code.label": "caminhos em programas run_code",
|
|
603
687
|
"code.hint": "Literais de caminho escritos num programa run_code são traduzidos pela mesma tabela de montagem antes da execução; comentários, modelos interpolados, $VAR e strings que não são caminhos ficam intactos, e qualquer incerteza deixa o programa como está. Também são definidos TEMP/TMP para o programa: com env vazio, os.tmpdir() no Windows devolve undefined\\temp e grava no lugar errado.",
|
|
688
|
+
"bashmiss.title": "Git Bash não encontrado — os comandos não podem correr",
|
|
689
|
+
"bashmiss.body": "Este plugin só aceita o bash incluído no Git for Windows (bash do WSL, MSYS2 e Cygwin são recusados) e nunca recorre ao PowerShell/cmd — reporta a falha em vez de substituir silenciosamente por algo executável. Introduza abaixo o caminho completo do bash.exe, ou instale primeiro o Git for Windows.",
|
|
690
|
+
"bashmiss.tried": "Locais testados por ordem (todos recusados):",
|
|
691
|
+
"bashmiss.download": "Transferir o Git for Windows",
|
|
692
|
+
"bashmiss.where": "Também pode preencher mais tarde em «Definições → Plugins → dsh-gitbash-shell → Caminho do Git Bash»; o registo de arranque do host tem a mesma lista.",
|
|
693
|
+
"bashmiss.close": "Fechar",
|
|
604
694
|
"sub.label": "Subagentes/membros da equipa usam Git Bash",
|
|
605
695
|
"sub.hint": "Ligado (padrão): subagentes e membros da equipa — incluindo aninhados — recebem o mesmo dialeto de prompt, tradução de caminhos nos argumentos, eco de resultados e o mesmo facto DSH_PATH_DIALECT que o agente principal. Desligado: isso aplica-se apenas ao agente principal e os agentes delegados correm com a semântica oficial da shell (sem reescrita do prompt nem tradução de caminhos). Nota: o dsh tem um único executor de shell por processo, pelo que o binário Git Bash continua global; este interruptor governa as camadas de dialeto e tradução.",
|
|
606
696
|
"eol.label": "fins de linha do Git (como no Linux)",
|
|
607
697
|
"eol.hint": "Os comandos git executados pelo modelo seguem o comportamento do Linux: core.autocrlf=input, core.eol=lf. O seu terminal e os .gitattributes do repositório não são afetados.",
|
|
608
698
|
"bash.label": "Caminho do Git Bash",
|
|
609
699
|
"bash.hint": "Caminho completo de um bash.exe personalizado; vazio = detecção automática.",
|
|
700
|
+
"bash.saveFailed": "A gravação não teve efeito: o anfitrião recusou esta escrita — confirme que o caminho existe e é o bash do Git for Windows, ou veja o registo do anfitrião",
|
|
610
701
|
"bash.save": "Salvar",
|
|
611
702
|
"bash.saved": "Salvo",
|
|
612
703
|
"adopt.label": "Adotar o terminal lateral",
|
|
@@ -643,12 +734,19 @@ window.__ModuleLoader__.load({
|
|
|
643
734
|
"split.hint": "Абсолютный glob-шаблон разбивается на path + относительный шаблон; выкл передаёт как есть.",
|
|
644
735
|
"code.label": "пути в программах run_code",
|
|
645
736
|
"code.hint": "Строковые литералы путей в программе run_code переводятся по той же таблице монтирования до запуска; комментарии, шаблоны с интерполяцией, $VAR и строки-не-пути не трогаются, а при любой неопределённости программа остаётся без изменений. Также программе задаются TEMP/TMP: при пустом env в Windows os.tmpdir() возвращает undefined\\temp и запись идёт не туда.",
|
|
737
|
+
"bashmiss.title": "Git Bash не найден — команды не выполняются",
|
|
738
|
+
"bashmiss.body": "Плагин принимает только bash из состава Git for Windows (bash из WSL, MSYS2 и Cygwin отклоняется) и никогда не откатывается к PowerShell/cmd — он сообщает об ошибке, а не подменяет оболочку молча. Укажите ниже полный путь к bash.exe или сначала установите Git for Windows.",
|
|
739
|
+
"bashmiss.tried": "Проверены по порядку (все отклонены):",
|
|
740
|
+
"bashmiss.download": "Скачать Git for Windows",
|
|
741
|
+
"bashmiss.where": "Это же можно заполнить позже в «Настройки → Плагины → dsh-gitbash-shell → Путь Git Bash»; тот же список есть в журнале запуска хоста.",
|
|
742
|
+
"bashmiss.close": "Закрыть",
|
|
646
743
|
"sub.label": "Субагенты и участники команды используют Git Bash",
|
|
647
744
|
"sub.hint": "Вкл. (по умолчанию): субагенты и участники команды — включая вложенных — получают тот же диалект подсказки, перевод путей в аргументах, эхо результатов и факт DSH_PATH_DIALECT, что и главный агент. Выкл.: это применяется только к главному агенту, а делегированные агенты работают с официальной семантикой оболочки (без перезаписи подсказки и перевода путей). Учтите: в dsh один исполнитель оболочки на процесс, поэтому сам бинарник Git Bash остаётся общим; этот переключатель управляет слоями диалекта и перевода.",
|
|
648
745
|
"eol.label": "переводы строк Git (как в Linux)",
|
|
649
746
|
"eol.hint": "Команды git, запускаемые моделью, ведут себя как в Linux: core.autocrlf=input, core.eol=lf. Ваш терминал и .gitattributes репозитория не затрагиваются.",
|
|
650
747
|
"bash.label": "Путь Git Bash",
|
|
651
748
|
"bash.hint": "Полный путь кастомного bash.exe; пусто = автоопределение.",
|
|
749
|
+
"bash.saveFailed": "Сохранение не применилось: хост отклонил эту запись — проверьте, что путь существует и указывает на bash из Git for Windows, или посмотрите журнал хоста",
|
|
652
750
|
"bash.save": "Сохранить",
|
|
653
751
|
"bash.saved": "Сохранено",
|
|
654
752
|
"adopt.label": "Перехватывать терминал боковой панели",
|
|
@@ -685,12 +783,19 @@ window.__ModuleLoader__.load({
|
|
|
685
783
|
"split.hint": "Ett absolut glob-mönster delas i sökväg + relativt mönster; av skickar det oförändrat.",
|
|
686
784
|
"code.label": "sökvägar i run_code-program",
|
|
687
785
|
"code.hint": "Sökvägslitteraler i ett run_code-program översätts via samma monteringstabell före körning; kommentarer, interpolerade mallar, $VAR och strängar som inte är sökvägar lämnas orörda, och vid minsta osäkerhet lämnas hela programmet oförändrat. Dessutom sätts TEMP/TMP för programmet: med tom env ger os.tmpdir() i Windows undefined\\temp och skriver på fel ställe.",
|
|
786
|
+
"bashmiss.title": "Git Bash hittades inte — kommandon kan inte köras",
|
|
787
|
+
"bashmiss.body": "Insticksmodulen accepterar bara bash som följer med Git for Windows (bash från WSL, MSYS2 och Cygwin avvisas) och faller aldrig tillbaka på PowerShell/cmd — den rapporterar felet i stället för att tyst byta in något körbart. Ange hela sökvägen till bash.exe nedan, eller installera Git for Windows först.",
|
|
788
|
+
"bashmiss.tried": "Provat i ordning (alla avvisade):",
|
|
789
|
+
"bashmiss.download": "Hämta Git for Windows",
|
|
790
|
+
"bashmiss.where": "Du kan också fylla i detta senare under ”Inställningar → Insticksmoduler → dsh-gitbash-shell → Git Bash-sökväg”; världens startlogg har samma lista.",
|
|
791
|
+
"bashmiss.close": "Stäng",
|
|
688
792
|
"sub.label": "Subagenter/teammedlemmar använder Git Bash",
|
|
689
793
|
"sub.hint": "På (standard): subagenter och teammedlemmar — även nästlade — får samma promptdialekt, samma sökvägsöversättning i argument, samma resultat-eko och samma DSH_PATH_DIALECT-faktum som huvudagenten. Av: detta gäller bara huvudagenten och delegerade agenter kör med officiell shell-semantik (ingen promptomskrivning, ingen sökvägsöversättning). Obs: dsh har en enda shell-exekutor per process, så Git Bash-binären är fortfarande global; den här växeln styr dialekt-/översättningslagren.",
|
|
690
794
|
"eol.label": "Git radslut (som Linux)",
|
|
691
795
|
"eol.hint": "Git-kommandon som modellen kör följer Linux-beteende: core.autocrlf=input, core.eol=lf. Din egen terminal och repots .gitattributes påverkas inte.",
|
|
692
796
|
"bash.label": "Git Bash-sökväg",
|
|
693
797
|
"bash.hint": "Fullständig sökväg till egen bash.exe; tom = automatisk detektering.",
|
|
798
|
+
"bash.saveFailed": "Sparandet slog inte igenom: värden avvisade skrivningen — kontrollera att sökvägen finns och är Git for Windows bash, eller läs värdens logg",
|
|
694
799
|
"bash.save": "Spara",
|
|
695
800
|
"bash.saved": "Sparat",
|
|
696
801
|
"adopt.label": "Överta sidolistterminal",
|
|
@@ -727,12 +832,19 @@ window.__ModuleLoader__.load({
|
|
|
727
832
|
"split.hint": "pattern glob สัมบูรณ์แยกเป็น path + pattern สัมพัทธ์; ปิดส่งต่อตามเดิม",
|
|
728
833
|
"code.label": "พาธในโปรแกรม run_code",
|
|
729
834
|
"code.hint": "สตริงพาธที่เขียนในโปรแกรม run_code จะถูกแปลผ่านตาราง mount เดียวกันก่อนรัน ความคิดเห็น เทมเพลตที่มีการแทรก $VAR และสตริงที่ไม่ใช่พาธจะไม่ถูกแตะ และหากไม่แน่ใจทั้งโปรแกรมจะไม่ถูกแก้ไข และเติม TEMP/TMP ให้โปรแกรมด้วย: เมื่อ env ว่าง os.tmpdir() บน Windows จะคืน undefined\\temp แล้วเขียนผิดที่",
|
|
835
|
+
"bashmiss.title": "ไม่พบ Git Bash — คำสั่งรันไม่ได้",
|
|
836
|
+
"bashmiss.body": "ปลั๊กอินนี้รับเฉพาะ bash ที่มากับ Git for Windows (ไม่รับ bash ของ WSL, MSYS2 และ Cygwin) และไม่ถอยไปใช้ PowerShell/cmd — จึงรายงานความล้มเหลวแทนการสลับเชลล์ที่รันได้อย่างเงียบ ๆ กรอกพาธเต็มของ bash.exe ด้านล่าง หรือติดตั้ง Git for Windows ก่อน",
|
|
837
|
+
"bashmiss.tried": "ตรวจตามลำดับแล้ว (ถูกปฏิเสธทั้งหมด):",
|
|
838
|
+
"bashmiss.download": "ดาวน์โหลด Git for Windows",
|
|
839
|
+
"bashmiss.where": "กรอกภายหลังได้ที่ «การตั้งค่า → ปลั๊กอิน → dsh-gitbash-shell → พาธ Git Bash» และบันทึกเริ่มต้นของโฮสต์มีรายการเดียวกัน",
|
|
840
|
+
"bashmiss.close": "ปิด",
|
|
730
841
|
"sub.label": "ซับเอเจนต์/สมาชิกทีมใช้ Git Bash",
|
|
731
842
|
"sub.hint": "เปิด (ค่าเริ่มต้น): ซับเอเจนต์และสมาชิกทีม — รวมถึงแบบซ้อน — ได้รับไดอาเลกต์พรอมป์ต์ การแปลพาธในอาร์กิวเมนต์ การสะท้อนผลลัพธ์ และข้อเท็จจริง DSH_PATH_DIALECT เหมือนเอเจนต์หลัก ปิด: สิ่งเหล่านี้มีผลกับเอเจนต์หลักเท่านั้น และเอเจนต์ที่ถูกมอบหมายทำงานด้วยความหมาย shell อย่างเป็นทางการ (ไม่เขียนพรอมป์ต์ใหม่ ไม่แปลพาธ) หมายเหตุ dsh มีตัวรัน shell เดียวต่อโปรเซส ไบนารี Git Bash จึงยังเป็นส่วนกลาง สวิตช์นี้ควบคุมชั้นไดอาเลกต์/การแปล",
|
|
732
843
|
"eol.label": "อักขระขึ้นบรรทัด Git (เหมือน Linux)",
|
|
733
844
|
"eol.hint": "คำสั่ง git ที่โมเดลรันจะใช้พฤติกรรมแบบ Linux: core.autocrlf=input, core.eol=lf เทอร์มินัลของคุณและ .gitattributes ของ repo ไม่ได้รับผลกระทบ",
|
|
734
845
|
"bash.label": "เส้นทาง Git Bash",
|
|
735
846
|
"bash.hint": "เส้นทางเต็มของ bash.exe แบบกำหนดเอง; ว่าง = ตรวจจับอัตโนมัติ",
|
|
847
|
+
"bash.saveFailed": "การบันทึกไม่เกิดผล: โฮสต์ปฏิเสธการเขียนนี้ — ตรวจสอบว่าพาธมีอยู่และเป็น bash ของ Git for Windows หรือดูบันทึกของโฮสต์",
|
|
736
848
|
"bash.save": "บันทึก",
|
|
737
849
|
"bash.saved": "บันทึกแล้ว",
|
|
738
850
|
"adopt.label": "รับช่วงเทอร์มินัลแถบข้าง",
|
|
@@ -769,12 +881,19 @@ window.__ModuleLoader__.load({
|
|
|
769
881
|
"split.hint": "Mutlak glob örüntüsü path + göreli örüntüye ayrılır; kapalı olduğu gibi geçirir.",
|
|
770
882
|
"code.label": "run_code program yolları",
|
|
771
883
|
"code.hint": "Bir run_code programında yazılan yol dizeleri çalıştırılmadan önce aynı bağlama tablosuyla çevrilir; yorumlar, enterpolasyonlu şablonlar, $VAR ve yol olmayan dizeler olduğu gibi kalır, herhangi bir belirsizlikte programın tamamı değişmeden bırakılır. Ayrıca programa TEMP/TMP verilir: boş env ile Windows'ta os.tmpdir() undefined\\temp döner ve yanlış yere yazar.",
|
|
884
|
+
"bashmiss.title": "Git Bash bulunamadı — komutlar çalışamaz",
|
|
885
|
+
"bashmiss.body": "Bu eklenti yalnızca Git for Windows ile gelen bash'i kabul eder (WSL, MSYS2 ve Cygwin bash'i reddedilir) ve asla PowerShell/cmd'ye dönmez — çalışan bir kabuğu sessizce koymak yerine hatayı bildirir. Aşağıya bash.exe'nin tam yolunu yazın veya önce Git for Windows'u kurun.",
|
|
886
|
+
"bashmiss.tried": "Sırayla denenen konumlar (hepsi reddedildi):",
|
|
887
|
+
"bashmiss.download": "Git for Windows indir",
|
|
888
|
+
"bashmiss.where": "Bunu daha sonra «Ayarlar → Eklentiler → dsh-gitbash-shell → Git Bash yolu» altında da girebilirsiniz; host başlangıç günlüğünde aynı liste var.",
|
|
889
|
+
"bashmiss.close": "Kapat",
|
|
772
890
|
"sub.label": "Alt ajanlar/ekip üyeleri Git Bash kullansın",
|
|
773
891
|
"sub.hint": "Açık (varsayılan): alt ajanlar ve ekip üyeleri — iç içe olanlar dahil — ana ajanla aynı istem lehçesini, yol argümanı çevirisini, sonuç yankısını ve DSH_PATH_DIALECT gerçeğini alır. Kapalı: bunlar yalnızca ana ajan için geçerlidir ve devredilen ajanlar resmî shell semantiğiyle çalışır (istem yeniden yazılmaz, yollar çevrilmez). Not: dsh'de süreç başına tek bir shell yürütücüsü vardır, bu yüzden Git Bash ikilisi genele aittir; bu anahtar lehçe/çeviri katmanlarını yönetir.",
|
|
774
892
|
"eol.label": "Git satır sonları (Linux gibi)",
|
|
775
893
|
"eol.hint": "Modelin çalıştırdığı git komutları Linux davranışını izler: core.autocrlf=input, core.eol=lf. Kendi terminaliniz ve deponun .gitattributes dosyası etkilenmez.",
|
|
776
894
|
"bash.label": "Git Bash yolu",
|
|
777
895
|
"bash.hint": "Özel bash.exe tam yolu; boş = otomatik algılama.",
|
|
896
|
+
"bash.saveFailed": "Kaydetme etkili olmadı: ana makine bu yazmayı reddetti — yolun var olduğunu ve Git for Windows bash’i olduğunu doğrulayın ya da host günlüğüne bakın",
|
|
778
897
|
"bash.save": "Kaydet",
|
|
779
898
|
"bash.saved": "Kaydedildi",
|
|
780
899
|
"adopt.label": "Kenar çubuğu terminalini devral",
|
|
@@ -811,12 +930,19 @@ window.__ModuleLoader__.load({
|
|
|
811
930
|
"split.hint": "Pattern glob tuyệt đối tách thành path + pattern tương đối; tắt truyền nguyên văn.",
|
|
812
931
|
"code.label": "đường dẫn trong chương trình run_code",
|
|
813
932
|
"code.hint": "Chuỗi đường dẫn viết trong chương trình run_code được dịch qua cùng bảng mount trước khi chạy; chú thích, template nội suy, $VAR và chuỗi không phải đường dẫn được giữ nguyên, và mọi điểm không chắc chắn sẽ khiến cả chương trình không bị sửa. Đồng thời nạp TEMP/TMP cho chương trình: với env rỗng, os.tmpdir() trên Windows trả về undefined\\temp và ghi sai chỗ.",
|
|
933
|
+
"bashmiss.title": "Không tìm thấy Git Bash — không thể chạy lệnh",
|
|
934
|
+
"bashmiss.body": "Plugin này chỉ chấp nhận bash đi kèm Git for Windows (bash của WSL, MSYS2 và Cygwin bị từ chối) và không bao giờ lùi về PowerShell/cmd — nó báo lỗi thay vì âm thầm thay bằng shell chạy được. Hãy nhập đường dẫn đầy đủ tới bash.exe bên dưới, hoặc cài Git for Windows trước.",
|
|
935
|
+
"bashmiss.tried": "Đã dò theo thứ tự (tất cả bị từ chối):",
|
|
936
|
+
"bashmiss.download": "Tải Git for Windows",
|
|
937
|
+
"bashmiss.where": "Cũng có thể điền sau tại «Cài đặt → Plugin → dsh-gitbash-shell → Đường dẫn Git Bash»; nhật ký khởi động host có cùng danh sách.",
|
|
938
|
+
"bashmiss.close": "Đóng",
|
|
814
939
|
"sub.label": "Subagent/thành viên nhóm dùng Git Bash",
|
|
815
940
|
"sub.hint": "Bật (mặc định): subagent và thành viên nhóm — kể cả lồng nhau — nhận cùng phương ngữ prompt, cách dịch đường dẫn trong tham số, tiếng vọng kết quả và sự thật DSH_PATH_DIALECT như agent chính. Tắt: những thứ này chỉ áp dụng cho agent chính, còn agent được ủy quyền chạy theo ngữ nghĩa shell chính thức (không viết lại prompt, không dịch đường dẫn). Lưu ý dsh chỉ có một bộ thực thi shell mỗi tiến trình, nên tệp nhị phân Git Bash vẫn là toàn cục; công tắc này điều khiển tầng phương ngữ/dịch.",
|
|
816
941
|
"eol.label": "kết thúc dòng Git (giống Linux)",
|
|
817
942
|
"eol.hint": "Các lệnh git do mô hình chạy theo hành vi Linux: core.autocrlf=input, core.eol=lf. Terminal của bạn và .gitattributes của repo không bị ảnh hưởng.",
|
|
818
943
|
"bash.label": "Đường dẫn Git Bash",
|
|
819
944
|
"bash.hint": "Đường dẫn đầy đủ của bash.exe tùy chỉnh; để trống = tự dò tìm.",
|
|
945
|
+
"bash.saveFailed": "Lưu không có hiệu lực: máy chủ đã từ chối lần ghi này — kiểm tra đường dẫn tồn tại và là bash của Git for Windows, hoặc xem nhật ký máy chủ",
|
|
820
946
|
"bash.save": "Lưu",
|
|
821
947
|
"bash.saved": "Đã lưu",
|
|
822
948
|
"adopt.label": "Tiếp nhận terminal thanh bên",
|
|
@@ -853,12 +979,19 @@ window.__ModuleLoader__.load({
|
|
|
853
979
|
"split.hint": "glob 嘅絕對 pattern 自動拆做 path + 相對 pattern;關閉就原樣傳遞。",
|
|
854
980
|
"code.label": "run_code 程式內路徑",
|
|
855
981
|
"code.hint": "run_code 程式內寫的 /c/... 路徑字面量會在執行前按同一張掛載表翻譯;註解、插值模板、$VAR 與非路徑字串不動,掃描有任何不確定就整份不改。 並為程式補上 TEMP/TMP:空 env 下 Windows 的 os.tmpdir() 會得到 undefined\\temp,程式會靜默寫錯位置。",
|
|
982
|
+
"bashmiss.title": "搵唔到 Git Bash —— 命令行唔到",
|
|
983
|
+
"bashmiss.body": "本插件淨係用 Git for Windows 跟機嘅 bash(WSL、MSYS2、Cygwin 嘅 bash 一律唔收),亦都唔會退返去 PowerShell/cmd —— 所以呢度只會報錯,唔會偷偷換個行得嘅頂上。喺下面填 bash.exe 嘅完整路徑,或者先裝 Git for Windows。",
|
|
984
|
+
"bashmiss.tried": "按次序探過呢啲位置(全部拒絕):",
|
|
985
|
+
"bashmiss.download": "去下載 Git for Windows",
|
|
986
|
+
"bashmiss.where": "之後都可以喺「設定 → 插件 → dsh-gitbash-shell」嘅「Git Bash 路徑」填;host 啟動日誌有同一份清單。",
|
|
987
|
+
"bashmiss.close": "閂咗佢",
|
|
856
988
|
"sub.label": "子代理/隊員用 Git Bash",
|
|
857
989
|
"sub.hint": "預設開啟:子代理同團隊隊員(連嵌套)嘅提示詞方言、路徑參數翻譯、結果回顯同 DSH_PATH_DIALECT 環境事實都同主代理一致。閂咗就淨係主代理有,子代理跟官方 shell 語義行(提示詞唔改寫、路徑參數唔翻譯);留意 dsh 每個進程只有一個 shell 執行器,所以 Git Bash 本身仍然係全局嘅,呢個開關管嘅係方言/翻譯層。",
|
|
858
990
|
"eol.label": "Git 行尾(與 Linux 一致)",
|
|
859
991
|
"eol.hint": "模型執行的 git 指令採 Linux 行為:core.autocrlf=input、core.eol=lf。你自己終端的 git 與倉庫的 .gitattributes 都不受影響。",
|
|
860
992
|
"bash.label": "Git Bash 路徑",
|
|
861
993
|
"bash.hint": "自訂 bash.exe 完整路徑;留空自動探測。",
|
|
994
|
+
"bash.saveFailed": "保存未生效:宿主拒絕咗今次寫入 —— 確認路徑存在而且係 Git for Windows 嘅 bash,或者睇宿主日誌",
|
|
862
995
|
"bash.save": "儲存",
|
|
863
996
|
"bash.saved": "已儲存",
|
|
864
997
|
"adopt.label": "接管側欄終端",
|
|
@@ -895,12 +1028,19 @@ window.__ModuleLoader__.load({
|
|
|
895
1028
|
"split.hint": "glob 嘅絕對 pattern 自動拆做 path + 相對 pattern;關閉就原樣傳遞。",
|
|
896
1029
|
"code.label": "run_code 程式內路徑",
|
|
897
1030
|
"code.hint": "run_code 程式內寫的 /c/... 路徑字面量會在執行前按同一張掛載表翻譯;註解、插值模板、$VAR 與非路徑字串不動,掃描有任何不確定就整份不改。 並為程式補上 TEMP/TMP:空 env 下 Windows 的 os.tmpdir() 會得到 undefined\\temp,程式會靜默寫錯位置。",
|
|
1031
|
+
"bashmiss.title": "搵唔到 Git Bash —— 命令行唔到",
|
|
1032
|
+
"bashmiss.body": "本插件淨係用 Git for Windows 跟機嘅 bash(WSL、MSYS2、Cygwin 嘅 bash 一律唔收),亦都唔會退返去 PowerShell/cmd —— 所以呢度只會報錯,唔會偷偷換個行得嘅頂上。喺下面填 bash.exe 嘅完整路徑,或者先裝 Git for Windows。",
|
|
1033
|
+
"bashmiss.tried": "按次序探過呢啲位置(全部拒絕):",
|
|
1034
|
+
"bashmiss.download": "去下載 Git for Windows",
|
|
1035
|
+
"bashmiss.where": "之後都可以喺「設定 → 插件 → dsh-gitbash-shell」嘅「Git Bash 路徑」填;host 啟動日誌有同一份清單。",
|
|
1036
|
+
"bashmiss.close": "閂咗佢",
|
|
898
1037
|
"sub.label": "子代理/隊員用 Git Bash",
|
|
899
1038
|
"sub.hint": "預設開啟:子代理同團隊隊員(連嵌套)嘅提示詞方言、路徑參數翻譯、結果回顯同 DSH_PATH_DIALECT 環境事實都同主代理一致。閂咗就淨係主代理有,子代理跟官方 shell 語義行(提示詞唔改寫、路徑參數唔翻譯);留意 dsh 每個進程只有一個 shell 執行器,所以 Git Bash 本身仍然係全局嘅,呢個開關管嘅係方言/翻譯層。",
|
|
900
1039
|
"eol.label": "Git 行尾(與 Linux 一致)",
|
|
901
1040
|
"eol.hint": "模型執行的 git 指令採 Linux 行為:core.autocrlf=input、core.eol=lf。你自己終端的 git 與倉庫的 .gitattributes 都不受影響。",
|
|
902
1041
|
"bash.label": "Git Bash 路徑",
|
|
903
1042
|
"bash.hint": "自訂 bash.exe 完整路徑;留空自動探測。",
|
|
1043
|
+
"bash.saveFailed": "保存未生效:宿主拒絕咗今次寫入 —— 確認路徑存在而且係 Git for Windows 嘅 bash,或者睇宿主日誌",
|
|
904
1044
|
"bash.save": "儲存",
|
|
905
1045
|
"bash.saved": "已儲存",
|
|
906
1046
|
"adopt.label": "接管側欄終端",
|
|
@@ -937,12 +1077,19 @@ window.__ModuleLoader__.load({
|
|
|
937
1077
|
"split.hint": "glob 的絕對 pattern 自動拆為 path + 相對 pattern;關閉則原樣傳遞。",
|
|
938
1078
|
"code.label": "run_code 程式內路徑",
|
|
939
1079
|
"code.hint": "run_code 程式內寫的 /c/... 路徑字面量會在執行前按同一張掛載表翻譯;註解、插值模板、$VAR 與非路徑字串不動,掃描有任何不確定就整份不改。 並為程式補上 TEMP/TMP:空 env 下 Windows 的 os.tmpdir() 會得到 undefined\\temp,程式會靜默寫錯位置。",
|
|
1080
|
+
"bashmiss.title": "找不到 Git Bash —— 命令無法執行",
|
|
1081
|
+
"bashmiss.body": "本外掛只採用 Git for Windows 隨附的 bash(不接受 WSL、MSYS2、Cygwin 的 bash),也不會退回 PowerShell/cmd —— 因此這裡只回報錯誤,不會偷偷換一個能跑的頂上。請在下方填寫 bash.exe 的完整路徑,或先安裝 Git for Windows。",
|
|
1082
|
+
"bashmiss.tried": "已依序探測這些位置(全部拒絕):",
|
|
1083
|
+
"bashmiss.download": "下載 Git for Windows",
|
|
1084
|
+
"bashmiss.where": "也可以稍後到「設定 → 外掛 → dsh-gitbash-shell」的「Git Bash 路徑」填寫;host 啟動日誌有同一份清單。",
|
|
1085
|
+
"bashmiss.close": "關閉",
|
|
940
1086
|
"sub.label": "子代理/隊員使用 Git Bash",
|
|
941
1087
|
"sub.hint": "預設開啟:子代理與團隊隊員(含巢狀)的提示詞方言、路徑參數翻譯、結果回顯與 DSH_PATH_DIALECT 環境事實都與主代理一致。關閉後僅對主代理生效,子代理依官方 shell 語意執行(提示詞不改寫、路徑參數不翻譯);請注意 dsh 每個行程只有一個 shell 執行器,因此 Git Bash 本身仍是全域的,這個開關管的是方言/翻譯層。",
|
|
942
1088
|
"eol.label": "Git 行尾(與 Linux 一致)",
|
|
943
1089
|
"eol.hint": "模型執行的 git 指令採 Linux 行為:core.autocrlf=input、core.eol=lf。你自己終端的 git 與倉庫的 .gitattributes 都不受影響。",
|
|
944
1090
|
"bash.label": "Git Bash 路徑",
|
|
945
1091
|
"bash.hint": "自訂 bash.exe 完整路徑;留空自動探測。",
|
|
1092
|
+
"bash.saveFailed": "儲存未生效:宿主拒絕了這次寫入 —— 確認路徑存在且為 Git for Windows 的 bash,或查看宿主日誌",
|
|
946
1093
|
"bash.save": "儲存",
|
|
947
1094
|
"bash.saved": "已儲存",
|
|
948
1095
|
"adopt.label": "接管側欄終端機",
|
|
@@ -1048,6 +1195,13 @@ window.__ModuleLoader__.load({
|
|
|
1048
1195
|
".gb-error{margin:0;font-size:12px;color:var(--dsw-alias-status-danger, #e5484d)}",
|
|
1049
1196
|
".gb-card{-webkit-backdrop-filter:var(--dsh-any-blur-card-panels,blur(12px) saturate(1.15));backdrop-filter:var(--dsh-any-blur-card-panels,blur(12px) saturate(1.15))}",
|
|
1050
1197
|
".gb-section+.gb-section{border-top:1px solid var(--dsw-alias-border-l2)}",
|
|
1198
|
+
/* Missing-Git-Bash popup (v0.28.0): a root-level modal, because the
|
|
1199
|
+
user may never be on the settings page when their shell dies. */
|
|
1200
|
+
".gb-modalBackdrop{position:fixed;inset:0;z-index:2147483000;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.45)}",
|
|
1201
|
+
".gb-modal{width:min(560px,92vw);max-height:80vh;overflow:auto;display:flex;flex-direction:column;gap:10px;padding:18px;border-radius:12px;background:var(--dsw-alias-bg-base,#fff);border:1px solid var(--dsw-alias-border-l2);box-shadow:0 18px 48px rgba(0,0,0,.28)}",
|
|
1202
|
+
".gb-modalTitle{font-size:15px;font-weight:600;color:var(--dsw-alias-label-primary)}",
|
|
1203
|
+
".gb-modalList{margin:0;padding-left:18px;font-size:12px;line-height:1.6;color:var(--dsw-alias-label-tertiary);word-break:break-all}",
|
|
1204
|
+
".gb-input{flex:1;min-width:0;padding:6px 8px;font-size:12px;border-radius:8px;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1,transparent);color:var(--dsw-alias-label-primary)}",
|
|
1051
1205
|
".gb-sectionTitle{font-size:12.5px;font-weight:600;letter-spacing:.02em;color:var(--dsw-alias-label-secondary)}",
|
|
1052
1206
|
".gb-input{flex:1;min-width:0;appearance:none;border:1px solid var(--dsw-alias-border-l2);border-radius:8px;background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-primary);font:inherit;font-size:13px;padding:6px 10px;outline:none}",
|
|
1053
1207
|
".gb-input:focus{border-color:var(--dsw-alias-brand-primary)}",
|
|
@@ -1125,6 +1279,9 @@ window.__ModuleLoader__.load({
|
|
|
1125
1279
|
return typeof unsubscribe === "function" ? unsubscribe : undefined;
|
|
1126
1280
|
}, []);
|
|
1127
1281
|
|
|
1282
|
+
if (props.popup === true) {
|
|
1283
|
+
return E(QuietBoundary, null, E(MissingBashPopup, Object.assign({}, props.cardProps, { t: props.t })));
|
|
1284
|
+
}
|
|
1128
1285
|
return E(QuietBoundary, null, E(GitBashCard, Object.assign({}, props.cardProps, { t: props.t })));
|
|
1129
1286
|
}
|
|
1130
1287
|
|
|
@@ -1223,14 +1380,38 @@ window.__ModuleLoader__.load({
|
|
|
1223
1380
|
var enabled = value.posixPaths === true;
|
|
1224
1381
|
var adopt = value.adoptSidebar !== false;
|
|
1225
1382
|
|
|
1383
|
+
/* `ConfigForm.set` resolves with WHETHER THE HOST ACCEPTED the write
|
|
1384
|
+
(dsh ui-settings config-form.ts), so a `false` is a refusal, not a
|
|
1385
|
+
success: claiming "saved" on it would be exactly the silent
|
|
1386
|
+
false-success this plugin forbids (AGENTS §4h). Returns the verdict
|
|
1387
|
+
so each caller can render its own success/failure state. */
|
|
1226
1388
|
function writeField(key, next) {
|
|
1227
1389
|
setError("");
|
|
1228
|
-
scope.set
|
|
1229
|
-
|
|
1230
|
-
.
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1390
|
+
if (!scope || typeof scope.set !== "function") {
|
|
1391
|
+
setError(t("error") + ": " + t("bash.saveFailed"));
|
|
1392
|
+
return Promise.resolve(false);
|
|
1393
|
+
}
|
|
1394
|
+
try {
|
|
1395
|
+
return Promise.resolve(scope.set(key, next)).then(
|
|
1396
|
+
function (accepted) {
|
|
1397
|
+
bumpTick(function (n) { return n + 1; });
|
|
1398
|
+
if (accepted !== true) {
|
|
1399
|
+
setError(t("error") + ": " + t("bash.saveFailed"));
|
|
1400
|
+
return false;
|
|
1401
|
+
}
|
|
1402
|
+
return true;
|
|
1403
|
+
},
|
|
1404
|
+
function (err) {
|
|
1405
|
+
bumpTick(function (n) { return n + 1; });
|
|
1406
|
+
setError(t("error") + ": " + (err && err.message ? err.message : String(err)));
|
|
1407
|
+
return false;
|
|
1408
|
+
},
|
|
1409
|
+
);
|
|
1410
|
+
} catch (err) {
|
|
1411
|
+
bumpTick(function (n) { return n + 1; });
|
|
1412
|
+
setError(t("error") + ": " + (err && err.message ? err.message : String(err)));
|
|
1413
|
+
return Promise.resolve(false);
|
|
1414
|
+
}
|
|
1234
1415
|
}
|
|
1235
1416
|
|
|
1236
1417
|
var Chevron = icon("IconChevronDownOutline14");
|
|
@@ -1321,7 +1502,14 @@ window.__ModuleLoader__.load({
|
|
|
1321
1502
|
),
|
|
1322
1503
|
E("div", { className: "gb-seg" },
|
|
1323
1504
|
E("input", { className: "gb-input", type: "text", spellCheck: false, placeholder: "C:/Program Files/Git/bin/bash.exe", value: bashDraft, onChange: function (e) { setBashDraft(e.target.value); setBashSaved(false); } }),
|
|
1324
|
-
E("button", {
|
|
1505
|
+
E("button", {
|
|
1506
|
+
type: "button",
|
|
1507
|
+
className: "gb-saveBtn" + (bashSaved ? " gb-saved" : ""),
|
|
1508
|
+
onClick: function () {
|
|
1509
|
+
setBashSaved(false);
|
|
1510
|
+
writeField("bashPath", bashDraft.trim()).then(function (accepted) { setBashSaved(accepted === true); });
|
|
1511
|
+
},
|
|
1512
|
+
}, bashSaved ? t("bash.saved") : t("bash.save")),
|
|
1325
1513
|
),
|
|
1326
1514
|
E("p", { className: "gb-hint" }, t("bash.hint")),
|
|
1327
1515
|
),
|
|
@@ -1460,6 +1648,152 @@ window.__ModuleLoader__.load({
|
|
|
1460
1648
|
);
|
|
1461
1649
|
}
|
|
1462
1650
|
|
|
1651
|
+
// ── missing-Git-Bash popup (v0.28.0, issue #11) ────────────────────────
|
|
1652
|
+
//
|
|
1653
|
+
// When no Git for Windows bash resolves, the host cannot run ANY command
|
|
1654
|
+
// (this plugin withdraws pwsh-sandbox and dsh allows one shell per
|
|
1655
|
+
// process) — so the user must not be left staring at `spawn ... ENOENT`.
|
|
1656
|
+
// The host prints the full report to its log and serves the same verdict
|
|
1657
|
+
// at /dsh-gitbash-shell/api/status; this overlay turns it into the two
|
|
1658
|
+
// actions the user asked for: edit the path right here, or go download
|
|
1659
|
+
// Git for Windows. Deliberately NO "keep something runnable" fallback:
|
|
1660
|
+
// an unresolved bash stays unresolved, visibly.
|
|
1661
|
+
var API_PATH = "dsh-gitbash-shell/api/status";
|
|
1662
|
+
var DISMISS_KEY = "dsh-gitbash-shell:bash-missing-dismissed";
|
|
1663
|
+
/** Once per client boot; sessionStorage survives a re-render, not a restart. */
|
|
1664
|
+
var bashPopupShown = false;
|
|
1665
|
+
|
|
1666
|
+
function readDismissed() {
|
|
1667
|
+
try { return window.sessionStorage.getItem(DISMISS_KEY) === "1" } catch (error_) { return false }
|
|
1668
|
+
}
|
|
1669
|
+
function rememberDismissed() {
|
|
1670
|
+
try { window.sessionStorage.setItem(DISMISS_KEY, "1") } catch (error_) { /* private mode */ }
|
|
1671
|
+
}
|
|
1672
|
+
|
|
1673
|
+
function MissingBashPopup(props) {
|
|
1674
|
+
var t = typeof props.t === "function" ? props.t : function (key) { return key; };
|
|
1675
|
+
var dialectState = useState(null);
|
|
1676
|
+
var status = dialectState[0];
|
|
1677
|
+
var setStatus = dialectState[1];
|
|
1678
|
+
var draftState = useState("");
|
|
1679
|
+
var draft = draftState[0];
|
|
1680
|
+
var setDraft = draftState[1];
|
|
1681
|
+
var savedState = useState(false);
|
|
1682
|
+
var saved = savedState[0];
|
|
1683
|
+
var setSaved = savedState[1];
|
|
1684
|
+
var saveErrorState = useState("");
|
|
1685
|
+
var saveError = saveErrorState[0];
|
|
1686
|
+
var setSaveError = saveErrorState[1];
|
|
1687
|
+
var hiddenState = useState(readDismissed());
|
|
1688
|
+
var hidden = hiddenState[0];
|
|
1689
|
+
var setHidden = hiddenState[1];
|
|
1690
|
+
/* "Once per boot" is DECIDED in an effect, never during render: a
|
|
1691
|
+
render-time flag check would make the modal vanish on the very next
|
|
1692
|
+
re-render (the flag it just set). Local state owns this mount's
|
|
1693
|
+
decision; the module flag stops a second mount from repeating it. */
|
|
1694
|
+
var decidedState = useState(false);
|
|
1695
|
+
var decided = decidedState[0];
|
|
1696
|
+
var setDecided = decidedState[1];
|
|
1697
|
+
|
|
1698
|
+
useEffect(function () {
|
|
1699
|
+
var alive = true;
|
|
1700
|
+
/* Mount-relative on purpose (same discipline as dsh-ide-git): the
|
|
1701
|
+
host serves the shell with <base href="./">, so a path without a
|
|
1702
|
+
leading slash lands on the plugin route at the origin root AND
|
|
1703
|
+
behind a prefix-stripping proxy. */
|
|
1704
|
+
try {
|
|
1705
|
+
Promise.resolve(fetch(API_PATH, { headers: { accept: "application/json" } }))
|
|
1706
|
+
.then(function (response) { return response.ok ? response.json() : null })
|
|
1707
|
+
.then(function (data) {
|
|
1708
|
+
if (!alive || !data || data.platform !== "win32" || data.ok !== false) return;
|
|
1709
|
+
if (bashPopupShown || readDismissed()) return;
|
|
1710
|
+
bashPopupShown = true;
|
|
1711
|
+
setStatus(data);
|
|
1712
|
+
setDecided(true);
|
|
1713
|
+
if (typeof data.configured === "string" && data.configured !== "") setDraft(data.configured);
|
|
1714
|
+
})
|
|
1715
|
+
.catch(function () { /* the host may be older; no popup then */ });
|
|
1716
|
+
} catch (error_) { /* keep silent */ }
|
|
1717
|
+
return function () { alive = false; };
|
|
1718
|
+
}, []);
|
|
1719
|
+
|
|
1720
|
+
if (hidden || !decided || status === null) return null;
|
|
1721
|
+
|
|
1722
|
+
var rows = Array.isArray(status.tried) ? status.tried : [];
|
|
1723
|
+
var close = function () { rememberDismissed(); setHidden(true); };
|
|
1724
|
+
var save = function () {
|
|
1725
|
+
setSaved(false);
|
|
1726
|
+
setSaveError("");
|
|
1727
|
+
var forms;
|
|
1728
|
+
try {
|
|
1729
|
+
var c = props.ctx;
|
|
1730
|
+
forms = c === undefined || c === null ? undefined : c.get("configForms");
|
|
1731
|
+
} catch (error_) { forms = undefined; }
|
|
1732
|
+
var form;
|
|
1733
|
+
try { form = forms && typeof forms.get === "function" ? forms.get(SETTINGS_NAMESPACE) : undefined; } catch (error_) { form = undefined; }
|
|
1734
|
+
if (!form || typeof form.set !== "function") {
|
|
1735
|
+
/* No form seat: say so instead of pretending the save landed. */
|
|
1736
|
+
setSaveError(t("error") + ": " + t("bash.saveFailed"));
|
|
1737
|
+
return;
|
|
1738
|
+
}
|
|
1739
|
+
try {
|
|
1740
|
+
/* The verdict is the HOST's: `accepted === false` is a refusal and
|
|
1741
|
+
must NOT read as "saved" (AGENTS §4h, silent false success). */
|
|
1742
|
+
Promise.resolve(form.set("bashPath", draft.trim())).then(
|
|
1743
|
+
function (accepted) {
|
|
1744
|
+
if (accepted === true) { setSaved(true); return; }
|
|
1745
|
+
setSaved(false);
|
|
1746
|
+
setSaveError(t("error") + ": " + t("bash.saveFailed"));
|
|
1747
|
+
},
|
|
1748
|
+
function (err) {
|
|
1749
|
+
setSaved(false);
|
|
1750
|
+
setSaveError(t("error") + ": " + (err && err.message ? err.message : String(err)));
|
|
1751
|
+
},
|
|
1752
|
+
);
|
|
1753
|
+
} catch (err) {
|
|
1754
|
+
setSaved(false);
|
|
1755
|
+
setSaveError(t("error") + ": " + (err && err.message ? err.message : String(err)));
|
|
1756
|
+
}
|
|
1757
|
+
};
|
|
1758
|
+
|
|
1759
|
+
return E("div", { className: "gb-modalBackdrop", role: "dialog", "aria-modal": "true" },
|
|
1760
|
+
E("div", { className: "gb-modal" },
|
|
1761
|
+
E("div", { className: "gb-modalTitle" }, t("bashmiss.title")),
|
|
1762
|
+
E("p", { className: "gb-hint" }, t("bashmiss.body")),
|
|
1763
|
+
rows.length > 0 ? E("div", null,
|
|
1764
|
+
E("div", { className: "gb-rowLabel" }, t("bashmiss.tried")),
|
|
1765
|
+
E("ul", { className: "gb-modalList" }, rows.slice(0, 12).map(function (row, index) {
|
|
1766
|
+
return E("li", { key: String(index) }, (row && row.path ? row.path : "?") + " — " + (row && row.detail ? row.detail : row && row.code ? row.code : ""));
|
|
1767
|
+
})),
|
|
1768
|
+
) : null,
|
|
1769
|
+
E("div", { className: "gb-row" },
|
|
1770
|
+
E("span", { className: "gb-rowLabel" }, t("bash.label") + ":"),
|
|
1771
|
+
E("input", {
|
|
1772
|
+
className: "gb-input",
|
|
1773
|
+
type: "text",
|
|
1774
|
+
value: draft,
|
|
1775
|
+
placeholder: "Q:/Git/bin/bash.exe",
|
|
1776
|
+
onChange: function (event) { setDraft(event.target.value); setSaved(false); },
|
|
1777
|
+
}),
|
|
1778
|
+
),
|
|
1779
|
+
E("div", { className: "gb-seg" },
|
|
1780
|
+
E("button", { type: "button", className: "gb-segBtn", onClick: save }, t("bash.save")),
|
|
1781
|
+
saved ? E("span", { className: "gb-rowValue" }, t("bash.saved")) : null,
|
|
1782
|
+
),
|
|
1783
|
+
saveError !== "" ? E("p", { className: "gb-error" }, saveError) : null,
|
|
1784
|
+
E("p", { className: "gb-hint" }, t("bashmiss.where")),
|
|
1785
|
+
E("div", { className: "gb-seg" },
|
|
1786
|
+
E("button", {
|
|
1787
|
+
type: "button",
|
|
1788
|
+
className: "gb-segBtn gb-segActive",
|
|
1789
|
+
onClick: function () { try { window.open(status.downloadUrl || "https://git-scm.com/download/win", "_blank", "noopener") } catch (error_) { /* blocked */ } },
|
|
1790
|
+
}, t("bashmiss.download")),
|
|
1791
|
+
E("button", { type: "button", className: "gb-segBtn", onClick: close }, t("bashmiss.close")),
|
|
1792
|
+
),
|
|
1793
|
+
),
|
|
1794
|
+
);
|
|
1795
|
+
}
|
|
1796
|
+
|
|
1463
1797
|
// ── plugin ────────────────────────────────────────────────────────────
|
|
1464
1798
|
|
|
1465
1799
|
exports.name = "dsh-gitbash-shell/client";
|
|
@@ -1560,6 +1894,18 @@ window.__ModuleLoader__.load({
|
|
|
1560
1894
|
// dsh 0.1.6-alpha.2+: the Plugins page's bundle configuration seat,
|
|
1561
1895
|
// keyed by the PACKAGE name. Each inject waits for its own slot
|
|
1562
1896
|
// declaration, so exactly one seat is live on any host version.
|
|
1897
|
+
/* Root-level popup seat: rendered regardless of which page is open,
|
|
1898
|
+
which is the point — the user may never open settings. */
|
|
1899
|
+
slots.inject("shell.overlay", function () {
|
|
1900
|
+
return slots.register({
|
|
1901
|
+
name: "shell.overlay",
|
|
1902
|
+
id: "gitbash-shell:bash-missing",
|
|
1903
|
+
locale: NS,
|
|
1904
|
+
inject: injected,
|
|
1905
|
+
}, function MissingBashPopupWithLocale(props) {
|
|
1906
|
+
return E(LocaleLive, { ctx: ctx, t: t, cardProps: props, popup: true });
|
|
1907
|
+
});
|
|
1908
|
+
});
|
|
1563
1909
|
slots.inject("plugins.bundle.config", function () {
|
|
1564
1910
|
return slots.register({
|
|
1565
1911
|
name: "plugins.bundle.config",
|