dsh-gitbash-shell 0.27.0 → 0.29.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 +91 -0
- package/README.md +46 -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 +405 -7
- package/src/index.js +146 -24
- package/src/shell.js +58 -10
- package/src/terminal-shell.js +206 -0
package/src/client.js
CHANGED
|
@@ -87,12 +87,21 @@ 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 二进制本身仍是全局的,此开关管的是方言/翻译层。",
|
|
98
|
+
"term.label": "自动接管侧栏终端",
|
|
99
|
+
"term.hint": "默认开启:Windows 上把官方「新建终端」的 shell 自动设成探测到的 Git Bash(写进官方 terminal-controller 行的配置,由官方配置编辑器落盘)——没有这一项时,dsh 会按环境默认 shell 启动终端,而 PATH 里的 bash 常常是 WSL 启动器,于是新终端跑的是 Ubuntu。只在该行**没有**自己的 shell 时才写;你已经手动指定过别的 shell 就绝不覆盖,只会在宿主日志里提示。新终端立即生效,已打开的终端保持原样。 注意:关掉这个开关只会阻止**以后**的自动写入,不会删除已经写进 profile 配置的 shell 字段 —— 要彻底恢复原样,请把 profile 的 patch 里 terminal-controller 行的 shell 字段删掉再重启 DSH。",
|
|
92
100
|
"eol.label": "Git 行尾(与 Linux 一致)",
|
|
93
101
|
"eol.hint": "模型跑的 git 命令按 Linux 行为:core.autocrlf=input、core.eol=lf。你自己终端的 git 与仓库里的 .gitattributes 都不受影响。",
|
|
94
102
|
"bash.label": "Git Bash 路径",
|
|
95
103
|
"bash.hint": "自定义 bash.exe 完整路径,用于 /usr 等挂载的 Git 根解析;留空自动探测默认安装与 PATH。",
|
|
104
|
+
"bash.saveFailed": "保存未生效:宿主拒绝了这次写入 —— 确认路径存在且是 Git for Windows 的 bash,或查看宿主日志",
|
|
96
105
|
"bash.save": "保存",
|
|
97
106
|
"bash.saved": "已保存",
|
|
98
107
|
"adopt.label": "接管侧栏终端",
|
|
@@ -129,12 +138,21 @@ window.__ModuleLoader__.load({
|
|
|
129
138
|
"split.hint": "An absolute glob pattern (/c/.../*.md) splits into path + relative pattern; off passes it through verbatim.",
|
|
130
139
|
"code.label": "run_code program paths",
|
|
131
140
|
"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.",
|
|
141
|
+
"bashmiss.title": "Git Bash not found — commands cannot run",
|
|
142
|
+
"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.",
|
|
143
|
+
"bashmiss.tried": "Probed these locations in order (all rejected):",
|
|
144
|
+
"bashmiss.download": "Download Git for Windows",
|
|
145
|
+
"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.",
|
|
146
|
+
"bashmiss.close": "Close",
|
|
132
147
|
"sub.label": "Subagents/teammates use Git Bash",
|
|
133
148
|
"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.",
|
|
149
|
+
"term.label": "Adopt the sidebar terminal",
|
|
150
|
+
"term.hint": "On by default: on Windows the official “new terminal” shell is set to the detected Git Bash (written into the official terminal-controller row through the official config editor). Without it dsh starts the terminal with the environment default shell, and PATH's bash is often the WSL launcher — so the new terminal runs Ubuntu. It only writes when that row has NO shell of its own; an explicit choice is never overwritten, it just gets a host-log line. New terminals pick it up immediately, already-open ones keep their shell. Note: turning this switch off only stops FUTURE writes — it does not remove a shell field already written into the profile config. To restore the original exactly, delete the shell field from the terminal-controller row in the profile patch and restart DSH.",
|
|
134
151
|
"eol.label": "Git line endings (Linux match)",
|
|
135
152
|
"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
153
|
"bash.label": "Git Bash path",
|
|
137
154
|
"bash.hint": "Full path of a custom bash.exe for resolving /usr mounts; empty = auto-detect the default install and PATH.",
|
|
155
|
+
"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
156
|
"bash.save": "Save",
|
|
139
157
|
"bash.saved": "Saved",
|
|
140
158
|
"adopt.label": "Adopt sidebar terminal",
|
|
@@ -181,12 +199,21 @@ window.__ModuleLoader__.load({
|
|
|
181
199
|
"split.hint": "نمط glob المطلق يُقسم إلى path + نمط نسبي؛ الإيقاف يمرره كما هو.",
|
|
182
200
|
"code.label": "مسارات برامج run_code",
|
|
183
201
|
"code.hint": "تُترجم السلاسل النصية للمسارات المكتوبة داخل برنامج run_code عبر جدول التحميل نفسه قبل التشغيل؛ وتبقى التعليقات والقوالب ذات الإدراج و$VAR والسلاسل غير المسارية كما هي، وأي التباس يُبقي البرنامج كاملًا دون تغيير. وتُهيَّأ أيضًا TEMP/TMP للبرنامج: مع بيئة فارغة يعيد os.tmpdir() على ويندوز القيمة undefined\\temp فيُكتب في مكان خاطئ.",
|
|
202
|
+
"bashmiss.title": "لم يُعثر على Git Bash — لا يمكن تنفيذ الأوامر",
|
|
203
|
+
"bashmiss.body": "هذه الإضافة تقبل فقط bash المرفق مع Git for Windows (ولا تقبل bash الخاص بـ WSL أو MSYS2 أو Cygwin)، ولا ترجع أبدًا إلى PowerShell/cmd — لذلك تُبلغ عن الفشل بدل استبداله بصمت. أدخل المسار الكامل لـ bash.exe أدناه أو ثبّت Git for Windows أولًا.",
|
|
204
|
+
"bashmiss.tried": "تم فحص هذه المواقع بالترتيب (ورُفضت جميعها):",
|
|
205
|
+
"bashmiss.download": "تنزيل Git for Windows",
|
|
206
|
+
"bashmiss.where": "يمكنك أيضًا تعبئة هذا لاحقًا من «الإعدادات → الإضافات → dsh-gitbash-shell → مسار Git Bash»؛ وسجل تشغيل المضيف يحمل نفس قائمة الفحص.",
|
|
207
|
+
"bashmiss.close": "إغلاق",
|
|
184
208
|
"sub.label": "استخدام الوكلاء الفرعيين لـ Git Bash",
|
|
185
209
|
"sub.hint": "مُفعَّل (افتراضيًا): يحصل الوكلاء الفرعيون وأعضاء الفريق — بما في ذلك المتداخلون — على لهجة المطالبة وترجمة مسارات الوسائط وصدى النتائج وحقيقة DSH_PATH_DIALECT نفسها التي يحصل عليها الوكيل الرئيسي. عند الإيقاف تُطبَّق هذه على الوكيل الرئيسي فقط ويعمل الوكلاء المفوَّضون بدلالات الصدفة الرسمية (دون إعادة كتابة المطالبة أو ترجمة المسارات). لاحظ أن dsh يملك مُنفِّذ صدفة واحدًا لكل عملية، لذا يبقى ثنائي Git Bash عامًّا؛ هذا المفتاح يحكم طبقتي اللهجة والترجمة.",
|
|
210
|
+
"term.label": "تبنّي طرفية الشريط الجانبي",
|
|
211
|
+
"term.hint": "مُفعَّل افتراضيًا: على Windows يُضبط shell الخاص بـ«الطرفية الجديدة» الرسمية على Git Bash المكتشف (يُكتب في صف terminal-controller الرسمي عبر محرر الإعدادات الرسمي). بدونه يبدأ dsh الطرفية بالـ shell الافتراضي للبيئة، وغالبًا ما يكون bash في PATH هو مشغّل WSL فتعمل الطرفية الجديدة على Ubuntu. لا يُكتب إلا عندما لا يملك ذلك الصف shell خاصًا به؛ ولا يُستبدل اختيار صريح أبدًا، بل يُسجَّل سطر في سجل المضيف. الطرفيات الجديدة تسري فورًا، والمفتوحة تبقى كما هي. ملاحظة: إيقاف هذا المفتاح يمنع الكتابات المستقبلية فقط ولا يحذف حقل shell المكتوب بالفعل في إعدادات الملف الشخصي؛ لاستعادة الأصل تمامًا احذف حقل shell من صف terminal-controller في patch الملف الشخصي ثم أعد تشغيل DSH.",
|
|
186
212
|
"eol.label": "نهايات أسطر Git (مطابقة لينكس)",
|
|
187
213
|
"eol.hint": "أوامر git التي يشغّلها النموذج تتبع سلوك لينكس: core.autocrlf=input و core.eol=lf؛ لا يتأثر طرفيتك ولا ملف .gitattributes للمستودع.",
|
|
188
214
|
"bash.label": "مسار Git Bash",
|
|
189
215
|
"bash.hint": "المسار الكامل لنسخة bash.exe مخصصة؛ فارغ = اكتشاف تلقائي.",
|
|
216
|
+
"bash.saveFailed": "لم يُطبَّق الحفظ: رفض المضيف هذه الكتابة — تحقق من وجود المسار وأنه bash الخاص بـ Git for Windows، أو راجع سجل المضيف",
|
|
190
217
|
"bash.save": "حفظ",
|
|
191
218
|
"bash.saved": "تم الحفظ",
|
|
192
219
|
"adopt.label": "تبنّي طرفية الشريط الجانبي",
|
|
@@ -223,12 +250,21 @@ window.__ModuleLoader__.load({
|
|
|
223
250
|
"split.hint": "Ein absolutes Glob-Muster zerfällt in Pfad + relatives Muster; aus übergibt es unverändert.",
|
|
224
251
|
"code.label": "Pfade in run_code-Programmen",
|
|
225
252
|
"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.",
|
|
253
|
+
"bashmiss.title": "Git Bash nicht gefunden — Befehle können nicht laufen",
|
|
254
|
+
"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.",
|
|
255
|
+
"bashmiss.tried": "Der Reihe nach geprüft (alle abgelehnt):",
|
|
256
|
+
"bashmiss.download": "Git for Windows herunterladen",
|
|
257
|
+
"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.",
|
|
258
|
+
"bashmiss.close": "Schließen",
|
|
226
259
|
"sub.label": "Subagenten/Teammitglieder nutzen Git Bash",
|
|
227
260
|
"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.",
|
|
261
|
+
"term.label": "Seitenleisten-Terminal übernehmen",
|
|
262
|
+
"term.hint": "Standardmäßig an: Unter Windows wird die Shell des offiziellen „Neuen Terminals“ auf die erkannte Git Bash gesetzt (geschrieben in die offizielle terminal-controller-Zeile über den offiziellen Konfigurationseditor). Ohne das startet dsh das Terminal mit der Umgebungs-Standardshell, und das bash im PATH ist oft der WSL-Starter — das neue Terminal läuft dann unter Ubuntu. Geschrieben wird nur, wenn diese Zeile KEINE eigene Shell hat; eine ausdrückliche Wahl wird nie überschrieben, sondern nur im Host-Protokoll vermerkt. Neue Terminals übernehmen es sofort, bereits offene behalten ihre Shell. Hinweis: Dieser Schalter verhindert nur KÜNFTIGE Schreibvorgänge — ein bereits in die Profilkonfiguration geschriebenes shell-Feld wird nicht entfernt. Für den exakten Originalzustand das shell-Feld in der terminal-controller-Zeile des Profil-Patchs löschen und DSH neu starten.",
|
|
228
263
|
"eol.label": "Git-Zeilenenden (Linux-gleich)",
|
|
229
264
|
"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
265
|
"bash.label": "Git-Bash-Pfad",
|
|
231
266
|
"bash.hint": "Vollständiger Pfad einer benutzerdefinierten bash.exe; leer = automatische Erkennung.",
|
|
267
|
+
"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
268
|
"bash.save": "Speichern",
|
|
233
269
|
"bash.saved": "Gespeichert",
|
|
234
270
|
"adopt.label": "Sidebar-Terminal übernehmen",
|
|
@@ -265,12 +301,21 @@ window.__ModuleLoader__.load({
|
|
|
265
301
|
"split.hint": "Un motif glob absolu se scinde en chemin + motif relatif ; désactivé le passe tel quel.",
|
|
266
302
|
"code.label": "chemins dans les programmes run_code",
|
|
267
303
|
"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.",
|
|
304
|
+
"bashmiss.title": "Git Bash introuvable — les commandes ne peuvent pas s'exécuter",
|
|
305
|
+
"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.",
|
|
306
|
+
"bashmiss.tried": "Emplacements testés dans l'ordre (tous refusés) :",
|
|
307
|
+
"bashmiss.download": "Télécharger Git for Windows",
|
|
308
|
+
"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.",
|
|
309
|
+
"bashmiss.close": "Fermer",
|
|
268
310
|
"sub.label": "Les sous-agents utilisent Git Bash",
|
|
269
311
|
"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.",
|
|
312
|
+
"term.label": "Adopter le terminal latéral",
|
|
313
|
+
"term.hint": "Activé par défaut : sous Windows, le shell du « nouveau terminal » officiel est réglé sur le Git Bash détecté (écrit dans la ligne officielle terminal-controller via l'éditeur de configuration officiel). Sans cela, dsh démarre le terminal avec le shell par défaut de l'environnement, et le bash du PATH est souvent le lanceur WSL — le nouveau terminal tourne alors sous Ubuntu. L'écriture n'a lieu que si cette ligne n'a AUCUN shell propre ; un choix explicite n'est jamais écrasé, seulement consigné dans le journal de l'hôte. Les nouveaux terminaux en profitent immédiatement, ceux déjà ouverts gardent leur shell. Remarque : désactiver ce commutateur n'empêche que les écritures FUTURES — il ne supprime pas un champ shell déjà écrit dans la configuration du profil. Pour revenir exactement à l'état initial, supprimez le champ shell de la ligne terminal-controller du patch de profil puis redémarrez DSH.",
|
|
270
314
|
"eol.label": "fins de ligne Git (comme Linux)",
|
|
271
315
|
"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
316
|
"bash.label": "Chemin Git Bash",
|
|
273
317
|
"bash.hint": "Chemin complet d'un bash.exe personnalisé ; vide = détection automatique.",
|
|
318
|
+
"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
319
|
"bash.save": "Enregistrer",
|
|
275
320
|
"bash.saved": "Enregistré",
|
|
276
321
|
"adopt.label": "Adopter le terminal latéral",
|
|
@@ -307,12 +352,21 @@ window.__ModuleLoader__.load({
|
|
|
307
352
|
"split.hint": "एब्सोल्यूट glob पैटर्न path + रिलेटिव पैटर्न में विभाजित होता है; बंद इसे वैसे ही पास करता है।",
|
|
308
353
|
"code.label": "run_code प्रोग्राम पथ",
|
|
309
354
|
"code.hint": "run_code प्रोग्राम में लिखे पथ लिटरल चलने से पहले उसी माउंट तालिका से अनूदित होते हैं; टिप्पणियाँ, इंटरपोलेटेड टेम्पलेट, $VAR और गैर-पथ स्ट्रिंग अछूते रहते हैं, और किसी भी अनिश्चितता पर पूरा प्रोग्राम अपरिवर्तित रहता है। साथ ही प्रोग्राम के लिए TEMP/TMP भर दिए जाते हैं: खाली env में Windows पर os.tmpdir() undefined\\temp देता है और गलत जगह लिखता है।",
|
|
355
|
+
"bashmiss.title": "Git Bash नहीं मिला — कमांड नहीं चल सकतीं",
|
|
356
|
+
"bashmiss.body": "यह प्लगइन केवल Git for Windows के साथ आने वाले bash को स्वीकार करता है (WSL, MSYS2 और Cygwin का bash अस्वीकार है) और कभी PowerShell/cmd पर नहीं लौटता — इसलिए यह विफलता बताता है, चुपचाप कोई चलने वाला शेल नहीं लगाता। नीचे bash.exe का पूरा पाथ भरें, या पहले Git for Windows इंस्टॉल करें।",
|
|
357
|
+
"bashmiss.tried": "इन स्थानों को क्रम से जाँचा गया (सभी अस्वीकृत):",
|
|
358
|
+
"bashmiss.download": "Git for Windows डाउनलोड करें",
|
|
359
|
+
"bashmiss.where": "बाद में «सेटिंग्स → प्लगइन → dsh-gitbash-shell → Git Bash पाथ» में भी भर सकते हैं; होस्ट स्टार्टअप लॉग में वही सूची है।",
|
|
360
|
+
"bashmiss.close": "बंद करें",
|
|
310
361
|
"sub.label": "सबएजेंट/टीम सदस्य Git Bash इस्तेमाल करें",
|
|
311
362
|
"sub.hint": "चालू (डिफ़ॉल्ट): सबएजेंट और टीम सदस्य — नेस्टेड सहित — मुख्य एजेंट जैसा ही प्रॉम्प्ट डायलेक्ट, पाथ आर्ग्युमेंट अनुवाद, परिणाम इको और DSH_PATH_DIALECT तथ्य पाते हैं। बंद: ये केवल मुख्य एजेंट पर लागू होते हैं और प्रतिनिधित एजेंट आधिकारिक शेल अर्थ में चलते हैं (प्रॉम्प्ट नहीं बदलता, पाथ अनुवाद नहीं होता)। ध्यान दें: dsh में प्रति प्रोसेस एक ही शेल एक्ज़ीक्यूटर होता है, इसलिए Git Bash बाइनरी वैश्विक रहती है; यह स्विच डायलेक्ट/अनुवाद परतों को नियंत्रित करता है।",
|
|
363
|
+
"term.label": "साइडबार टर्मिनल अपनाएँ",
|
|
364
|
+
"term.hint": "डिफ़ॉल्ट रूप से चालू: Windows पर आधिकारिक «नया टर्मिनल» का shell पहचाने गए Git Bash पर सेट होता है (आधिकारिक कॉन्फ़िग एडिटर के ज़रिए आधिकारिक terminal-controller पंक्ति में लिखा जाता है)। इसके बिना dsh टर्मिनल को पर्यावरण के डिफ़ॉल्ट shell से शुरू करता है, और PATH का bash अक्सर WSL लॉन्चर होता है — तब नया टर्मिनल Ubuntu पर चलता है। लिखा तभी जाता है जब उस पंक्ति का अपना कोई shell न हो; स्पष्ट चयन कभी अधिलेखित नहीं होता, केवल होस्ट लॉग में दर्ज होता है। नए टर्मिनल तुरंत इसे लेते हैं, खुले हुए अपना shell रखते हैं। ध्यान दें: यह स्विच बंद करने से केवल आगे की लेखन रुकती है — प्रोफ़ाइल कॉन्फ़िग में पहले से लिखा shell फ़ील्ड हटता नहीं। पूरी तरह मूल स्थिति में लौटने के लिए प्रोफ़ाइल patch की terminal-controller पंक्ति से shell फ़ील्ड हटाकर DSH पुनः आरंभ करें।",
|
|
312
365
|
"eol.label": "Git पंक्ति-अंत (Linux जैसा)",
|
|
313
366
|
"eol.hint": "मॉडल द्वारा चलाए git कमांड Linux व्यवहार अपनाते हैं: core.autocrlf=input, core.eol=lf। आपका टर्मिनल और रेपो का .gitattributes अछूते रहते हैं।",
|
|
314
367
|
"bash.label": "Git Bash पथ",
|
|
315
368
|
"bash.hint": "कस्टम bash.exe का पूर्ण पथ; खाली = ऑटो-डिटेक्ट।",
|
|
369
|
+
"bash.saveFailed": "सहेजना लागू नहीं हुआ: होस्ट ने यह लेखन अस्वीकार किया — जाँचें कि पाथ मौजूद है और Git for Windows का bash है, या होस्ट लॉग देखें",
|
|
316
370
|
"bash.save": "सहेजें",
|
|
317
371
|
"bash.saved": "सहेजा गया",
|
|
318
372
|
"adopt.label": "साइडबार टर्मिनल अपनाएँ",
|
|
@@ -349,12 +403,21 @@ window.__ModuleLoader__.load({
|
|
|
349
403
|
"split.hint": "Pattern glob absolut dipecah menjadi path + pattern relatif; nonaktif meneruskannya apa adanya.",
|
|
350
404
|
"code.label": "jalur dalam program run_code",
|
|
351
405
|
"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.",
|
|
406
|
+
"bashmiss.title": "Git Bash tidak ditemukan — perintah tidak bisa jalan",
|
|
407
|
+
"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.",
|
|
408
|
+
"bashmiss.tried": "Diperiksa berurutan (semua ditolak):",
|
|
409
|
+
"bashmiss.download": "Unduh Git for Windows",
|
|
410
|
+
"bashmiss.where": "Bisa juga diisi nanti di «Setelan → Plugin → dsh-gitbash-shell → Path Git Bash»; log mulai host memuat daftar yang sama.",
|
|
411
|
+
"bashmiss.close": "Tutup",
|
|
352
412
|
"sub.label": "Subagen/teman tim memakai Git Bash",
|
|
353
413
|
"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.",
|
|
414
|
+
"term.label": "Adopsi terminal sidebar",
|
|
415
|
+
"term.hint": "Aktif secara bawaan: di Windows, shell «terminal baru» resmi disetel ke Git Bash yang terdeteksi (ditulis ke baris terminal-controller resmi lewat editor konfigurasi resmi). Tanpanya dsh memulai terminal dengan shell bawaan lingkungan, dan bash di PATH sering kali peluncur WSL — terminal baru pun berjalan di Ubuntu. Penulisan hanya terjadi bila baris itu TIDAK punya shell sendiri; pilihan eksplisit tidak pernah ditimpa, hanya dicatat di log host. Terminal baru langsung memakainya, yang sudah terbuka tetap seperti semula. Catatan: mematikan sakelar ini hanya menghentikan penulisan BERIKUTNYA — tidak menghapus bidang shell yang sudah tertulis di konfigurasi profil. Untuk kembali persis seperti semula, hapus bidang shell dari baris terminal-controller di patch profil lalu mulai ulang DSH.",
|
|
354
416
|
"eol.label": "akhir baris Git (sama seperti Linux)",
|
|
355
417
|
"eol.hint": "Perintah git yang dijalankan model mengikuti perilaku Linux: core.autocrlf=input, core.eol=lf. Terminal Anda dan .gitattributes repo tidak terpengaruh.",
|
|
356
418
|
"bash.label": "Path Git Bash",
|
|
357
419
|
"bash.hint": "Path lengkap bash.exe kustom; kosong = deteksi otomatis.",
|
|
420
|
+
"bash.saveFailed": "Penyimpanan tidak berlaku: host menolak penulisan ini — pastikan path ada dan menunjuk ke bash Git for Windows, atau baca log host",
|
|
358
421
|
"bash.save": "Simpan",
|
|
359
422
|
"bash.saved": "Tersimpan",
|
|
360
423
|
"adopt.label": "Adopsi terminal sidebar",
|
|
@@ -391,12 +454,21 @@ window.__ModuleLoader__.load({
|
|
|
391
454
|
"split.hint": "Un pattern glob assoluto si divide in percorso + pattern relativo; off lo passa invariato.",
|
|
392
455
|
"code.label": "percorsi nei programmi run_code",
|
|
393
456
|
"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.",
|
|
457
|
+
"bashmiss.title": "Git Bash non trovato — i comandi non possono partire",
|
|
458
|
+
"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.",
|
|
459
|
+
"bashmiss.tried": "Posizioni provate in ordine (tutte rifiutate):",
|
|
460
|
+
"bashmiss.download": "Scarica Git for Windows",
|
|
461
|
+
"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.",
|
|
462
|
+
"bashmiss.close": "Chiudi",
|
|
394
463
|
"sub.label": "Subagenti/compagni usano Git Bash",
|
|
395
464
|
"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.",
|
|
465
|
+
"term.label": "Adotta il terminale laterale",
|
|
466
|
+
"term.hint": "Attivo per impostazione predefinita: su Windows la shell del «nuovo terminale» ufficiale viene impostata sul Git Bash rilevato (scritto nella riga ufficiale terminal-controller tramite l'editor di configurazione ufficiale). Senza questo dsh avvia il terminale con la shell predefinita dell'ambiente, e il bash nel PATH è spesso l'avviatore WSL — così il nuovo terminale gira su Ubuntu. La scrittura avviene solo se quella riga NON ha una shell propria; una scelta esplicita non viene mai sovrascritta, solo annotata nel log dell'host. I nuovi terminali la usano subito, quelli già aperti mantengono la loro shell. Nota: disattivare questo interruttore ferma solo le scritture FUTURE — non rimuove un campo shell già scritto nella configurazione del profilo. Per tornare esattamente allo stato iniziale, elimina il campo shell dalla riga terminal-controller nel patch del profilo e riavvia DSH.",
|
|
396
467
|
"eol.label": "fine riga Git (come Linux)",
|
|
397
468
|
"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
469
|
"bash.label": "Percorso Git Bash",
|
|
399
470
|
"bash.hint": "Percorso completo di un bash.exe personalizzato; vuoto = rilevamento automatico.",
|
|
471
|
+
"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
472
|
"bash.save": "Salva",
|
|
401
473
|
"bash.saved": "Salvato",
|
|
402
474
|
"adopt.label": "Adotta il terminale laterale",
|
|
@@ -433,12 +505,21 @@ window.__ModuleLoader__.load({
|
|
|
433
505
|
"split.hint": "絶対 glob パターンを path + 相対パターンに分割;オフならそのまま渡します。",
|
|
434
506
|
"code.label": "run_code プログラム内のパス",
|
|
435
507
|
"code.hint": "run_code プログラム内に書いた /c/... などのパスリテラルは実行前に同じマウント表で変換されます。コメント・補間テンプレート・$VAR・パス以外の文字列は変更せず、解析に不確かさがあればプログラム全体をそのまま実行します。 さらにプログラムに TEMP/TMP を渡します: 空の env では Windows の os.tmpdir() が undefined\\temp を返し、誤った場所に書き込みます。",
|
|
508
|
+
"bashmiss.title": "Git Bash が見つかりません — コマンドを実行できません",
|
|
509
|
+
"bashmiss.body": "本プラグインは Git for Windows 付属の bash のみを受け付け(WSL・MSYS2・Cygwin の bash は拒否)、PowerShell/cmd へフォールバックしません —— 動くシェルを黙って差し替えるのではなく、失敗として報告します。下に bash.exe のフルパスを入力するか、先に Git for Windows をインストールしてください。",
|
|
510
|
+
"bashmiss.tried": "順に確認した場所(すべて拒否):",
|
|
511
|
+
"bashmiss.download": "Git for Windows をダウンロード",
|
|
512
|
+
"bashmiss.where": "後から「設定 → プラグイン → dsh-gitbash-shell → Git Bash パス」でも入力できます。host の起動ログにも同じ一覧があります。",
|
|
513
|
+
"bashmiss.close": "閉じる",
|
|
436
514
|
"sub.label": "サブエージェント/チームメンバーも Git Bash を使う",
|
|
437
515
|
"sub.hint": "オン(既定):サブエージェントとチームメンバー(ネスト含む)は、メインエージェントと同じプロンプト方言・パス引数の翻訳・結果エコー・DSH_PATH_DIALECT の事実を受け取ります。オフ:これらはメインエージェントのみに適用され、委譲されたエージェントは公式の shell セマンティクスで動作します(プロンプト改写なし、パス翻訳なし)。なお dsh はプロセスごとに shell 実行器を 1 つだけ持つため、Git Bash バイナリ自体は常に全体共通です。このスイッチが制御するのは方言/翻訳の層です。",
|
|
516
|
+
"term.label": "サイドバー端末を引き継ぐ",
|
|
517
|
+
"term.hint": "既定でオン:Windows では公式の「新しいターミナル」の shell を検出した Git Bash に設定します(公式の設定エディター経由で公式 terminal-controller 行に書き込み)。これがないと dsh は環境既定の shell で端末を起動し、PATH の bash はしばしば WSL ランチャーなので新しい端末は Ubuntu で動きます。書き込むのはその行に独自の shell が**ない**ときだけです。明示的な選択は決して上書きせず、ホストログに記録するだけです。新しい端末には即時反映され、開いている端末はそのままです。 注意:このスイッチを切っても**今後**の自動書き込みが止まるだけで、すでにプロファイル設定に書き込まれた shell フィールドは削除されません。完全に元へ戻すには、プロファイル patch の terminal-controller 行から shell フィールドを削除して DSH を再起動してください。",
|
|
438
518
|
"eol.label": "Git の行末(Linux と同じ)",
|
|
439
519
|
"eol.hint": "モデルが実行する git コマンドは Linux と同じ挙動になります: core.autocrlf=input、core.eol=lf。あなたのターミナルやリポジトリの .gitattributes は影響を受けません。",
|
|
440
520
|
"bash.label": "Git Bash パス",
|
|
441
521
|
"bash.hint": "カスタム bash.exe の完全パス;空欄なら自動検出。",
|
|
522
|
+
"bash.saveFailed": "保存が反映されません:ホストがこの書き込みを拒否しました —— パスが存在し Git for Windows の bash か確認するか、ホストログを見てください",
|
|
442
523
|
"bash.save": "保存",
|
|
443
524
|
"bash.saved": "保存済み",
|
|
444
525
|
"adopt.label": "サイドバーターミナルを引き継ぐ",
|
|
@@ -475,12 +556,21 @@ window.__ModuleLoader__.load({
|
|
|
475
556
|
"split.hint": "절대 glob 패턴을 path + 상대 패턴으로 분할; 끄면 그대로 전달.",
|
|
476
557
|
"code.label": "run_code 프로그램 경로",
|
|
477
558
|
"code.hint": "run_code 프로그램에 쓴 /c/... 경로 리터럴은 실행 전에 같은 마운트 표로 변환됩니다. 주석, 보간 템플릿, $VAR, 경로가 아닌 문자열은 그대로 두고, 스캔이 불확실하면 프로그램 전체를 그대로 둡니다. 또한 프로그램에 TEMP/TMP를 채워 줍니다: 빈 env에서 Windows의 os.tmpdir()는 undefined\\temp를 반환해 엉뚱한 곳에 씁니다.",
|
|
559
|
+
"bashmiss.title": "Git Bash를 찾을 수 없음 — 명령을 실행할 수 없습니다",
|
|
560
|
+
"bashmiss.body": "이 플러그인은 Git for Windows에 포함된 bash만 허용하며(WSL·MSYS2·Cygwin bash는 거부), PowerShell/cmd로 되돌아가지 않습니다 — 실행 가능한 셸을 조용히 바꿔치기하지 않고 실패를 그대로 알립니다. 아래에 bash.exe 전체 경로를 입력하거나 먼저 Git for Windows를 설치하세요.",
|
|
561
|
+
"bashmiss.tried": "순서대로 확인한 위치(모두 거부):",
|
|
562
|
+
"bashmiss.download": "Git for Windows 다운로드",
|
|
563
|
+
"bashmiss.where": "나중에 «설정 → 플러그인 → dsh-gitbash-shell → Git Bash 경로»에서도 입력할 수 있습니다. host 시작 로그에도 같은 목록이 있습니다.",
|
|
564
|
+
"bashmiss.close": "닫기",
|
|
478
565
|
"sub.label": "서브에이전트/팀원도 Git Bash 사용",
|
|
479
566
|
"sub.hint": "켬(기본): 서브에이전트와 팀원(중첩 포함)은 메인 에이전트와 동일한 프롬프트 방언, 경로 인자 번역, 결과 에코, DSH_PATH_DIALECT 사실을 받습니다. 끔: 이것들은 메인 에이전트에만 적용되고 위임된 에이전트는 공식 shell 의미로 동작합니다(프롬프트 재작성 없음, 경로 번역 없음). 참고로 dsh는 프로세스당 shell 실행기가 하나뿐이라 Git Bash 바이너리 자체는 항상 전역입니다. 이 스위치는 방언/번역 계층을 제어합니다.",
|
|
567
|
+
"term.label": "사이드바 터미널 자동 인수",
|
|
568
|
+
"term.hint": "기본 켜짐: Windows에서 공식 «새 터미널»의 shell을 감지된 Git Bash로 설정합니다(공식 구성 편집기를 통해 공식 terminal-controller 행에 기록). 이것이 없으면 dsh는 환경 기본 shell로 터미널을 시작하고, PATH의 bash는 흔히 WSL 런처라서 새 터미널이 Ubuntu로 실행됩니다. 해당 행에 자체 shell이 **없을 때만** 기록하며, 명시적 선택은 절대 덮어쓰지 않고 호스트 로그에만 남깁니다. 새 터미널에는 즉시 적용되고 이미 열린 터미널은 그대로입니다. 참고: 이 스위치를 꺼도 앞으로의 자동 쓰기만 멈출 뿐, 이미 프로필 설정에 기록된 shell 필드는 삭제되지 않습니다. 완전히 원래대로 되돌리려면 프로필 patch의 terminal-controller 행에서 shell 필드를 지우고 DSH를 다시 시작하세요.",
|
|
480
569
|
"eol.label": "Git 줄바꿈(Linux와 동일)",
|
|
481
570
|
"eol.hint": "모델이 실행하는 git 명령은 Linux 동작을 따릅니다: core.autocrlf=input, core.eol=lf. 사용자의 터미널과 저장소의 .gitattributes는 영향을 받지 않습니다.",
|
|
482
571
|
"bash.label": "Git Bash 경로",
|
|
483
572
|
"bash.hint": "사용자 bash.exe 전체 경로; 비우면 자동 감지.",
|
|
573
|
+
"bash.saveFailed": "저장이 반영되지 않았습니다: 호스트가 이 쓰기를 거부했습니다 — 경로가 존재하고 Git for Windows의 bash인지 확인하거나 호스트 로그를 보세요",
|
|
484
574
|
"bash.save": "저장",
|
|
485
575
|
"bash.saved": "저장됨",
|
|
486
576
|
"adopt.label": "사이드바 터미널 인수",
|
|
@@ -517,12 +607,21 @@ window.__ModuleLoader__.load({
|
|
|
517
607
|
"split.hint": "Een absoluut glob-patroon splitst in pad + relatief patroon; uit geeft het ongewijzigd door.",
|
|
518
608
|
"code.label": "paden in run_code-programma's",
|
|
519
609
|
"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.",
|
|
610
|
+
"bashmiss.title": "Git Bash niet gevonden — opdrachten kunnen niet lopen",
|
|
611
|
+
"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.",
|
|
612
|
+
"bashmiss.tried": "In volgorde geprobeerd (alle geweigerd):",
|
|
613
|
+
"bashmiss.download": "Git for Windows downloaden",
|
|
614
|
+
"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.",
|
|
615
|
+
"bashmiss.close": "Sluiten",
|
|
520
616
|
"sub.label": "Subagenten/teammaten gebruiken Git Bash",
|
|
521
617
|
"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.",
|
|
618
|
+
"term.label": "Zijbalkterminal overnemen",
|
|
619
|
+
"term.hint": "Standaard aan: op Windows wordt de shell van de officiële ‘nieuwe terminal’ gezet op de gevonden Git Bash (geschreven in de officiële terminal-controller-regel via de officiële configuratie-editor). Zonder dit start dsh de terminal met de omgevings-standaardshell, en de bash in PATH is vaak de WSL-starter — dan draait de nieuwe terminal Ubuntu. Er wordt alleen geschreven als die regel GEEN eigen shell heeft; een expliciete keuze wordt nooit overschreven, alleen in het hostlogboek vermeld. Nieuwe terminals gebruiken het direct, al geopende behouden hun shell. Let op: deze schakelaar uitzetten stopt alleen TOEKOMSTIGE schrijfacties — een al in de profielconfiguratie geschreven shell-veld wordt niet verwijderd. Voor exact de oorspronkelijke staat: verwijder het shell-veld uit de terminal-controller-regel in de profielpatch en herstart DSH.",
|
|
522
620
|
"eol.label": "Git regeleinden (zoals Linux)",
|
|
523
621
|
"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
622
|
"bash.label": "Git Bash-pad",
|
|
525
623
|
"bash.hint": "Volledig pad van een aangepaste bash.exe; leeg = automatisch detecteren.",
|
|
624
|
+
"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
625
|
"bash.save": "Opslaan",
|
|
527
626
|
"bash.saved": "Opgeslagen",
|
|
528
627
|
"adopt.label": "Zijbalkterminal overnemen",
|
|
@@ -559,12 +658,21 @@ window.__ModuleLoader__.load({
|
|
|
559
658
|
"split.hint": "Absolutny wzorzec glob dzieli się na ścieżkę + wzorzec względny; wył. przekazuje bez zmian.",
|
|
560
659
|
"code.label": "ścieżki w programach run_code",
|
|
561
660
|
"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.",
|
|
661
|
+
"bashmiss.title": "Nie znaleziono Git Bash — polecenia nie mogą działać",
|
|
662
|
+
"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.",
|
|
663
|
+
"bashmiss.tried": "Sprawdzone po kolei (wszystkie odrzucone):",
|
|
664
|
+
"bashmiss.download": "Pobierz Git for Windows",
|
|
665
|
+
"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ę.",
|
|
666
|
+
"bashmiss.close": "Zamknij",
|
|
562
667
|
"sub.label": "Subagenci/członkowie zespołu używają Git Bash",
|
|
563
668
|
"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.",
|
|
669
|
+
"term.label": "Przejmij terminal boczny",
|
|
670
|
+
"term.hint": "Domyślnie włączone: w Windows shell oficjalnego „nowego terminala“ jest ustawiany na wykryty Git Bash (zapis do oficjalnego wiersza terminal-controller przez oficjalny edytor konfiguracji). Bez tego dsh uruchamia terminal z domyślnym shellem środowiska, a bash w PATH to często launcher WSL — nowy terminal działa wtedy w Ubuntu. Zapis następuje tylko wtedy, gdy ten wiersz NIE ma własnego shella; wyraźny wybór nigdy nie jest nadpisywany, trafia jedynie do logu hosta. Nowe terminale korzystają od razu, otwarte zachowują swój shell. Uwaga: wyłączenie tego przełącznika wstrzymuje tylko PRZYSZŁE zapisy — nie usuwa pola shell już zapisanego w konfiguracji profilu. Aby wrócić dokładnie do stanu pierwotnego, usuń pole shell z wiersza terminal-controller w patchu profilu i uruchom DSH ponownie.",
|
|
564
671
|
"eol.label": "końce linii Git (jak w Linuksie)",
|
|
565
672
|
"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
673
|
"bash.label": "Ścieżka Git Bash",
|
|
567
674
|
"bash.hint": "Pełna ścieżka własnego bash.exe; puste = autodetekcja.",
|
|
675
|
+
"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
676
|
"bash.save": "Zapisz",
|
|
569
677
|
"bash.saved": "Zapisano",
|
|
570
678
|
"adopt.label": "Przejmij terminal boczny",
|
|
@@ -601,12 +709,21 @@ window.__ModuleLoader__.load({
|
|
|
601
709
|
"split.hint": "Um padrão glob absoluto divide em caminho + padrão relativo; desligado passa-o inalterado.",
|
|
602
710
|
"code.label": "caminhos em programas run_code",
|
|
603
711
|
"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.",
|
|
712
|
+
"bashmiss.title": "Git Bash não encontrado — os comandos não podem correr",
|
|
713
|
+
"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.",
|
|
714
|
+
"bashmiss.tried": "Locais testados por ordem (todos recusados):",
|
|
715
|
+
"bashmiss.download": "Transferir o Git for Windows",
|
|
716
|
+
"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.",
|
|
717
|
+
"bashmiss.close": "Fechar",
|
|
604
718
|
"sub.label": "Subagentes/membros da equipa usam Git Bash",
|
|
605
719
|
"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.",
|
|
720
|
+
"term.label": "Adotar o terminal lateral",
|
|
721
|
+
"term.hint": "Ativado por predefinição: no Windows, o shell do «novo terminal» oficial é definido para o Git Bash detetado (escrito na linha oficial terminal-controller através do editor de configuração oficial). Sem isto, o dsh inicia o terminal com o shell predefinido do ambiente, e o bash no PATH é muitas vezes o lançador WSL — o novo terminal corre então em Ubuntu. Só escreve quando essa linha NÃO tem shell próprio; uma escolha explícita nunca é substituída, apenas registada no log do anfitrião. Os novos terminais usam-no de imediato, os já abertos mantêm o seu shell. Nota: desligar este interruptor só impede escritas FUTURAS — não remove um campo shell já escrito na configuração do perfil. Para voltar exatamente ao original, apague o campo shell da linha terminal-controller no patch do perfil e reinicie o dsh.",
|
|
606
722
|
"eol.label": "fins de linha do Git (como no Linux)",
|
|
607
723
|
"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
724
|
"bash.label": "Caminho do Git Bash",
|
|
609
725
|
"bash.hint": "Caminho completo de um bash.exe personalizado; vazio = detecção automática.",
|
|
726
|
+
"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
727
|
"bash.save": "Salvar",
|
|
611
728
|
"bash.saved": "Salvo",
|
|
612
729
|
"adopt.label": "Adotar o terminal lateral",
|
|
@@ -643,12 +760,21 @@ window.__ModuleLoader__.load({
|
|
|
643
760
|
"split.hint": "Абсолютный glob-шаблон разбивается на path + относительный шаблон; выкл передаёт как есть.",
|
|
644
761
|
"code.label": "пути в программах run_code",
|
|
645
762
|
"code.hint": "Строковые литералы путей в программе run_code переводятся по той же таблице монтирования до запуска; комментарии, шаблоны с интерполяцией, $VAR и строки-не-пути не трогаются, а при любой неопределённости программа остаётся без изменений. Также программе задаются TEMP/TMP: при пустом env в Windows os.tmpdir() возвращает undefined\\temp и запись идёт не туда.",
|
|
763
|
+
"bashmiss.title": "Git Bash не найден — команды не выполняются",
|
|
764
|
+
"bashmiss.body": "Плагин принимает только bash из состава Git for Windows (bash из WSL, MSYS2 и Cygwin отклоняется) и никогда не откатывается к PowerShell/cmd — он сообщает об ошибке, а не подменяет оболочку молча. Укажите ниже полный путь к bash.exe или сначала установите Git for Windows.",
|
|
765
|
+
"bashmiss.tried": "Проверены по порядку (все отклонены):",
|
|
766
|
+
"bashmiss.download": "Скачать Git for Windows",
|
|
767
|
+
"bashmiss.where": "Это же можно заполнить позже в «Настройки → Плагины → dsh-gitbash-shell → Путь Git Bash»; тот же список есть в журнале запуска хоста.",
|
|
768
|
+
"bashmiss.close": "Закрыть",
|
|
646
769
|
"sub.label": "Субагенты и участники команды используют Git Bash",
|
|
647
770
|
"sub.hint": "Вкл. (по умолчанию): субагенты и участники команды — включая вложенных — получают тот же диалект подсказки, перевод путей в аргументах, эхо результатов и факт DSH_PATH_DIALECT, что и главный агент. Выкл.: это применяется только к главному агенту, а делегированные агенты работают с официальной семантикой оболочки (без перезаписи подсказки и перевода путей). Учтите: в dsh один исполнитель оболочки на процесс, поэтому сам бинарник Git Bash остаётся общим; этот переключатель управляет слоями диалекта и перевода.",
|
|
771
|
+
"term.label": "Перенимать боковой терминал",
|
|
772
|
+
"term.hint": "Включено по умолчанию: в Windows shell официального «нового терминала» выставляется в найденный Git Bash (запись в официальную строку terminal-controller через официальный редактор конфигурации). Без этого dsh запускает терминал с shell по умолчанию из окружения, а bash в PATH часто оказывается лаунчером WSL — тогда новый терминал работает в Ubuntu. Запись происходит только если у этой строки НЕТ собственного shell; явный выбор никогда не перезаписывается, о нём лишь сообщается в журнале хоста. Новые терминалы подхватывают сразу, уже открытые сохраняют свой shell. Примечание: выключение этого переключателя останавливает только БУДУЩИЕ записи — уже записанное в конфигурацию профиля поле shell не удаляется. Чтобы вернуть всё точно как было, удалите поле shell из строки terminal-controller в патче профиля и перезапустите dsh.",
|
|
648
773
|
"eol.label": "переводы строк Git (как в Linux)",
|
|
649
774
|
"eol.hint": "Команды git, запускаемые моделью, ведут себя как в Linux: core.autocrlf=input, core.eol=lf. Ваш терминал и .gitattributes репозитория не затрагиваются.",
|
|
650
775
|
"bash.label": "Путь Git Bash",
|
|
651
776
|
"bash.hint": "Полный путь кастомного bash.exe; пусто = автоопределение.",
|
|
777
|
+
"bash.saveFailed": "Сохранение не применилось: хост отклонил эту запись — проверьте, что путь существует и указывает на bash из Git for Windows, или посмотрите журнал хоста",
|
|
652
778
|
"bash.save": "Сохранить",
|
|
653
779
|
"bash.saved": "Сохранено",
|
|
654
780
|
"adopt.label": "Перехватывать терминал боковой панели",
|
|
@@ -685,12 +811,21 @@ window.__ModuleLoader__.load({
|
|
|
685
811
|
"split.hint": "Ett absolut glob-mönster delas i sökväg + relativt mönster; av skickar det oförändrat.",
|
|
686
812
|
"code.label": "sökvägar i run_code-program",
|
|
687
813
|
"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.",
|
|
814
|
+
"bashmiss.title": "Git Bash hittades inte — kommandon kan inte köras",
|
|
815
|
+
"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.",
|
|
816
|
+
"bashmiss.tried": "Provat i ordning (alla avvisade):",
|
|
817
|
+
"bashmiss.download": "Hämta Git for Windows",
|
|
818
|
+
"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.",
|
|
819
|
+
"bashmiss.close": "Stäng",
|
|
688
820
|
"sub.label": "Subagenter/teammedlemmar använder Git Bash",
|
|
689
821
|
"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.",
|
|
822
|
+
"term.label": "Ta över sidofältsterminalen",
|
|
823
|
+
"term.hint": "På som standard: i Windows sätts det officiella ”nya terminalens” shell till den hittade Git Bash (skrivs till den officiella terminal-controller-raden via den officiella konfigurationsredigeraren). Utan detta startar dsh terminalen med miljöns standardshell, och bash i PATH är ofta WSL-startaren — då kör den nya terminalen Ubuntu. Det skrivs bara när raden INTE har ett eget shell; ett uttryckligt val skrivs aldrig över, det loggas bara hos värden. Nya terminaler tar det direkt, redan öppna behåller sitt shell. Obs: att stänga av reglaget stoppar bara FRAMTIDA skrivningar — ett shell-fält som redan skrivits till profilkofiguren tas inte bort. För att återställa exakt: ta bort shell-fältet från terminal-controller-raden i profilpatchningen och starta om dsh.",
|
|
690
824
|
"eol.label": "Git radslut (som Linux)",
|
|
691
825
|
"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
826
|
"bash.label": "Git Bash-sökväg",
|
|
693
827
|
"bash.hint": "Fullständig sökväg till egen bash.exe; tom = automatisk detektering.",
|
|
828
|
+
"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
829
|
"bash.save": "Spara",
|
|
695
830
|
"bash.saved": "Sparat",
|
|
696
831
|
"adopt.label": "Överta sidolistterminal",
|
|
@@ -727,12 +862,21 @@ window.__ModuleLoader__.load({
|
|
|
727
862
|
"split.hint": "pattern glob สัมบูรณ์แยกเป็น path + pattern สัมพัทธ์; ปิดส่งต่อตามเดิม",
|
|
728
863
|
"code.label": "พาธในโปรแกรม run_code",
|
|
729
864
|
"code.hint": "สตริงพาธที่เขียนในโปรแกรม run_code จะถูกแปลผ่านตาราง mount เดียวกันก่อนรัน ความคิดเห็น เทมเพลตที่มีการแทรก $VAR และสตริงที่ไม่ใช่พาธจะไม่ถูกแตะ และหากไม่แน่ใจทั้งโปรแกรมจะไม่ถูกแก้ไข และเติม TEMP/TMP ให้โปรแกรมด้วย: เมื่อ env ว่าง os.tmpdir() บน Windows จะคืน undefined\\temp แล้วเขียนผิดที่",
|
|
865
|
+
"bashmiss.title": "ไม่พบ Git Bash — คำสั่งรันไม่ได้",
|
|
866
|
+
"bashmiss.body": "ปลั๊กอินนี้รับเฉพาะ bash ที่มากับ Git for Windows (ไม่รับ bash ของ WSL, MSYS2 และ Cygwin) และไม่ถอยไปใช้ PowerShell/cmd — จึงรายงานความล้มเหลวแทนการสลับเชลล์ที่รันได้อย่างเงียบ ๆ กรอกพาธเต็มของ bash.exe ด้านล่าง หรือติดตั้ง Git for Windows ก่อน",
|
|
867
|
+
"bashmiss.tried": "ตรวจตามลำดับแล้ว (ถูกปฏิเสธทั้งหมด):",
|
|
868
|
+
"bashmiss.download": "ดาวน์โหลด Git for Windows",
|
|
869
|
+
"bashmiss.where": "กรอกภายหลังได้ที่ «การตั้งค่า → ปลั๊กอิน → dsh-gitbash-shell → พาธ Git Bash» และบันทึกเริ่มต้นของโฮสต์มีรายการเดียวกัน",
|
|
870
|
+
"bashmiss.close": "ปิด",
|
|
730
871
|
"sub.label": "ซับเอเจนต์/สมาชิกทีมใช้ Git Bash",
|
|
731
872
|
"sub.hint": "เปิด (ค่าเริ่มต้น): ซับเอเจนต์และสมาชิกทีม — รวมถึงแบบซ้อน — ได้รับไดอาเลกต์พรอมป์ต์ การแปลพาธในอาร์กิวเมนต์ การสะท้อนผลลัพธ์ และข้อเท็จจริง DSH_PATH_DIALECT เหมือนเอเจนต์หลัก ปิด: สิ่งเหล่านี้มีผลกับเอเจนต์หลักเท่านั้น และเอเจนต์ที่ถูกมอบหมายทำงานด้วยความหมาย shell อย่างเป็นทางการ (ไม่เขียนพรอมป์ต์ใหม่ ไม่แปลพาธ) หมายเหตุ dsh มีตัวรัน shell เดียวต่อโปรเซส ไบนารี Git Bash จึงยังเป็นส่วนกลาง สวิตช์นี้ควบคุมชั้นไดอาเลกต์/การแปล",
|
|
873
|
+
"term.label": "รับช่วงเทอร์มินัลแถบข้าง",
|
|
874
|
+
"term.hint": "เปิดโดยค่าเริ่มต้น: บน Windows shell ของ «เทอร์มินัลใหม่» อย่างเป็นทางการจะถูกตั้งเป็น Git Bash ที่ตรวจพบ (เขียนลงแถว terminal-controller อย่างเป็นทางการผ่านตัวแก้ไขการตั้งค่าอย่างเป็นทางการ) หากไม่มีสิ่งนี้ dsh จะเริ่มเทอร์มินัลด้วย shell เริ่มต้นของสภาพแวดล้อม และ bash ใน PATH มักเป็นตัวเรียก WSL เทอร์มินัลใหม่จึงรันเป็น Ubuntu จะเขียนก็ต่อเมื่อแถวนั้นไม่มี shell ของตัวเองเท่านั้น การเลือกที่ผู้ใช้ระบุไว้จะไม่ถูกเขียนทับ เพียงบันทึกในบันทึกของโฮสต์ เทอร์มินัลใหม่ใช้ทันที ส่วนที่เปิดอยู่แล้วคงเดิม หมายเหตุ: การปิดสวิตช์นี้หยุดเฉพาะการเขียนครั้งต่อไป ไม่ได้ลบฟิลด์ shell ที่เขียนลงการตั้งค่าโปรไฟล์แล้ว หากต้องการกลับสู่สภาพเดิมจริง ๆ ให้ลบฟิลด์ shell ออกจากแถว terminal-controller ใน patch ของโปรไฟล์แล้วรีสตาร์ต dsh",
|
|
732
875
|
"eol.label": "อักขระขึ้นบรรทัด Git (เหมือน Linux)",
|
|
733
876
|
"eol.hint": "คำสั่ง git ที่โมเดลรันจะใช้พฤติกรรมแบบ Linux: core.autocrlf=input, core.eol=lf เทอร์มินัลของคุณและ .gitattributes ของ repo ไม่ได้รับผลกระทบ",
|
|
734
877
|
"bash.label": "เส้นทาง Git Bash",
|
|
735
878
|
"bash.hint": "เส้นทางเต็มของ bash.exe แบบกำหนดเอง; ว่าง = ตรวจจับอัตโนมัติ",
|
|
879
|
+
"bash.saveFailed": "การบันทึกไม่เกิดผล: โฮสต์ปฏิเสธการเขียนนี้ — ตรวจสอบว่าพาธมีอยู่และเป็น bash ของ Git for Windows หรือดูบันทึกของโฮสต์",
|
|
736
880
|
"bash.save": "บันทึก",
|
|
737
881
|
"bash.saved": "บันทึกแล้ว",
|
|
738
882
|
"adopt.label": "รับช่วงเทอร์มินัลแถบข้าง",
|
|
@@ -769,12 +913,21 @@ window.__ModuleLoader__.load({
|
|
|
769
913
|
"split.hint": "Mutlak glob örüntüsü path + göreli örüntüye ayrılır; kapalı olduğu gibi geçirir.",
|
|
770
914
|
"code.label": "run_code program yolları",
|
|
771
915
|
"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.",
|
|
916
|
+
"bashmiss.title": "Git Bash bulunamadı — komutlar çalışamaz",
|
|
917
|
+
"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.",
|
|
918
|
+
"bashmiss.tried": "Sırayla denenen konumlar (hepsi reddedildi):",
|
|
919
|
+
"bashmiss.download": "Git for Windows indir",
|
|
920
|
+
"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.",
|
|
921
|
+
"bashmiss.close": "Kapat",
|
|
772
922
|
"sub.label": "Alt ajanlar/ekip üyeleri Git Bash kullansın",
|
|
773
923
|
"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.",
|
|
924
|
+
"term.label": "Kenar çubuğu terminalini devral",
|
|
925
|
+
"term.hint": "Varsayılan olarak açık: Windows'ta resmî «yeni terminal»in shell'i algılanan Git Bash olarak ayarlanır (resmî yapılandırma düzenleyicisi üzerinden resmî terminal-controller satırına yazılır). Bu olmadan dsh terminali ortamın varsayılan shell'iyle başlatır ve PATH'teki bash çoğu zaman WSL başlatıcısıdır — yeni terminal Ubuntu'da çalışır. Yalnızca o satırın KENDİ shell'i yoksa yazılır; açık bir seçim asla üzerine yazılmaz, sadece host günlüğüne düşer. Yeni terminaller anında kullanır, açık olanlar kendi shell'ini korur. Not: Bu anahtarı kapatmak yalnızca BUNDAN SONRAKİ yazmaları durdurur — profil yapılandırmasına yazılmış shell alanını silmez. Tam olarak eski hâle dönmek için profil patch'indeki terminal-controller satırından shell alanını silip dsh'yi yeniden başlatın.",
|
|
774
926
|
"eol.label": "Git satır sonları (Linux gibi)",
|
|
775
927
|
"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
928
|
"bash.label": "Git Bash yolu",
|
|
777
929
|
"bash.hint": "Özel bash.exe tam yolu; boş = otomatik algılama.",
|
|
930
|
+
"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
931
|
"bash.save": "Kaydet",
|
|
779
932
|
"bash.saved": "Kaydedildi",
|
|
780
933
|
"adopt.label": "Kenar çubuğu terminalini devral",
|
|
@@ -811,12 +964,21 @@ window.__ModuleLoader__.load({
|
|
|
811
964
|
"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
965
|
"code.label": "đường dẫn trong chương trình run_code",
|
|
813
966
|
"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ỗ.",
|
|
967
|
+
"bashmiss.title": "Không tìm thấy Git Bash — không thể chạy lệnh",
|
|
968
|
+
"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.",
|
|
969
|
+
"bashmiss.tried": "Đã dò theo thứ tự (tất cả bị từ chối):",
|
|
970
|
+
"bashmiss.download": "Tải Git for Windows",
|
|
971
|
+
"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.",
|
|
972
|
+
"bashmiss.close": "Đóng",
|
|
814
973
|
"sub.label": "Subagent/thành viên nhóm dùng Git Bash",
|
|
815
974
|
"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.",
|
|
975
|
+
"term.label": "Tiếp quản terminal thanh bên",
|
|
976
|
+
"term.hint": "Bật theo mặc định: trên Windows, shell của «terminal mới» chính thức được đặt thành Git Bash đã phát hiện (ghi vào dòng terminal-controller chính thức qua trình sửa cấu hình chính thức). Không có nó, dsh khởi động terminal bằng shell mặc định của môi trường, và bash trong PATH thường là trình khởi chạy WSL — terminal mới sẽ chạy Ubuntu. Chỉ ghi khi dòng đó KHÔNG có shell riêng; lựa chọn rõ ràng không bao giờ bị ghi đè, chỉ ghi vào nhật ký máy chủ. Terminal mới dùng ngay, terminal đang mở giữ nguyên. Lưu ý: tắt công tắc này chỉ dừng các lần ghi TIẾP THEO — không xóa trường shell đã ghi vào cấu hình hồ sơ. Để khôi phục y nguyên, hãy xóa trường shell khỏi dòng terminal-controller trong patch của hồ sơ rồi khởi động lại dsh.",
|
|
816
977
|
"eol.label": "kết thúc dòng Git (giống Linux)",
|
|
817
978
|
"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
979
|
"bash.label": "Đường dẫn Git Bash",
|
|
819
980
|
"bash.hint": "Đường dẫn đầy đủ của bash.exe tùy chỉnh; để trống = tự dò tìm.",
|
|
981
|
+
"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
982
|
"bash.save": "Lưu",
|
|
821
983
|
"bash.saved": "Đã lưu",
|
|
822
984
|
"adopt.label": "Tiếp nhận terminal thanh bên",
|
|
@@ -853,12 +1015,21 @@ window.__ModuleLoader__.load({
|
|
|
853
1015
|
"split.hint": "glob 嘅絕對 pattern 自動拆做 path + 相對 pattern;關閉就原樣傳遞。",
|
|
854
1016
|
"code.label": "run_code 程式內路徑",
|
|
855
1017
|
"code.hint": "run_code 程式內寫的 /c/... 路徑字面量會在執行前按同一張掛載表翻譯;註解、插值模板、$VAR 與非路徑字串不動,掃描有任何不確定就整份不改。 並為程式補上 TEMP/TMP:空 env 下 Windows 的 os.tmpdir() 會得到 undefined\\temp,程式會靜默寫錯位置。",
|
|
1018
|
+
"bashmiss.title": "搵唔到 Git Bash —— 命令行唔到",
|
|
1019
|
+
"bashmiss.body": "本插件淨係用 Git for Windows 跟機嘅 bash(WSL、MSYS2、Cygwin 嘅 bash 一律唔收),亦都唔會退返去 PowerShell/cmd —— 所以呢度只會報錯,唔會偷偷換個行得嘅頂上。喺下面填 bash.exe 嘅完整路徑,或者先裝 Git for Windows。",
|
|
1020
|
+
"bashmiss.tried": "按次序探過呢啲位置(全部拒絕):",
|
|
1021
|
+
"bashmiss.download": "去下載 Git for Windows",
|
|
1022
|
+
"bashmiss.where": "之後都可以喺「設定 → 插件 → dsh-gitbash-shell」嘅「Git Bash 路徑」填;host 啟動日誌有同一份清單。",
|
|
1023
|
+
"bashmiss.close": "閂咗佢",
|
|
856
1024
|
"sub.label": "子代理/隊員用 Git Bash",
|
|
857
1025
|
"sub.hint": "預設開啟:子代理同團隊隊員(連嵌套)嘅提示詞方言、路徑參數翻譯、結果回顯同 DSH_PATH_DIALECT 環境事實都同主代理一致。閂咗就淨係主代理有,子代理跟官方 shell 語義行(提示詞唔改寫、路徑參數唔翻譯);留意 dsh 每個進程只有一個 shell 執行器,所以 Git Bash 本身仍然係全局嘅,呢個開關管嘅係方言/翻譯層。",
|
|
1026
|
+
"term.label": "自動接管側欄終端",
|
|
1027
|
+
"term.hint": "預設開啟:Windows 上會將官方「開新終端」嘅 shell 自動設成探測到嘅 Git Bash(寫入官方 terminal-controller 行嘅設定,經官方設定編輯器落盤)。冇呢一項時,dsh 會用環境預設 shell 開終端,而 PATH 嘅 bash 好多時係 WSL 啟動器,於是新終端跑嘅係 Ubuntu。只喺該行**冇**自己嘅 shell 時才寫;你已經手動指定過其他 shell 就絕對唔會覆蓋,淨係喺宿主日誌提你一句。新終端即時生效,已開嘅終端保持原狀。 注意:閂咗呢個開關只係阻止**之後**嘅自動寫入,唔會刪走已經寫入 profile 設定嘅 shell 欄位 —— 想完全還原,請喺 profile 嘅 patch 度刪走 terminal-controller 行嘅 shell 欄位再重啟 DSH。",
|
|
858
1028
|
"eol.label": "Git 行尾(與 Linux 一致)",
|
|
859
1029
|
"eol.hint": "模型執行的 git 指令採 Linux 行為:core.autocrlf=input、core.eol=lf。你自己終端的 git 與倉庫的 .gitattributes 都不受影響。",
|
|
860
1030
|
"bash.label": "Git Bash 路徑",
|
|
861
1031
|
"bash.hint": "自訂 bash.exe 完整路徑;留空自動探測。",
|
|
1032
|
+
"bash.saveFailed": "保存未生效:宿主拒絕咗今次寫入 —— 確認路徑存在而且係 Git for Windows 嘅 bash,或者睇宿主日誌",
|
|
862
1033
|
"bash.save": "儲存",
|
|
863
1034
|
"bash.saved": "已儲存",
|
|
864
1035
|
"adopt.label": "接管側欄終端",
|
|
@@ -895,12 +1066,21 @@ window.__ModuleLoader__.load({
|
|
|
895
1066
|
"split.hint": "glob 嘅絕對 pattern 自動拆做 path + 相對 pattern;關閉就原樣傳遞。",
|
|
896
1067
|
"code.label": "run_code 程式內路徑",
|
|
897
1068
|
"code.hint": "run_code 程式內寫的 /c/... 路徑字面量會在執行前按同一張掛載表翻譯;註解、插值模板、$VAR 與非路徑字串不動,掃描有任何不確定就整份不改。 並為程式補上 TEMP/TMP:空 env 下 Windows 的 os.tmpdir() 會得到 undefined\\temp,程式會靜默寫錯位置。",
|
|
1069
|
+
"bashmiss.title": "搵唔到 Git Bash —— 命令行唔到",
|
|
1070
|
+
"bashmiss.body": "本插件淨係用 Git for Windows 跟機嘅 bash(WSL、MSYS2、Cygwin 嘅 bash 一律唔收),亦都唔會退返去 PowerShell/cmd —— 所以呢度只會報錯,唔會偷偷換個行得嘅頂上。喺下面填 bash.exe 嘅完整路徑,或者先裝 Git for Windows。",
|
|
1071
|
+
"bashmiss.tried": "按次序探過呢啲位置(全部拒絕):",
|
|
1072
|
+
"bashmiss.download": "去下載 Git for Windows",
|
|
1073
|
+
"bashmiss.where": "之後都可以喺「設定 → 插件 → dsh-gitbash-shell」嘅「Git Bash 路徑」填;host 啟動日誌有同一份清單。",
|
|
1074
|
+
"bashmiss.close": "閂咗佢",
|
|
898
1075
|
"sub.label": "子代理/隊員用 Git Bash",
|
|
899
1076
|
"sub.hint": "預設開啟:子代理同團隊隊員(連嵌套)嘅提示詞方言、路徑參數翻譯、結果回顯同 DSH_PATH_DIALECT 環境事實都同主代理一致。閂咗就淨係主代理有,子代理跟官方 shell 語義行(提示詞唔改寫、路徑參數唔翻譯);留意 dsh 每個進程只有一個 shell 執行器,所以 Git Bash 本身仍然係全局嘅,呢個開關管嘅係方言/翻譯層。",
|
|
1077
|
+
"term.label": "自動接管側欄終端",
|
|
1078
|
+
"term.hint": "預設開啟:Windows 上會將官方「開新終端」嘅 shell 自動設成探測到嘅 Git Bash(寫入官方 terminal-controller 行嘅設定,經官方設定編輯器落盤)。冇呢一項時,dsh 會用環境預設 shell 開終端,而 PATH 嘅 bash 好多時係 WSL 啟動器,於是新終端跑嘅係 Ubuntu。只喺該行**冇**自己嘅 shell 時才寫;你已經手動指定過其他 shell 就絕對唔會覆蓋,淨係喺宿主日誌提你一句。新終端即時生效,已開嘅終端保持原狀。 注意:閂咗呢個開關只係阻止**之後**嘅自動寫入,唔會刪走已經寫入 profile 設定嘅 shell 欄位 —— 想完全還原,請喺 profile 嘅 patch 度刪走 terminal-controller 行嘅 shell 欄位再重啟 DSH。",
|
|
900
1079
|
"eol.label": "Git 行尾(與 Linux 一致)",
|
|
901
1080
|
"eol.hint": "模型執行的 git 指令採 Linux 行為:core.autocrlf=input、core.eol=lf。你自己終端的 git 與倉庫的 .gitattributes 都不受影響。",
|
|
902
1081
|
"bash.label": "Git Bash 路徑",
|
|
903
1082
|
"bash.hint": "自訂 bash.exe 完整路徑;留空自動探測。",
|
|
1083
|
+
"bash.saveFailed": "保存未生效:宿主拒絕咗今次寫入 —— 確認路徑存在而且係 Git for Windows 嘅 bash,或者睇宿主日誌",
|
|
904
1084
|
"bash.save": "儲存",
|
|
905
1085
|
"bash.saved": "已儲存",
|
|
906
1086
|
"adopt.label": "接管側欄終端",
|
|
@@ -937,12 +1117,21 @@ window.__ModuleLoader__.load({
|
|
|
937
1117
|
"split.hint": "glob 的絕對 pattern 自動拆為 path + 相對 pattern;關閉則原樣傳遞。",
|
|
938
1118
|
"code.label": "run_code 程式內路徑",
|
|
939
1119
|
"code.hint": "run_code 程式內寫的 /c/... 路徑字面量會在執行前按同一張掛載表翻譯;註解、插值模板、$VAR 與非路徑字串不動,掃描有任何不確定就整份不改。 並為程式補上 TEMP/TMP:空 env 下 Windows 的 os.tmpdir() 會得到 undefined\\temp,程式會靜默寫錯位置。",
|
|
1120
|
+
"bashmiss.title": "找不到 Git Bash —— 命令無法執行",
|
|
1121
|
+
"bashmiss.body": "本外掛只採用 Git for Windows 隨附的 bash(不接受 WSL、MSYS2、Cygwin 的 bash),也不會退回 PowerShell/cmd —— 因此這裡只回報錯誤,不會偷偷換一個能跑的頂上。請在下方填寫 bash.exe 的完整路徑,或先安裝 Git for Windows。",
|
|
1122
|
+
"bashmiss.tried": "已依序探測這些位置(全部拒絕):",
|
|
1123
|
+
"bashmiss.download": "下載 Git for Windows",
|
|
1124
|
+
"bashmiss.where": "也可以稍後到「設定 → 外掛 → dsh-gitbash-shell」的「Git Bash 路徑」填寫;host 啟動日誌有同一份清單。",
|
|
1125
|
+
"bashmiss.close": "關閉",
|
|
940
1126
|
"sub.label": "子代理/隊員使用 Git Bash",
|
|
941
1127
|
"sub.hint": "預設開啟:子代理與團隊隊員(含巢狀)的提示詞方言、路徑參數翻譯、結果回顯與 DSH_PATH_DIALECT 環境事實都與主代理一致。關閉後僅對主代理生效,子代理依官方 shell 語意執行(提示詞不改寫、路徑參數不翻譯);請注意 dsh 每個行程只有一個 shell 執行器,因此 Git Bash 本身仍是全域的,這個開關管的是方言/翻譯層。",
|
|
1128
|
+
"term.label": "自動接管側邊終端",
|
|
1129
|
+
"term.hint": "預設開啟:Windows 上會把官方「新增終端」的 shell 自動設為探測到的 Git Bash(寫入官方 terminal-controller 列的設定,由官方設定編輯器落盤)。沒有這一項時,dsh 會以環境預設 shell 啟動終端,而 PATH 裡的 bash 往往是 WSL 啟動器,於是新終端跑的是 Ubuntu。只在該列**沒有**自己的 shell 時才寫入;你已手動指定其他 shell 就絕不覆蓋,僅在宿主日誌提示。新終端立即生效,已開啟的終端維持原狀。 注意:關掉這個開關只會阻止**之後**的自動寫入,不會刪除已經寫進 profile 設定的 shell 欄位 —— 要徹底還原,請把 profile 的 patch 裡 terminal-controller 列的 shell 欄位刪掉再重啟 DSH。",
|
|
942
1130
|
"eol.label": "Git 行尾(與 Linux 一致)",
|
|
943
1131
|
"eol.hint": "模型執行的 git 指令採 Linux 行為:core.autocrlf=input、core.eol=lf。你自己終端的 git 與倉庫的 .gitattributes 都不受影響。",
|
|
944
1132
|
"bash.label": "Git Bash 路徑",
|
|
945
1133
|
"bash.hint": "自訂 bash.exe 完整路徑;留空自動探測。",
|
|
1134
|
+
"bash.saveFailed": "儲存未生效:宿主拒絕了這次寫入 —— 確認路徑存在且為 Git for Windows 的 bash,或查看宿主日誌",
|
|
946
1135
|
"bash.save": "儲存",
|
|
947
1136
|
"bash.saved": "已儲存",
|
|
948
1137
|
"adopt.label": "接管側欄終端機",
|
|
@@ -1048,6 +1237,13 @@ window.__ModuleLoader__.load({
|
|
|
1048
1237
|
".gb-error{margin:0;font-size:12px;color:var(--dsw-alias-status-danger, #e5484d)}",
|
|
1049
1238
|
".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
1239
|
".gb-section+.gb-section{border-top:1px solid var(--dsw-alias-border-l2)}",
|
|
1240
|
+
/* Missing-Git-Bash popup (v0.28.0): a root-level modal, because the
|
|
1241
|
+
user may never be on the settings page when their shell dies. */
|
|
1242
|
+
".gb-modalBackdrop{position:fixed;inset:0;z-index:2147483000;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.45)}",
|
|
1243
|
+
".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)}",
|
|
1244
|
+
".gb-modalTitle{font-size:15px;font-weight:600;color:var(--dsw-alias-label-primary)}",
|
|
1245
|
+
".gb-modalList{margin:0;padding-left:18px;font-size:12px;line-height:1.6;color:var(--dsw-alias-label-tertiary);word-break:break-all}",
|
|
1246
|
+
".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
1247
|
".gb-sectionTitle{font-size:12.5px;font-weight:600;letter-spacing:.02em;color:var(--dsw-alias-label-secondary)}",
|
|
1052
1248
|
".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
1249
|
".gb-input:focus{border-color:var(--dsw-alias-brand-primary)}",
|
|
@@ -1125,6 +1321,9 @@ window.__ModuleLoader__.load({
|
|
|
1125
1321
|
return typeof unsubscribe === "function" ? unsubscribe : undefined;
|
|
1126
1322
|
}, []);
|
|
1127
1323
|
|
|
1324
|
+
if (props.popup === true) {
|
|
1325
|
+
return E(QuietBoundary, null, E(MissingBashPopup, Object.assign({}, props.cardProps, { t: props.t })));
|
|
1326
|
+
}
|
|
1128
1327
|
return E(QuietBoundary, null, E(GitBashCard, Object.assign({}, props.cardProps, { t: props.t })));
|
|
1129
1328
|
}
|
|
1130
1329
|
|
|
@@ -1223,14 +1422,38 @@ window.__ModuleLoader__.load({
|
|
|
1223
1422
|
var enabled = value.posixPaths === true;
|
|
1224
1423
|
var adopt = value.adoptSidebar !== false;
|
|
1225
1424
|
|
|
1425
|
+
/* `ConfigForm.set` resolves with WHETHER THE HOST ACCEPTED the write
|
|
1426
|
+
(dsh ui-settings config-form.ts), so a `false` is a refusal, not a
|
|
1427
|
+
success: claiming "saved" on it would be exactly the silent
|
|
1428
|
+
false-success this plugin forbids (AGENTS §4h). Returns the verdict
|
|
1429
|
+
so each caller can render its own success/failure state. */
|
|
1226
1430
|
function writeField(key, next) {
|
|
1227
1431
|
setError("");
|
|
1228
|
-
scope.set
|
|
1229
|
-
|
|
1230
|
-
.
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1432
|
+
if (!scope || typeof scope.set !== "function") {
|
|
1433
|
+
setError(t("error") + ": " + t("bash.saveFailed"));
|
|
1434
|
+
return Promise.resolve(false);
|
|
1435
|
+
}
|
|
1436
|
+
try {
|
|
1437
|
+
return Promise.resolve(scope.set(key, next)).then(
|
|
1438
|
+
function (accepted) {
|
|
1439
|
+
bumpTick(function (n) { return n + 1; });
|
|
1440
|
+
if (accepted !== true) {
|
|
1441
|
+
setError(t("error") + ": " + t("bash.saveFailed"));
|
|
1442
|
+
return false;
|
|
1443
|
+
}
|
|
1444
|
+
return true;
|
|
1445
|
+
},
|
|
1446
|
+
function (err) {
|
|
1447
|
+
bumpTick(function (n) { return n + 1; });
|
|
1448
|
+
setError(t("error") + ": " + (err && err.message ? err.message : String(err)));
|
|
1449
|
+
return false;
|
|
1450
|
+
},
|
|
1451
|
+
);
|
|
1452
|
+
} catch (err) {
|
|
1453
|
+
bumpTick(function (n) { return n + 1; });
|
|
1454
|
+
setError(t("error") + ": " + (err && err.message ? err.message : String(err)));
|
|
1455
|
+
return Promise.resolve(false);
|
|
1456
|
+
}
|
|
1234
1457
|
}
|
|
1235
1458
|
|
|
1236
1459
|
var Chevron = icon("IconChevronDownOutline14");
|
|
@@ -1247,6 +1470,7 @@ window.__ModuleLoader__.load({
|
|
|
1247
1470
|
// v0.27.0: delegated agents (subagents / team members / nested
|
|
1248
1471
|
// children) participate in the dialect unless this is switched off.
|
|
1249
1472
|
var subagents = snap.value.subagentDialect !== false;
|
|
1473
|
+
var winshell = snap.value.autoTerminalShell !== false;
|
|
1250
1474
|
var eolOn = snap.value.gitAutocrlf !== false;
|
|
1251
1475
|
var dedupe = snap.value.suppressPeerCordis === true;
|
|
1252
1476
|
|
|
@@ -1307,6 +1531,15 @@ window.__ModuleLoader__.load({
|
|
|
1307
1531
|
E("button", { type: "button", className: "gb-segBtn" + (!subagents ? " gb-segActive" : ""), onClick: function () { if (subagents) writeField("subagentDialect", false); } }, t("switch.off")),
|
|
1308
1532
|
),
|
|
1309
1533
|
E("p", { className: "gb-hint" }, t("sub.hint")),
|
|
1534
|
+
E("div", { className: "gb-row" },
|
|
1535
|
+
E("span", { className: "gb-rowLabel" }, t("term.label") + ":"),
|
|
1536
|
+
E("span", { className: "gb-rowValue" }, winshell ? t("state.on") : t("state.off")),
|
|
1537
|
+
),
|
|
1538
|
+
E("div", { className: "gb-seg" },
|
|
1539
|
+
E("button", { type: "button", className: "gb-segBtn" + (winshell ? " gb-segActive" : ""), onClick: function () { if (!winshell) writeField("autoTerminalShell", true); } }, t("switch.on")),
|
|
1540
|
+
E("button", { type: "button", className: "gb-segBtn" + (!winshell ? " gb-segActive" : ""), onClick: function () { if (winshell) writeField("autoTerminalShell", false); } }, t("switch.off")),
|
|
1541
|
+
),
|
|
1542
|
+
E("p", { className: "gb-hint" }, t("term.hint")),
|
|
1310
1543
|
E("div", { className: "gb-row" },
|
|
1311
1544
|
E("span", { className: "gb-rowLabel" }, t("eol.label") + ":"),
|
|
1312
1545
|
E("span", { className: "gb-rowValue" }, eolOn ? t("state.on") : t("state.off")),
|
|
@@ -1321,7 +1554,14 @@ window.__ModuleLoader__.load({
|
|
|
1321
1554
|
),
|
|
1322
1555
|
E("div", { className: "gb-seg" },
|
|
1323
1556
|
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", {
|
|
1557
|
+
E("button", {
|
|
1558
|
+
type: "button",
|
|
1559
|
+
className: "gb-saveBtn" + (bashSaved ? " gb-saved" : ""),
|
|
1560
|
+
onClick: function () {
|
|
1561
|
+
setBashSaved(false);
|
|
1562
|
+
writeField("bashPath", bashDraft.trim()).then(function (accepted) { setBashSaved(accepted === true); });
|
|
1563
|
+
},
|
|
1564
|
+
}, bashSaved ? t("bash.saved") : t("bash.save")),
|
|
1325
1565
|
),
|
|
1326
1566
|
E("p", { className: "gb-hint" }, t("bash.hint")),
|
|
1327
1567
|
),
|
|
@@ -1460,6 +1700,152 @@ window.__ModuleLoader__.load({
|
|
|
1460
1700
|
);
|
|
1461
1701
|
}
|
|
1462
1702
|
|
|
1703
|
+
// ── missing-Git-Bash popup (v0.28.0, issue #11) ────────────────────────
|
|
1704
|
+
//
|
|
1705
|
+
// When no Git for Windows bash resolves, the host cannot run ANY command
|
|
1706
|
+
// (this plugin withdraws pwsh-sandbox and dsh allows one shell per
|
|
1707
|
+
// process) — so the user must not be left staring at `spawn ... ENOENT`.
|
|
1708
|
+
// The host prints the full report to its log and serves the same verdict
|
|
1709
|
+
// at /dsh-gitbash-shell/api/status; this overlay turns it into the two
|
|
1710
|
+
// actions the user asked for: edit the path right here, or go download
|
|
1711
|
+
// Git for Windows. Deliberately NO "keep something runnable" fallback:
|
|
1712
|
+
// an unresolved bash stays unresolved, visibly.
|
|
1713
|
+
var API_PATH = "dsh-gitbash-shell/api/status";
|
|
1714
|
+
var DISMISS_KEY = "dsh-gitbash-shell:bash-missing-dismissed";
|
|
1715
|
+
/** Once per client boot; sessionStorage survives a re-render, not a restart. */
|
|
1716
|
+
var bashPopupShown = false;
|
|
1717
|
+
|
|
1718
|
+
function readDismissed() {
|
|
1719
|
+
try { return window.sessionStorage.getItem(DISMISS_KEY) === "1" } catch (error_) { return false }
|
|
1720
|
+
}
|
|
1721
|
+
function rememberDismissed() {
|
|
1722
|
+
try { window.sessionStorage.setItem(DISMISS_KEY, "1") } catch (error_) { /* private mode */ }
|
|
1723
|
+
}
|
|
1724
|
+
|
|
1725
|
+
function MissingBashPopup(props) {
|
|
1726
|
+
var t = typeof props.t === "function" ? props.t : function (key) { return key; };
|
|
1727
|
+
var dialectState = useState(null);
|
|
1728
|
+
var status = dialectState[0];
|
|
1729
|
+
var setStatus = dialectState[1];
|
|
1730
|
+
var draftState = useState("");
|
|
1731
|
+
var draft = draftState[0];
|
|
1732
|
+
var setDraft = draftState[1];
|
|
1733
|
+
var savedState = useState(false);
|
|
1734
|
+
var saved = savedState[0];
|
|
1735
|
+
var setSaved = savedState[1];
|
|
1736
|
+
var saveErrorState = useState("");
|
|
1737
|
+
var saveError = saveErrorState[0];
|
|
1738
|
+
var setSaveError = saveErrorState[1];
|
|
1739
|
+
var hiddenState = useState(readDismissed());
|
|
1740
|
+
var hidden = hiddenState[0];
|
|
1741
|
+
var setHidden = hiddenState[1];
|
|
1742
|
+
/* "Once per boot" is DECIDED in an effect, never during render: a
|
|
1743
|
+
render-time flag check would make the modal vanish on the very next
|
|
1744
|
+
re-render (the flag it just set). Local state owns this mount's
|
|
1745
|
+
decision; the module flag stops a second mount from repeating it. */
|
|
1746
|
+
var decidedState = useState(false);
|
|
1747
|
+
var decided = decidedState[0];
|
|
1748
|
+
var setDecided = decidedState[1];
|
|
1749
|
+
|
|
1750
|
+
useEffect(function () {
|
|
1751
|
+
var alive = true;
|
|
1752
|
+
/* Mount-relative on purpose (same discipline as dsh-ide-git): the
|
|
1753
|
+
host serves the shell with <base href="./">, so a path without a
|
|
1754
|
+
leading slash lands on the plugin route at the origin root AND
|
|
1755
|
+
behind a prefix-stripping proxy. */
|
|
1756
|
+
try {
|
|
1757
|
+
Promise.resolve(fetch(API_PATH, { headers: { accept: "application/json" } }))
|
|
1758
|
+
.then(function (response) { return response.ok ? response.json() : null })
|
|
1759
|
+
.then(function (data) {
|
|
1760
|
+
if (!alive || !data || data.platform !== "win32" || data.ok !== false) return;
|
|
1761
|
+
if (bashPopupShown || readDismissed()) return;
|
|
1762
|
+
bashPopupShown = true;
|
|
1763
|
+
setStatus(data);
|
|
1764
|
+
setDecided(true);
|
|
1765
|
+
if (typeof data.configured === "string" && data.configured !== "") setDraft(data.configured);
|
|
1766
|
+
})
|
|
1767
|
+
.catch(function () { /* the host may be older; no popup then */ });
|
|
1768
|
+
} catch (error_) { /* keep silent */ }
|
|
1769
|
+
return function () { alive = false; };
|
|
1770
|
+
}, []);
|
|
1771
|
+
|
|
1772
|
+
if (hidden || !decided || status === null) return null;
|
|
1773
|
+
|
|
1774
|
+
var rows = Array.isArray(status.tried) ? status.tried : [];
|
|
1775
|
+
var close = function () { rememberDismissed(); setHidden(true); };
|
|
1776
|
+
var save = function () {
|
|
1777
|
+
setSaved(false);
|
|
1778
|
+
setSaveError("");
|
|
1779
|
+
var forms;
|
|
1780
|
+
try {
|
|
1781
|
+
var c = props.ctx;
|
|
1782
|
+
forms = c === undefined || c === null ? undefined : c.get("configForms");
|
|
1783
|
+
} catch (error_) { forms = undefined; }
|
|
1784
|
+
var form;
|
|
1785
|
+
try { form = forms && typeof forms.get === "function" ? forms.get(SETTINGS_NAMESPACE) : undefined; } catch (error_) { form = undefined; }
|
|
1786
|
+
if (!form || typeof form.set !== "function") {
|
|
1787
|
+
/* No form seat: say so instead of pretending the save landed. */
|
|
1788
|
+
setSaveError(t("error") + ": " + t("bash.saveFailed"));
|
|
1789
|
+
return;
|
|
1790
|
+
}
|
|
1791
|
+
try {
|
|
1792
|
+
/* The verdict is the HOST's: `accepted === false` is a refusal and
|
|
1793
|
+
must NOT read as "saved" (AGENTS §4h, silent false success). */
|
|
1794
|
+
Promise.resolve(form.set("bashPath", draft.trim())).then(
|
|
1795
|
+
function (accepted) {
|
|
1796
|
+
if (accepted === true) { setSaved(true); return; }
|
|
1797
|
+
setSaved(false);
|
|
1798
|
+
setSaveError(t("error") + ": " + t("bash.saveFailed"));
|
|
1799
|
+
},
|
|
1800
|
+
function (err) {
|
|
1801
|
+
setSaved(false);
|
|
1802
|
+
setSaveError(t("error") + ": " + (err && err.message ? err.message : String(err)));
|
|
1803
|
+
},
|
|
1804
|
+
);
|
|
1805
|
+
} catch (err) {
|
|
1806
|
+
setSaved(false);
|
|
1807
|
+
setSaveError(t("error") + ": " + (err && err.message ? err.message : String(err)));
|
|
1808
|
+
}
|
|
1809
|
+
};
|
|
1810
|
+
|
|
1811
|
+
return E("div", { className: "gb-modalBackdrop", role: "dialog", "aria-modal": "true" },
|
|
1812
|
+
E("div", { className: "gb-modal" },
|
|
1813
|
+
E("div", { className: "gb-modalTitle" }, t("bashmiss.title")),
|
|
1814
|
+
E("p", { className: "gb-hint" }, t("bashmiss.body")),
|
|
1815
|
+
rows.length > 0 ? E("div", null,
|
|
1816
|
+
E("div", { className: "gb-rowLabel" }, t("bashmiss.tried")),
|
|
1817
|
+
E("ul", { className: "gb-modalList" }, rows.slice(0, 12).map(function (row, index) {
|
|
1818
|
+
return E("li", { key: String(index) }, (row && row.path ? row.path : "?") + " — " + (row && row.detail ? row.detail : row && row.code ? row.code : ""));
|
|
1819
|
+
})),
|
|
1820
|
+
) : null,
|
|
1821
|
+
E("div", { className: "gb-row" },
|
|
1822
|
+
E("span", { className: "gb-rowLabel" }, t("bash.label") + ":"),
|
|
1823
|
+
E("input", {
|
|
1824
|
+
className: "gb-input",
|
|
1825
|
+
type: "text",
|
|
1826
|
+
value: draft,
|
|
1827
|
+
placeholder: "Q:/Git/bin/bash.exe",
|
|
1828
|
+
onChange: function (event) { setDraft(event.target.value); setSaved(false); },
|
|
1829
|
+
}),
|
|
1830
|
+
),
|
|
1831
|
+
E("div", { className: "gb-seg" },
|
|
1832
|
+
E("button", { type: "button", className: "gb-segBtn", onClick: save }, t("bash.save")),
|
|
1833
|
+
saved ? E("span", { className: "gb-rowValue" }, t("bash.saved")) : null,
|
|
1834
|
+
),
|
|
1835
|
+
saveError !== "" ? E("p", { className: "gb-error" }, saveError) : null,
|
|
1836
|
+
E("p", { className: "gb-hint" }, t("bashmiss.where")),
|
|
1837
|
+
E("div", { className: "gb-seg" },
|
|
1838
|
+
E("button", {
|
|
1839
|
+
type: "button",
|
|
1840
|
+
className: "gb-segBtn gb-segActive",
|
|
1841
|
+
onClick: function () { try { window.open(status.downloadUrl || "https://git-scm.com/download/win", "_blank", "noopener") } catch (error_) { /* blocked */ } },
|
|
1842
|
+
}, t("bashmiss.download")),
|
|
1843
|
+
E("button", { type: "button", className: "gb-segBtn", onClick: close }, t("bashmiss.close")),
|
|
1844
|
+
),
|
|
1845
|
+
),
|
|
1846
|
+
);
|
|
1847
|
+
}
|
|
1848
|
+
|
|
1463
1849
|
// ── plugin ────────────────────────────────────────────────────────────
|
|
1464
1850
|
|
|
1465
1851
|
exports.name = "dsh-gitbash-shell/client";
|
|
@@ -1560,6 +1946,18 @@ window.__ModuleLoader__.load({
|
|
|
1560
1946
|
// dsh 0.1.6-alpha.2+: the Plugins page's bundle configuration seat,
|
|
1561
1947
|
// keyed by the PACKAGE name. Each inject waits for its own slot
|
|
1562
1948
|
// declaration, so exactly one seat is live on any host version.
|
|
1949
|
+
/* Root-level popup seat: rendered regardless of which page is open,
|
|
1950
|
+
which is the point — the user may never open settings. */
|
|
1951
|
+
slots.inject("shell.overlay", function () {
|
|
1952
|
+
return slots.register({
|
|
1953
|
+
name: "shell.overlay",
|
|
1954
|
+
id: "gitbash-shell:bash-missing",
|
|
1955
|
+
locale: NS,
|
|
1956
|
+
inject: injected,
|
|
1957
|
+
}, function MissingBashPopupWithLocale(props) {
|
|
1958
|
+
return E(LocaleLive, { ctx: ctx, t: t, cardProps: props, popup: true });
|
|
1959
|
+
});
|
|
1960
|
+
});
|
|
1563
1961
|
slots.inject("plugins.bundle.config", function () {
|
|
1564
1962
|
return slots.register({
|
|
1565
1963
|
name: "plugins.bundle.config",
|