dsh-gitbash-shell 0.29.2 → 0.30.1
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 +101 -0
- package/dsh.plugin.json +1 -1
- package/package.json +1 -1
- package/src/client.js +606 -0
- package/src/index.js +88 -0
- package/src/tool-runner.js +337 -0
- package/src/toolchain.js +418 -0
package/src/client.js
CHANGED
|
@@ -116,6 +116,23 @@ window.__ModuleLoader__.load({
|
|
|
116
116
|
"python.hint": "默认关闭时 run_code 用官方 Node/TypeScript 后端,与官方 ptc 组合逐字节一致;开启后改用 dsh 实验性 CPython 后端(@deepseek-ai/dsh-experimental-ptc-runtime-python),run_code 的语言、生成的 SDK 提示词与工具呈现随之切到 Python。要求 POSIX 平台与 CPython ≥ 3.10(Windows 不可用);与 workflow 工具互斥——官方 Python 组合同样禁用 workflow,因此开启期间本插件四个变体的 workflow 侧强制关闭(你的工作流设置值保留,关掉后恢复)。改动需重启 dsh 后生效;此开关就是 dsh-ptc-cordis-preset 设置卡上的同一个开关——两侧共享同一份状态,任一侧改动两侧同步。仅在已安装 dsh-ptc-cordis-preset 时显示。若置为开启后未生效,原因见宿主启动日志。",
|
|
117
117
|
"python.degraded": "后端不可用,当前仍为 Node(原因见宿主启动日志)",
|
|
118
118
|
"python.blocked": "本机是 Windows:实验性 Python 后端仅支持 POSIX,此开关不可用。",
|
|
119
|
+
"sec.tools": "终端工具",
|
|
120
|
+
"tools.hint": "从 winget 官方源安装常用命令行工具。已经存在的(无论什么来源)一律不重复安装;由 LLVM、WinLibs 等提供的工具链也不会被升级,只如实显示来源。",
|
|
121
|
+
"tools.refresh": "刷新状态",
|
|
122
|
+
"tools.run": "安装 / 升级选中",
|
|
123
|
+
"tools.selectMissing": "全选可安装",
|
|
124
|
+
"tools.loading": "正在检测…",
|
|
125
|
+
"tools.nowinget": "未检测到 winget,无法安装或升级。Windows 10 1809 起系统自带,可在 Microsoft Store 更新「应用安装程序」。",
|
|
126
|
+
"tools.state.missing": "未安装",
|
|
127
|
+
"tools.state.external": "已有(其他来源)",
|
|
128
|
+
"tools.state.managed": "可升级",
|
|
129
|
+
"tools.state.current": "已是最新",
|
|
130
|
+
"tools.adminHint": "需要管理员权限:会弹出 UAC 窗口,请在电脑上确认",
|
|
131
|
+
"tools.working": "处理中",
|
|
132
|
+
"tools.resultOk": "成功",
|
|
133
|
+
"tools.resultFail": "失败",
|
|
134
|
+
"tools.installing": "安装中…",
|
|
135
|
+
"tools.updating": "更新中…",
|
|
119
136
|
};
|
|
120
137
|
|
|
121
138
|
var en = {
|
|
@@ -167,6 +184,23 @@ window.__ModuleLoader__.load({
|
|
|
167
184
|
"python.hint": "While off (default) run_code uses the official Node/TypeScript backend, byte-identical to the shipped ptc composition; turning it on switches to dsh's experimental CPython backend (@deepseek-ai/dsh-experimental-ptc-runtime-python), which also switches run_code's language, generated SDK prompt and tool presentation to Python. Requires a POSIX platform and CPython ≥ 3.10 (unavailable on Windows) and is mutually exclusive with the workflow tool — the official Python composition disables workflow too, so the workflow side of all four variants is forced off while this is on (your workflow setting is kept and restored when you turn it back off). Takes effect after restarting dsh; this is the very same switch on dsh-ptc-cordis-preset's card — both sides share one state, so either side updates both. Shown only while dsh-ptc-cordis-preset is installed. If turning it on does not take effect, the dsh startup log states why.",
|
|
168
185
|
"python.degraded": "backend unavailable, still Node (reason in the dsh startup log)",
|
|
169
186
|
"python.blocked": "This host is Windows: the experimental Python backend supports POSIX only, so this switch is unavailable.",
|
|
187
|
+
"sec.tools": "Terminal tools",
|
|
188
|
+
"tools.hint": "Installs common command-line tools from the official winget source. Anything already present is never re-installed, and a toolchain provided by LLVM, WinLibs or similar is never upgraded — its origin is simply shown.",
|
|
189
|
+
"tools.refresh": "Refresh",
|
|
190
|
+
"tools.run": "Install / upgrade selected",
|
|
191
|
+
"tools.selectMissing": "Select installable",
|
|
192
|
+
"tools.loading": "Checking…",
|
|
193
|
+
"tools.nowinget": "winget was not found, so nothing can be installed or upgraded. It ships with Windows 10 1809+; update “App Installer” in the Microsoft Store.",
|
|
194
|
+
"tools.state.missing": "Not installed",
|
|
195
|
+
"tools.state.external": "Present (other source)",
|
|
196
|
+
"tools.state.managed": "Upgrade available",
|
|
197
|
+
"tools.state.current": "Up to date",
|
|
198
|
+
"tools.adminHint": "Needs administrator: a UAC prompt will appear — accept it on this machine",
|
|
199
|
+
"tools.working": "Working",
|
|
200
|
+
"tools.resultOk": "succeeded",
|
|
201
|
+
"tools.resultFail": "failed",
|
|
202
|
+
"tools.installing": "Installing…",
|
|
203
|
+
"tools.updating": "Updating…",
|
|
170
204
|
};
|
|
171
205
|
|
|
172
206
|
/* Third-language dictionaries: one entry per language, each preceded
|
|
@@ -228,6 +262,23 @@ window.__ModuleLoader__.load({
|
|
|
228
262
|
"python.hint": "عند الإيقاف (افتراضيًا) يستخدم run_code الخلفية الرسمية Node/TypeScript، مطابقة تمامًا لتركيبة ptc الرسمية؛ وعند التشغيل يتحول إلى خلفية CPython التجريبية في dsh (@deepseek-ai/dsh-experimental-ptc-runtime-python)، فتتحول لغة run_code ومطالبة SDK المولَّدة وعرض الأداة إلى Python. يتطلب نظام POSIX و CPython ≥ 3.10 (غير متاح على Windows)، وهو متعارض مع أداة workflow — فالتركيبة الرسمية لـ Python تعطّل workflow أيضًا، لذا يبقى جانب workflow مُعطَّلًا في المتغيّرات الأربعة أثناء التشغيل (قيمتك محفوظة وتعود عند الإيقاف). يسري التغيير بعد إعادة تشغيل dsh؛ هذا هو المفتاح نفسه على بطاقة dsh-ptc-cordis-preset — الجانبان يتشاركان حالة واحدة. يظهر فقط عند تثبيت dsh-ptc-cordis-preset. إذا لم يسري التشغيل، فسبب ذلك مذكور في سجل تشغيل dsh.",
|
|
229
263
|
"python.degraded": "الخلفية غير متاحة، لا يزال Node (السبب في سجل بدء التشغيل)",
|
|
230
264
|
"python.blocked": "هذا المضيف يعمل بـ Windows: الخلفية التجريبية Python تدعم POSIX فقط، لذا لا يتوفر هذا المفتاح.",
|
|
265
|
+
"sec.tools": "أدوات الطرفية",
|
|
266
|
+
"tools.hint": "يثبّت أدوات سطر أوامر شائعة من مصدر winget الرسمي. لا يُعاد تثبيت أي أداة موجودة أصلًا، ولا تُرقّى سلسلة أدوات يوفّرها LLVM أو WinLibs أو ما شابه — يُعرض مصدرها فقط.",
|
|
267
|
+
"tools.refresh": "تحديث الحالة",
|
|
268
|
+
"tools.run": "تثبيت / ترقية المحدد",
|
|
269
|
+
"tools.selectMissing": "تحديد القابل للتثبيت",
|
|
270
|
+
"tools.loading": "جارٍ الفحص…",
|
|
271
|
+
"tools.nowinget": "لم يُعثر على winget، فلا يمكن التثبيت أو الترقية. يأتي مع Windows 10 إصدار 1809 وما بعده؛ حدّث «مثبّت التطبيقات» من متجر Microsoft.",
|
|
272
|
+
"tools.state.missing": "غير مثبَّت",
|
|
273
|
+
"tools.state.external": "موجود (مصدر آخر)",
|
|
274
|
+
"tools.state.managed": "ترقية متاحة",
|
|
275
|
+
"tools.state.current": "محدَّث",
|
|
276
|
+
"tools.adminHint": "يتطلب صلاحيات المسؤول: ستظهر نافذة UAC — أكّدها على هذا الجهاز",
|
|
277
|
+
"tools.working": "جارٍ العمل",
|
|
278
|
+
"tools.resultOk": "نجح",
|
|
279
|
+
"tools.resultFail": "فشل",
|
|
280
|
+
"tools.installing": "جارٍ التثبيت…",
|
|
281
|
+
"tools.updating": "جارٍ الترقية…",
|
|
231
282
|
},
|
|
232
283
|
/* locale: de */
|
|
233
284
|
"de": {
|
|
@@ -279,6 +330,23 @@ window.__ModuleLoader__.load({
|
|
|
279
330
|
"python.hint": "Aus (Standard): run_code nutzt das offizielle Node/TypeScript-Backend, byte-identisch zur ausgelieferten ptc-Komposition; an: dsh wechselt auf das experimentelle CPython-Backend (@deepseek-ai/dsh-experimental-ptc-runtime-python), womit Sprache, generierter SDK-Prompt und Darstellung von run_code auf Python umstellen. Erfordert POSIX und CPython ≥ 3.10 (unter Windows nicht verfügbar) und ist mit dem workflow-Tool unvereinbar — die offizielle Python-Komposition deaktiviert workflow ebenfalls, deshalb bleibt die workflow-Seite aller vier Varianten so lange aus (dein Workflow-Wert bleibt erhalten und kehrt nach dem Ausschalten zurück). Wirkt nach einem Neustart von dsh; dies ist derselbe Schalter auf der Karte von dsh-ptc-cordis-preset — beide Seiten teilen einen Zustand. Nur sichtbar, solange dsh-ptc-cordis-preset installiert ist. Bleibt das Einschalten ohne Wirkung, nennt das dsh-Startprotokoll den Grund.",
|
|
280
331
|
"python.degraded": "Backend nicht verfügbar, weiterhin Node (Grund im dsh-Startprotokoll)",
|
|
281
332
|
"python.blocked": "Dieser Host ist Windows: Das experimentelle Python-Backend unterstützt nur POSIX, der Schalter ist nicht verfügbar.",
|
|
333
|
+
"sec.tools": "Terminal-Werkzeuge",
|
|
334
|
+
"tools.hint": "Installiert gängige Kommandozeilen-Werkzeuge aus der offiziellen winget-Quelle. Bereits Vorhandenes wird nie erneut installiert, und eine Toolchain von LLVM, WinLibs o. Ä. wird nie aktualisiert — ihre Herkunft wird nur angezeigt.",
|
|
335
|
+
"tools.refresh": "Status aktualisieren",
|
|
336
|
+
"tools.run": "Ausgewählte installieren / aktualisieren",
|
|
337
|
+
"tools.selectMissing": "Installierbare auswählen",
|
|
338
|
+
"tools.loading": "Prüfe…",
|
|
339
|
+
"tools.nowinget": "winget wurde nicht gefunden, es kann nichts installiert oder aktualisiert werden. Es ist ab Windows 10 1809 enthalten; „App-Installer“ im Microsoft Store aktualisieren.",
|
|
340
|
+
"tools.state.missing": "Nicht installiert",
|
|
341
|
+
"tools.state.external": "Vorhanden (andere Quelle)",
|
|
342
|
+
"tools.state.managed": "Update verfügbar",
|
|
343
|
+
"tools.state.current": "Aktuell",
|
|
344
|
+
"tools.adminHint": "Erfordert Administratorrechte: Ein UAC-Fenster erscheint — bitte an diesem Rechner bestätigen",
|
|
345
|
+
"tools.working": "Läuft",
|
|
346
|
+
"tools.resultOk": "erfolgreich",
|
|
347
|
+
"tools.resultFail": "fehlgeschlagen",
|
|
348
|
+
"tools.installing": "Wird installiert…",
|
|
349
|
+
"tools.updating": "Wird aktualisiert…",
|
|
282
350
|
},
|
|
283
351
|
/* locale: fr */
|
|
284
352
|
"fr": {
|
|
@@ -330,6 +398,23 @@ window.__ModuleLoader__.load({
|
|
|
330
398
|
"python.hint": "Désactivé (par défaut), run_code utilise le backend officiel Node/TypeScript, identique octet pour octet à la composition ptc livrée ; activé, dsh bascule sur le backend CPython expérimental (@deepseek-ai/dsh-experimental-ptc-runtime-python) : la langue, l'invite SDK générée et la présentation de run_code passent en Python. Exige POSIX et CPython ≥ 3.10 (indisponible sous Windows) et est incompatible avec l'outil workflow — la composition Python officielle désactive aussi workflow, donc le côté workflow des quatre variantes reste désactivé tant que l'option est active (ta valeur est conservée et revient à la désactivation). Prend effet après un redémarrage de dsh ; c'est le même interrupteur que sur la carte de dsh-ptc-cordis-preset — les deux côtés partagent un seul état. Affiché uniquement si dsh-ptc-cordis-preset est installé. Si l'activation reste sans effet, le journal de démarrage de dsh en indique la raison.",
|
|
331
399
|
"python.degraded": "backend indisponible, toujours Node (raison dans le journal de démarrage de dsh)",
|
|
332
400
|
"python.blocked": "Cet hôte est sous Windows : le backend Python expérimental n'est disponible que sur POSIX, l'interrupteur est indisponible.",
|
|
401
|
+
"sec.tools": "Outils de terminal",
|
|
402
|
+
"tools.hint": "Installe des outils en ligne de commande courants depuis la source winget officielle. Ce qui est déjà présent n'est jamais réinstallé, et une chaîne d'outils fournie par LLVM, WinLibs ou similaire n'est jamais mise à jour — son origine est simplement affichée.",
|
|
403
|
+
"tools.refresh": "Actualiser",
|
|
404
|
+
"tools.run": "Installer / mettre à jour la sélection",
|
|
405
|
+
"tools.selectMissing": "Sélectionner les installables",
|
|
406
|
+
"tools.loading": "Vérification…",
|
|
407
|
+
"tools.nowinget": "winget est introuvable : rien ne peut être installé ni mis à jour. Il est fourni avec Windows 10 1809 et versions ultérieures ; mettez à jour « App Installer » dans le Microsoft Store.",
|
|
408
|
+
"tools.state.missing": "Non installé",
|
|
409
|
+
"tools.state.external": "Présent (autre source)",
|
|
410
|
+
"tools.state.managed": "Mise à jour disponible",
|
|
411
|
+
"tools.state.current": "À jour",
|
|
412
|
+
"tools.adminHint": "Nécessite les droits administrateur : une fenêtre UAC va s'afficher — validez-la sur cette machine",
|
|
413
|
+
"tools.working": "En cours",
|
|
414
|
+
"tools.resultOk": "réussi",
|
|
415
|
+
"tools.resultFail": "échec",
|
|
416
|
+
"tools.installing": "Installation…",
|
|
417
|
+
"tools.updating": "Mise à jour…",
|
|
333
418
|
},
|
|
334
419
|
/* locale: hi */
|
|
335
420
|
"hi": {
|
|
@@ -381,6 +466,23 @@ window.__ModuleLoader__.load({
|
|
|
381
466
|
"python.hint": "बंद (डिफ़ॉल्ट) रहने पर run_code आधिकारिक Node/TypeScript बैकएंड इस्तेमाल करता है, जो भेजे गए ptc संयोजन से पूरी तरह मेल खाता है; चालू करने पर dsh का प्रयोगात्मक CPython बैकएंड (@deepseek-ai/dsh-experimental-ptc-runtime-python) चलता है और run_code की भाषा, बना SDK प्रॉम्प्ट तथा प्रस्तुति Python में बदल जाती है। इसके लिए POSIX और CPython ≥ 3.10 चाहिए (Windows पर उपलब्ध नहीं), और यह workflow टूल से परस्पर अनन्य है — आधिकारिक Python संयोजन भी workflow बंद करता है, इसलिए चालू रहने तक चारों वेरिएंट का workflow पक्ष बंद रहता है (आपकी workflow सेटिंग सुरक्षित रहती है और बंद करने पर लौट आती है)। बदलाव dsh को फिर से शुरू करने के बाद लागू होता है; यह dsh-ptc-cordis-preset के कार्ड पर मौजूद वही स्विच है — दोनों ओर एक ही स्थिति साझा होती है। यह केवल तभी दिखता है जब dsh-ptc-cordis-preset इंस्टॉल हो। चालू करने पर असर न हो तो कारण dsh के स्टार्टअप लॉग में मिलेगा।",
|
|
382
467
|
"python.degraded": "बैकएंड उपलब्ध नहीं, अब भी Node (कारण dsh स्टार्टअप लॉग में)",
|
|
383
468
|
"python.blocked": "यह होस्ट Windows है: प्रयोगात्मक Python बैकएंड केवल POSIX पर चलता है, इसलिए यह स्विच उपलब्ध नहीं है।",
|
|
469
|
+
"sec.tools": "टर्मिनल टूल",
|
|
470
|
+
"tools.hint": "आधिकारिक winget स्रोत से सामान्य कमांड-लाइन टूल इंस्टॉल करता है। जो पहले से मौजूद है उसे दोबारा इंस्टॉल नहीं किया जाता, और LLVM, WinLibs आदि द्वारा दी गई टूलचेन को कभी अपग्रेड नहीं किया जाता — केवल उसका स्रोत दिखाया जाता है।",
|
|
471
|
+
"tools.refresh": "स्थिति ताज़ा करें",
|
|
472
|
+
"tools.run": "चयनित इंस्टॉल / अपग्रेड करें",
|
|
473
|
+
"tools.selectMissing": "इंस्टॉल-योग्य चुनें",
|
|
474
|
+
"tools.loading": "जाँच हो रही है…",
|
|
475
|
+
"tools.nowinget": "winget नहीं मिला, इसलिए कुछ भी इंस्टॉल या अपग्रेड नहीं हो सकता। यह Windows 10 1809 और उसके बाद के साथ आता है; Microsoft Store से “App Installer” अपडेट करें।",
|
|
476
|
+
"tools.state.missing": "इंस्टॉल नहीं है",
|
|
477
|
+
"tools.state.external": "मौजूद (अन्य स्रोत)",
|
|
478
|
+
"tools.state.managed": "अपग्रेड उपलब्ध",
|
|
479
|
+
"tools.state.current": "अद्यतन",
|
|
480
|
+
"tools.adminHint": "व्यवस्थापक अनुमति चाहिए: एक UAC विंडो दिखेगी — इस मशीन पर पुष्टि करें",
|
|
481
|
+
"tools.working": "चल रहा है",
|
|
482
|
+
"tools.resultOk": "सफल",
|
|
483
|
+
"tools.resultFail": "विफल",
|
|
484
|
+
"tools.installing": "इंस्टॉल हो रहा है…",
|
|
485
|
+
"tools.updating": "अपडेट हो रहा है…",
|
|
384
486
|
},
|
|
385
487
|
/* locale: id */
|
|
386
488
|
"id": {
|
|
@@ -432,6 +534,23 @@ window.__ModuleLoader__.load({
|
|
|
432
534
|
"python.hint": "Saat nonaktif (bawaan), run_code memakai backend resmi Node/TypeScript, identik byte demi byte dengan komposisi ptc resmi; saat aktif, dsh memakai backend CPython eksperimental (@deepseek-ai/dsh-experimental-ptc-runtime-python) sehingga bahasa run_code, prompt SDK yang dihasilkan, dan penyajiannya beralih ke Python. Memerlukan POSIX dan CPython ≥ 3.10 (tidak tersedia di Windows) serta saling eksklusif dengan alat workflow — komposisi Python resmi juga menonaktifkan workflow, jadi sisi workflow keempat varian tetap mati selama ini aktif (nilai workflow-mu dipertahankan dan kembali saat dimatikan). Berlaku setelah dsh dimulai ulang; ini sakelar yang sama di kartu dsh-ptc-cordis-preset — kedua sisi berbagi satu status. Hanya tampil saat dsh-ptc-cordis-preset terpasang. Jika diaktifkan tetapi tidak berpengaruh, alasannya ada di log mulai dsh.",
|
|
433
535
|
"python.degraded": "backend tidak tersedia, masih Node (alasan di log mulai dsh)",
|
|
434
536
|
"python.blocked": "Host ini Windows: backend Python eksperimental hanya mendukung POSIX, sakelar ini tidak tersedia.",
|
|
537
|
+
"sec.tools": "Alat terminal",
|
|
538
|
+
"tools.hint": "Memasang alat baris perintah umum dari sumber winget resmi. Yang sudah ada tidak pernah dipasang ulang, dan toolchain dari LLVM, WinLibs, dan sejenisnya tidak pernah ditingkatkan — asalnya hanya ditampilkan.",
|
|
539
|
+
"tools.refresh": "Segarkan status",
|
|
540
|
+
"tools.run": "Pasang / tingkatkan yang dipilih",
|
|
541
|
+
"tools.selectMissing": "Pilih yang bisa dipasang",
|
|
542
|
+
"tools.loading": "Memeriksa…",
|
|
543
|
+
"tools.nowinget": "winget tidak ditemukan, jadi tidak ada yang bisa dipasang atau ditingkatkan. winget tersedia sejak Windows 10 1809; perbarui “App Installer” di Microsoft Store.",
|
|
544
|
+
"tools.state.missing": "Belum terpasang",
|
|
545
|
+
"tools.state.external": "Ada (sumber lain)",
|
|
546
|
+
"tools.state.managed": "Ada peningkatan",
|
|
547
|
+
"tools.state.current": "Terbaru",
|
|
548
|
+
"tools.adminHint": "Perlu administrator: jendela UAC akan muncul — setujui di komputer ini",
|
|
549
|
+
"tools.working": "Memproses",
|
|
550
|
+
"tools.resultOk": "berhasil",
|
|
551
|
+
"tools.resultFail": "gagal",
|
|
552
|
+
"tools.installing": "Memasang…",
|
|
553
|
+
"tools.updating": "Memperbarui…",
|
|
435
554
|
},
|
|
436
555
|
/* locale: it */
|
|
437
556
|
"it": {
|
|
@@ -483,6 +602,23 @@ window.__ModuleLoader__.load({
|
|
|
483
602
|
"python.hint": "Disattivato (predefinito) run_code usa il backend ufficiale Node/TypeScript, identico byte per byte alla composizione ptc distribuita; attivandolo dsh passa al backend CPython sperimentale (@deepseek-ai/dsh-experimental-ptc-runtime-python): lingua, prompt SDK generato e presentazione di run_code passano a Python. Richiede POSIX e CPython ≥ 3.10 (non disponibile su Windows) ed è incompatibile con lo strumento workflow — anche la composizione Python ufficiale disattiva workflow, quindi il lato workflow di tutte e quattro le varianti resta spento finché è attivo (il tuo valore viene conservato e torna alla disattivazione). Ha effetto dopo il riavvio di dsh; è lo stesso interruttore sulla scheda di dsh-ptc-cordis-preset — entrambi i lati condividono un unico stato. Visibile solo quando dsh-ptc-cordis-preset è installato. Se l'attivazione non ha effetto, il motivo è nel log di avvio di dsh.",
|
|
484
603
|
"python.degraded": "backend non disponibile, resta Node (motivo nel log di avvio di dsh)",
|
|
485
604
|
"python.blocked": "Questo host è Windows: il backend Python sperimentale supporta solo POSIX, l'interruttore non è disponibile.",
|
|
605
|
+
"sec.tools": "Strumenti da terminale",
|
|
606
|
+
"tools.hint": "Installa strumenti da riga di comando comuni dalla fonte winget ufficiale. Ciò che è già presente non viene mai reinstallato, e una toolchain fornita da LLVM, WinLibs o simili non viene mai aggiornata — ne viene solo mostrata l'origine.",
|
|
607
|
+
"tools.refresh": "Aggiorna stato",
|
|
608
|
+
"tools.run": "Installa / aggiorna selezionati",
|
|
609
|
+
"tools.selectMissing": "Seleziona installabili",
|
|
610
|
+
"tools.loading": "Verifica…",
|
|
611
|
+
"tools.nowinget": "winget non trovato: non è possibile installare né aggiornare. È incluso da Windows 10 1809; aggiorna “App Installer” dal Microsoft Store.",
|
|
612
|
+
"tools.state.missing": "Non installato",
|
|
613
|
+
"tools.state.external": "Presente (altra fonte)",
|
|
614
|
+
"tools.state.managed": "Aggiornamento disponibile",
|
|
615
|
+
"tools.state.current": "Aggiornato",
|
|
616
|
+
"tools.adminHint": "Richiede privilegi di amministratore: apparirà una finestra UAC — confermala su questo computer",
|
|
617
|
+
"tools.working": "In corso",
|
|
618
|
+
"tools.resultOk": "riuscito",
|
|
619
|
+
"tools.resultFail": "non riuscito",
|
|
620
|
+
"tools.installing": "Installazione…",
|
|
621
|
+
"tools.updating": "Aggiornamento…",
|
|
486
622
|
},
|
|
487
623
|
/* locale: ja */
|
|
488
624
|
"ja": {
|
|
@@ -534,6 +670,23 @@ window.__ModuleLoader__.load({
|
|
|
534
670
|
"python.hint": "オフ(既定)では run_code は公式の Node/TypeScript バックエンドを使い、公式 ptc 構成とバイト単位で一致します。オンにすると dsh の実験的 CPython バックエンド(@deepseek-ai/dsh-experimental-ptc-runtime-python)に切り替わり、run_code の言語・生成される SDK プロンプト・提示が Python に変わります。POSIX と CPython ≥ 3.10 が必要(Windows では利用不可)で、workflow ツールとは排他です —— 公式 Python 構成も workflow を無効化するため、オン期間中は 4 変体すべてで workflow 側が強制的にオフになります(ワークフロー設定値は保持され、オフに戻すと復帰)。変更は dsh の再起動後に有効です。これは dsh-ptc-cordis-preset のカードにある同じスイッチで、両側が同一状態を共有します。dsh-ptc-cordis-preset がインストールされているときだけ表示されます。 オンにしても効かない場合の理由は dsh の起動ログにあります。",
|
|
535
671
|
"python.degraded": "バックエンド利用不可・現在も Node(理由は dsh の起動ログ)",
|
|
536
672
|
"python.blocked": "このホストは Windows です。実験的 Python バックエンドは POSIX 専用のため、このスイッチは利用できません。",
|
|
673
|
+
"sec.tools": "ターミナルツール",
|
|
674
|
+
"tools.hint": "winget の公式ソースから定番のコマンドラインツールを導入します。すでに入っているものは再インストールせず、LLVM や WinLibs などが提供するツールチェーンは更新しません(入手元を表示するだけです)。",
|
|
675
|
+
"tools.refresh": "状態を更新",
|
|
676
|
+
"tools.run": "選択したものをインストール / 更新",
|
|
677
|
+
"tools.selectMissing": "導入可能なものを選択",
|
|
678
|
+
"tools.loading": "確認中…",
|
|
679
|
+
"tools.nowinget": "winget が見つからないため、インストールも更新もできません。Windows 10 1809 以降に同梱されています。Microsoft Store で「アプリ インストーラー」を更新してください。",
|
|
680
|
+
"tools.state.missing": "未インストール",
|
|
681
|
+
"tools.state.external": "あり(別の入手元)",
|
|
682
|
+
"tools.state.managed": "更新あり",
|
|
683
|
+
"tools.state.current": "最新",
|
|
684
|
+
"tools.adminHint": "管理者権限が必要です。UAC の画面が表示されるので、この PC で承認してください",
|
|
685
|
+
"tools.working": "処理中",
|
|
686
|
+
"tools.resultOk": "成功",
|
|
687
|
+
"tools.resultFail": "失敗",
|
|
688
|
+
"tools.installing": "インストール中…",
|
|
689
|
+
"tools.updating": "更新中…",
|
|
537
690
|
},
|
|
538
691
|
/* locale: ko */
|
|
539
692
|
"ko": {
|
|
@@ -585,6 +738,23 @@ window.__ModuleLoader__.load({
|
|
|
585
738
|
"python.hint": "끄면(기본) run_code는 공식 Node/TypeScript 백엔드를 사용해 공식 ptc 구성과 바이트 단위로 일치합니다. 켜면 dsh의 실험적 CPython 백엔드(@deepseek-ai/dsh-experimental-ptc-runtime-python)로 바뀌어 run_code의 언어, 생성되는 SDK 프롬프트, 도구 표시가 Python으로 전환됩니다. POSIX와 CPython ≥ 3.10이 필요하며(Windows에서는 사용 불가) workflow 도구와 상호 배타적입니다 — 공식 Python 구성도 workflow를 끄므로 켜져 있는 동안 네 변형 모두 workflow 쪽이 강제로 꺼집니다(워크플로 설정값은 유지되고 끄면 복구됩니다). 변경은 dsh 재시작 후 적용됩니다. 이 스위치는 dsh-ptc-cordis-preset 카드에 있는 바로 그 스위치이며 양쪽이 같은 상태를 공유합니다. dsh-ptc-cordis-preset이 설치되어 있을 때만 표시됩니다. 켠 뒤에도 적용되지 않으면 그 이유는 dsh 시작 로그에 있습니다.",
|
|
586
739
|
"python.degraded": "백엔드 사용 불가, 여전히 Node(이유는 dsh 시작 로그)",
|
|
587
740
|
"python.blocked": "이 호스트는 Windows입니다. 실험적 Python 백엔드는 POSIX만 지원하므로 이 스위치를 쓸 수 없습니다.",
|
|
741
|
+
"sec.tools": "터미널 도구",
|
|
742
|
+
"tools.hint": "공식 winget 소스에서 자주 쓰는 명령줄 도구를 설치합니다. 이미 있는 것은 다시 설치하지 않고, LLVM·WinLibs 등이 제공하는 툴체인은 업그레이드하지 않습니다(출처만 표시합니다).",
|
|
743
|
+
"tools.refresh": "상태 새로 고침",
|
|
744
|
+
"tools.run": "선택 항목 설치 / 업그레이드",
|
|
745
|
+
"tools.selectMissing": "설치 가능 항목 선택",
|
|
746
|
+
"tools.loading": "확인 중…",
|
|
747
|
+
"tools.nowinget": "winget을 찾을 수 없어 설치하거나 업그레이드할 수 없습니다. Windows 10 1809부터 기본 포함되며, Microsoft Store에서 “앱 설치 관리자”를 업데이트하세요.",
|
|
748
|
+
"tools.state.missing": "설치되지 않음",
|
|
749
|
+
"tools.state.external": "있음(다른 출처)",
|
|
750
|
+
"tools.state.managed": "업그레이드 가능",
|
|
751
|
+
"tools.state.current": "최신",
|
|
752
|
+
"tools.adminHint": "관리자 권한이 필요합니다. UAC 창이 뜨면 이 PC에서 승인하세요",
|
|
753
|
+
"tools.working": "처리 중",
|
|
754
|
+
"tools.resultOk": "성공",
|
|
755
|
+
"tools.resultFail": "실패",
|
|
756
|
+
"tools.installing": "설치 중…",
|
|
757
|
+
"tools.updating": "업데이트 중…",
|
|
588
758
|
},
|
|
589
759
|
/* locale: nl */
|
|
590
760
|
"nl": {
|
|
@@ -636,6 +806,23 @@ window.__ModuleLoader__.load({
|
|
|
636
806
|
"python.hint": "Uit (standaard) gebruikt run_code de officiële Node/TypeScript-backend, byte voor byte gelijk aan de meegeleverde ptc-compositie; aan schakelt dsh over op de experimentele CPython-backend (@deepseek-ai/dsh-experimental-ptc-runtime-python), waardoor taal, gegenereerde SDK-prompt en weergave van run_code naar Python gaan. Vereist POSIX en CPython ≥ 3.10 (niet beschikbaar op Windows) en is onverenigbaar met de workflow-tool — de officiële Python-compositie schakelt workflow ook uit, dus de workflow-kant van alle vier varianten blijft uit zolang dit aan staat (je workflow-waarde blijft bewaard en keert terug als je het uitzet). Werkt na een herstart van dsh; dit is dezelfde schakelaar op de kaart van dsh-ptc-cordis-preset — beide kanten delen één status. Alleen zichtbaar zolang dsh-ptc-cordis-preset is geïnstalleerd. Werkt het aanzetten niet, dan staat de reden in het opstartlogboek van dsh.",
|
|
637
807
|
"python.degraded": "backend niet beschikbaar, nog steeds Node (reden in het dsh-opstartlogboek)",
|
|
638
808
|
"python.blocked": "Deze host is Windows: de experimentele Python-backend ondersteunt alleen POSIX, deze schakelaar is niet beschikbaar.",
|
|
809
|
+
"sec.tools": "Terminalhulpmiddelen",
|
|
810
|
+
"tools.hint": "Installeert gangbare opdrachtregelprogramma’s uit de officiële winget-bron. Wat al aanwezig is wordt nooit opnieuw geïnstalleerd, en een toolchain van LLVM, WinLibs en dergelijke wordt nooit bijgewerkt — de herkomst wordt alleen getoond.",
|
|
811
|
+
"tools.refresh": "Status vernieuwen",
|
|
812
|
+
"tools.run": "Geselecteerde installeren / bijwerken",
|
|
813
|
+
"tools.selectMissing": "Installeerbare selecteren",
|
|
814
|
+
"tools.loading": "Controleren…",
|
|
815
|
+
"tools.nowinget": "winget is niet gevonden, dus er kan niets worden geïnstalleerd of bijgewerkt. Het zit sinds Windows 10 1809 in het systeem; werk “App Installer” bij in de Microsoft Store.",
|
|
816
|
+
"tools.state.missing": "Niet geïnstalleerd",
|
|
817
|
+
"tools.state.external": "Aanwezig (andere bron)",
|
|
818
|
+
"tools.state.managed": "Update beschikbaar",
|
|
819
|
+
"tools.state.current": "Bijgewerkt",
|
|
820
|
+
"tools.adminHint": "Vereist beheerdersrechten: er verschijnt een UAC-venster — bevestig dat op deze computer",
|
|
821
|
+
"tools.working": "Bezig",
|
|
822
|
+
"tools.resultOk": "geslaagd",
|
|
823
|
+
"tools.resultFail": "mislukt",
|
|
824
|
+
"tools.installing": "Installeren…",
|
|
825
|
+
"tools.updating": "Bijwerken…",
|
|
639
826
|
},
|
|
640
827
|
/* locale: pl */
|
|
641
828
|
"pl": {
|
|
@@ -687,6 +874,23 @@ window.__ModuleLoader__.load({
|
|
|
687
874
|
"python.hint": "Wyłączony (domyślnie) run_code używa oficjalnego backendu Node/TypeScript, identycznego co do bajtu z dostarczaną kompozycją ptc; włączenie przełącza dsh na eksperymentalny backend CPython (@deepseek-ai/dsh-experimental-ptc-runtime-python), więc język, generowany prompt SDK i prezentacja run_code przechodzą na Python. Wymaga POSIX i CPython ≥ 3.10 (niedostępny w Windows) i jest wykluczający z narzędziem workflow — oficjalna kompozycja Python również wyłącza workflow, więc strona workflow wszystkich czterech wariantów pozostaje wyłączona, dopóki to jest włączone (twoje ustawienie workflow jest zachowane i wraca po wyłączeniu). Zmiana działa po restarcie dsh; to ten sam przełącznik na karcie dsh-ptc-cordis-preset — obie strony dzielą jeden stan. Widoczny tylko, gdy dsh-ptc-cordis-preset jest zainstalowany. Jeśli włączenie nie przyniesie skutku, powód znajdziesz w logu startowym dsh.",
|
|
688
875
|
"python.degraded": "backend niedostępny, nadal Node (powód w logu startowym dsh)",
|
|
689
876
|
"python.blocked": "Ten host to Windows: eksperymentalny backend Python obsługuje tylko POSIX, przełącznik jest niedostępny.",
|
|
877
|
+
"sec.tools": "Narzędzia terminala",
|
|
878
|
+
"tools.hint": "Instaluje popularne narzędzia wiersza poleceń z oficjalnego źródła winget. To, co już jest, nie jest instalowane ponownie, a łańcuch narzędzi dostarczany przez LLVM, WinLibs itp. nie jest aktualizowany — pokazujemy tylko jego pochodzenie.",
|
|
879
|
+
"tools.refresh": "Odśwież stan",
|
|
880
|
+
"tools.run": "Zainstaluj / zaktualizuj wybrane",
|
|
881
|
+
"tools.selectMissing": "Wybierz instalowalne",
|
|
882
|
+
"tools.loading": "Sprawdzanie…",
|
|
883
|
+
"tools.nowinget": "Nie znaleziono winget, więc nie można niczego zainstalować ani zaktualizować. Jest dołączony od Windows 10 1809; zaktualizuj „App Installer” w Microsoft Store.",
|
|
884
|
+
"tools.state.missing": "Nie zainstalowano",
|
|
885
|
+
"tools.state.external": "Obecne (inne źródło)",
|
|
886
|
+
"tools.state.managed": "Dostępna aktualizacja",
|
|
887
|
+
"tools.state.current": "Aktualne",
|
|
888
|
+
"tools.adminHint": "Wymaga uprawnień administratora: pojawi się okno UAC — potwierdź je na tym komputerze",
|
|
889
|
+
"tools.working": "Przetwarzanie",
|
|
890
|
+
"tools.resultOk": "sukces",
|
|
891
|
+
"tools.resultFail": "niepowodzenie",
|
|
892
|
+
"tools.installing": "Instalowanie…",
|
|
893
|
+
"tools.updating": "Aktualizowanie…",
|
|
690
894
|
},
|
|
691
895
|
/* locale: pt */
|
|
692
896
|
"pt": {
|
|
@@ -738,6 +942,23 @@ window.__ModuleLoader__.load({
|
|
|
738
942
|
"python.hint": "Desligado (padrão), o run_code usa o backend oficial Node/TypeScript, idêntico byte a byte à composição ptc distribuída; ligado, o dsh passa para o backend CPython experimental (@deepseek-ai/dsh-experimental-ptc-runtime-python), e a linguagem, o prompt SDK gerado e a apresentação do run_code passam para Python. Exige POSIX e CPython ≥ 3.10 (indisponível no Windows) e é incompatível com a ferramenta workflow — a composição Python oficial também desativa workflow, pelo que o lado workflow das quatro variantes fica desligado enquanto isto estiver ligado (o teu valor é mantido e regressa ao desligar). Produz efeito após reiniciar o dsh; é o mesmo interruptor no cartão do dsh-ptc-cordis-preset — os dois lados partilham um único estado. Só aparece quando o dsh-ptc-cordis-preset está instalado. Se ligar não tiver efeito, o motivo está no registo de arranque do dsh.",
|
|
739
943
|
"python.degraded": "backend indisponível, continua Node (motivo no registo de arranque do dsh)",
|
|
740
944
|
"python.blocked": "Este anfitrião é Windows: o backend Python experimental só suporta POSIX, pelo que este interruptor não está disponível.",
|
|
945
|
+
"sec.tools": "Ferramentas de terminal",
|
|
946
|
+
"tools.hint": "Instala ferramentas de linha de comando comuns a partir da fonte oficial winget. O que já existe nunca é reinstalado, e uma toolchain fornecida por LLVM, WinLibs ou similar nunca é atualizada — apenas mostramos a origem.",
|
|
947
|
+
"tools.refresh": "Atualizar estado",
|
|
948
|
+
"tools.run": "Instalar / atualizar selecionados",
|
|
949
|
+
"tools.selectMissing": "Selecionar instaláveis",
|
|
950
|
+
"tools.loading": "A verificar…",
|
|
951
|
+
"tools.nowinget": "winget não foi encontrado, por isso nada pode ser instalado ou atualizado. Vem com o Windows 10 1809 ou superior; atualize o “App Installer” na Microsoft Store.",
|
|
952
|
+
"tools.state.missing": "Não instalado",
|
|
953
|
+
"tools.state.external": "Presente (outra origem)",
|
|
954
|
+
"tools.state.managed": "Atualização disponível",
|
|
955
|
+
"tools.state.current": "Atualizado",
|
|
956
|
+
"tools.adminHint": "Requer administrador: aparecerá uma janela UAC — confirme-a neste computador",
|
|
957
|
+
"tools.working": "A processar",
|
|
958
|
+
"tools.resultOk": "com êxito",
|
|
959
|
+
"tools.resultFail": "falhou",
|
|
960
|
+
"tools.installing": "A instalar…",
|
|
961
|
+
"tools.updating": "A atualizar…",
|
|
741
962
|
},
|
|
742
963
|
/* locale: ru */
|
|
743
964
|
"ru": {
|
|
@@ -789,6 +1010,23 @@ window.__ModuleLoader__.load({
|
|
|
789
1010
|
"python.hint": "Выключено (по умолчанию) — run_code использует официальный бэкенд Node/TypeScript, побайтово совпадающий с поставляемой композицией ptc; при включении dsh переходит на экспериментальный бэкенд CPython (@deepseek-ai/dsh-experimental-ptc-runtime-python), и язык, сгенерированная подсказка SDK и представление run_code переключаются на Python. Требуются POSIX и CPython ≥ 3.10 (в Windows недоступно), и это несовместимо с инструментом workflow — официальная композиция Python тоже отключает workflow, поэтому сторона workflow всех четырёх вариантов остаётся выключенной, пока это включено (ваша настройка workflow сохраняется и возвращается после выключения). Изменение действует после перезапуска dsh; это тот же переключатель на карточке dsh-ptc-cordis-preset — обе стороны делят одно состояние. Показывается только когда установлен dsh-ptc-cordis-preset. Если включение не подействовало, причина указана в журнале запуска dsh.",
|
|
790
1011
|
"python.degraded": "бэкенд недоступен, по-прежнему Node (причина в журнале запуска dsh)",
|
|
791
1012
|
"python.blocked": "Этот хост — Windows: экспериментальный бэкенд Python поддерживает только POSIX, переключатель недоступен.",
|
|
1013
|
+
"sec.tools": "Терминальные инструменты",
|
|
1014
|
+
"tools.hint": "Устанавливает распространённые консольные утилиты из официального источника winget. Уже имеющееся никогда не переустанавливается, а инструментарий от LLVM, WinLibs и подобных никогда не обновляется — показывается только его источник.",
|
|
1015
|
+
"tools.refresh": "Обновить состояние",
|
|
1016
|
+
"tools.run": "Установить / обновить выбранное",
|
|
1017
|
+
"tools.selectMissing": "Выбрать доступные для установки",
|
|
1018
|
+
"tools.loading": "Проверка…",
|
|
1019
|
+
"tools.nowinget": "winget не найден, поэтому ничего нельзя установить или обновить. Он входит в Windows 10 1809 и новее; обновите «App Installer» в Microsoft Store.",
|
|
1020
|
+
"tools.state.missing": "Не установлено",
|
|
1021
|
+
"tools.state.external": "Есть (другой источник)",
|
|
1022
|
+
"tools.state.managed": "Доступно обновление",
|
|
1023
|
+
"tools.state.current": "Актуально",
|
|
1024
|
+
"tools.adminHint": "Нужны права администратора: появится окно UAC — подтвердите его на этом компьютере",
|
|
1025
|
+
"tools.working": "Выполняется",
|
|
1026
|
+
"tools.resultOk": "успешно",
|
|
1027
|
+
"tools.resultFail": "ошибка",
|
|
1028
|
+
"tools.installing": "Установка…",
|
|
1029
|
+
"tools.updating": "Обновление…",
|
|
792
1030
|
},
|
|
793
1031
|
/* locale: sv */
|
|
794
1032
|
"sv": {
|
|
@@ -840,6 +1078,23 @@ window.__ModuleLoader__.load({
|
|
|
840
1078
|
"python.hint": "Av (standard) använder run_code den officiella Node/TypeScript-backenden, byte för byte identisk med den medföljande ptc-kompositionen; på växlar dsh till den experimentella CPython-backenden (@deepseek-ai/dsh-experimental-ptc-runtime-python), vilket även byter run_codes språk, genererade SDK-prompt och presentation till Python. Kräver POSIX och CPython ≥ 3.10 (ej tillgängligt i Windows) och utesluter workflow-verktyget — den officiella Python-kompositionen stänger också av workflow, så workflow-sidan i alla fyra varianter hålls avstängd medan detta är på (ditt workflow-värde behålls och återställs när du stänger av). Gäller efter omstart av dsh; detta är samma växel på dsh-ptc-cordis-presets kort — båda sidor delar ett tillstånd. Visas bara när dsh-ptc-cordis-preset är installerat. Om påslaget inte får effekt står orsaken i dsh:s startlogg.",
|
|
841
1079
|
"python.degraded": "backend otillgänglig, fortfarande Node (orsak i dsh-startloggen)",
|
|
842
1080
|
"python.blocked": "Den här värden är Windows: den experimentella Python-backenden stöder bara POSIX, så växeln är otillgänglig.",
|
|
1081
|
+
"sec.tools": "Terminalverktyg",
|
|
1082
|
+
"tools.hint": "Installerar vanliga kommandoradsverktyg från den officiella winget-källan. Det som redan finns installeras aldrig om, och en verktygskedja från LLVM, WinLibs eller liknande uppgraderas aldrig — bara dess ursprung visas.",
|
|
1083
|
+
"tools.refresh": "Uppdatera status",
|
|
1084
|
+
"tools.run": "Installera / uppgradera valda",
|
|
1085
|
+
"tools.selectMissing": "Välj installeringsbara",
|
|
1086
|
+
"tools.loading": "Kontrollerar…",
|
|
1087
|
+
"tools.nowinget": "winget hittades inte, så inget kan installeras eller uppgraderas. Det ingår från Windows 10 1809; uppdatera “App Installer” i Microsoft Store.",
|
|
1088
|
+
"tools.state.missing": "Ej installerat",
|
|
1089
|
+
"tools.state.external": "Finns (annan källa)",
|
|
1090
|
+
"tools.state.managed": "Uppgradering finns",
|
|
1091
|
+
"tools.state.current": "Senaste",
|
|
1092
|
+
"tools.adminHint": "Kräver administratör: ett UAC-fönster visas — bekräfta det på den här datorn",
|
|
1093
|
+
"tools.working": "Arbetar",
|
|
1094
|
+
"tools.resultOk": "lyckades",
|
|
1095
|
+
"tools.resultFail": "misslyckades",
|
|
1096
|
+
"tools.installing": "Installerar…",
|
|
1097
|
+
"tools.updating": "Uppdaterar…",
|
|
843
1098
|
},
|
|
844
1099
|
/* locale: th */
|
|
845
1100
|
"th": {
|
|
@@ -891,6 +1146,23 @@ window.__ModuleLoader__.load({
|
|
|
891
1146
|
"python.hint": "เมื่อปิด (ค่าเริ่มต้น) run_code จะใช้แบ็กเอนด์ Node/TypeScript อย่างเป็นทางการ ซึ่งเหมือนกับคอมโพซิชัน ptc ที่จัดส่งทุกไบต์; เมื่อเปิด dsh จะเปลี่ยนไปใช้แบ็กเอนด์ CPython ทดลอง (@deepseek-ai/dsh-experimental-ptc-runtime-python) ภาษา พรอมป์ต์ SDK ที่สร้างขึ้น และการนำเสนอของ run_code จะเปลี่ยนเป็น Python ต้องใช้ POSIX และ CPython ≥ 3.10 (ใช้ไม่ได้บน Windows) และใช้ร่วมกับเครื่องมือ workflow ไม่ได้ — คอมโพซิชัน Python อย่างเป็นทางการก็ปิด workflow เช่นกัน ฝั่ง workflow ของทั้งสี่รูปแบบจึงถูกปิดขณะเปิดอยู่ (ค่าที่คุณตั้งไว้จะถูกเก็บและกลับมาเมื่อปิด) การเปลี่ยนแปลงมีผลหลังรีสตาร์ต dsh; นี่คือสวิตช์เดียวกันบนการ์ดของ dsh-ptc-cordis-preset — ทั้งสองฝั่งใช้สถานะเดียวกัน แสดงเฉพาะเมื่อติดตั้ง dsh-ptc-cordis-preset แล้วเท่านั้น หากเปิดแล้วไม่เกิดผล เหตุผลอยู่ในบันทึกการเริ่มต้นของ dsh",
|
|
892
1147
|
"python.degraded": "แบ็กเอนด์ใช้ไม่ได้ ยังเป็น Node (เหตุผลในบันทึกเริ่มต้นของ dsh)",
|
|
893
1148
|
"python.blocked": "โฮสต์นี้เป็น Windows: แบ็กเอนด์ Python ทดลองรองรับเฉพาะ POSIX สวิตช์นี้จึงใช้ไม่ได้",
|
|
1149
|
+
"sec.tools": "เครื่องมือเทอร์มินัล",
|
|
1150
|
+
"tools.hint": "ติดตั้งเครื่องมือบรรทัดคำสั่งที่ใช้บ่อยจากแหล่ง winget อย่างเป็นทางการ สิ่งที่มีอยู่แล้วจะไม่ติดตั้งซ้ำ และ toolchain ที่มาจาก LLVM, WinLibs หรืออื่น ๆ จะไม่ถูกอัปเกรด เพียงแสดงแหล่งที่มาเท่านั้น",
|
|
1151
|
+
"tools.refresh": "รีเฟรชสถานะ",
|
|
1152
|
+
"tools.run": "ติดตั้ง / อัปเกรดรายการที่เลือก",
|
|
1153
|
+
"tools.selectMissing": "เลือกรายการที่ติดตั้งได้",
|
|
1154
|
+
"tools.loading": "กำลังตรวจสอบ…",
|
|
1155
|
+
"tools.nowinget": "ไม่พบ winget จึงติดตั้งหรืออัปเกรดไม่ได้ มีมาให้ตั้งแต่ Windows 10 1809 ขึ้นไป อัปเดต “App Installer” ใน Microsoft Store",
|
|
1156
|
+
"tools.state.missing": "ยังไม่ได้ติดตั้ง",
|
|
1157
|
+
"tools.state.external": "มีอยู่แล้ว (แหล่งอื่น)",
|
|
1158
|
+
"tools.state.managed": "มีเวอร์ชันใหม่",
|
|
1159
|
+
"tools.state.current": "ล่าสุดแล้ว",
|
|
1160
|
+
"tools.adminHint": "ต้องใช้สิทธิ์ผู้ดูแลระบบ จะมีหน้าต่าง UAC ขึ้นมา กรุณายืนยันบนเครื่องนี้",
|
|
1161
|
+
"tools.working": "กำลังดำเนินการ",
|
|
1162
|
+
"tools.resultOk": "สำเร็จ",
|
|
1163
|
+
"tools.resultFail": "ล้มเหลว",
|
|
1164
|
+
"tools.installing": "กำลังติดตั้ง…",
|
|
1165
|
+
"tools.updating": "กำลังอัปเกรด…",
|
|
894
1166
|
},
|
|
895
1167
|
/* locale: tr */
|
|
896
1168
|
"tr": {
|
|
@@ -942,6 +1214,23 @@ window.__ModuleLoader__.load({
|
|
|
942
1214
|
"python.hint": "Kapalıyken (varsayılan) run_code resmî Node/TypeScript arka ucunu kullanır ve gönderilen ptc bileşimiyle bayt bayt aynıdır; açıldığında dsh deneysel CPython arka ucuna (@deepseek-ai/dsh-experimental-ptc-runtime-python) geçer; run_code dil, üretilen SDK istemi ve sunum Python'a döner. POSIX ve CPython ≥ 3.10 gerektirir (Windows'ta kullanılamaz) ve workflow aracıyla birbirini dışlar — resmî Python bileşimi de workflow'u kapatır, bu yüzden bu açıkken dört varyantın workflow tarafı kapalı kalır (workflow ayarın korunur ve kapatınca geri gelir). Değişiklik dsh yeniden başlatıldıktan sonra geçerli olur; bu, dsh-ptc-cordis-preset kartındaki aynı anahtardır — iki taraf tek durumu paylaşır. Yalnızca dsh-ptc-cordis-preset kurulu olduğunda görünür. Açmak etkili olmazsa nedeni dsh başlangıç günlüğünde yazar.",
|
|
943
1215
|
"python.degraded": "arka uç kullanılamıyor, hâlâ Node (neden dsh başlangıç günlüğünde)",
|
|
944
1216
|
"python.blocked": "Bu ana makine Windows: deneysel Python arka ucu yalnızca POSIX destekler, bu anahtar kullanılamaz.",
|
|
1217
|
+
"sec.tools": "Terminal araçları",
|
|
1218
|
+
"tools.hint": "Resmî winget kaynağından yaygın komut satırı araçlarını kurar. Zaten var olanlar asla yeniden kurulmaz ve LLVM, WinLibs vb. tarafından sağlanan bir araç zinciri asla yükseltilmez — yalnızca kaynağı gösterilir.",
|
|
1219
|
+
"tools.refresh": "Durumu yenile",
|
|
1220
|
+
"tools.run": "Seçilenleri kur / yükselt",
|
|
1221
|
+
"tools.selectMissing": "Kurulabilirleri seç",
|
|
1222
|
+
"tools.loading": "Denetleniyor…",
|
|
1223
|
+
"tools.nowinget": "winget bulunamadı; hiçbir şey kurulamaz veya yükseltilemez. Windows 10 1809 ve sonrasıyla birlikte gelir; Microsoft Store’dan “App Installer”ı güncelleyin.",
|
|
1224
|
+
"tools.state.missing": "Kurulu değil",
|
|
1225
|
+
"tools.state.external": "Var (başka kaynak)",
|
|
1226
|
+
"tools.state.managed": "Güncelleme var",
|
|
1227
|
+
"tools.state.current": "Güncel",
|
|
1228
|
+
"tools.adminHint": "Yönetici izni gerekir: bir UAC penceresi açılır — bu bilgisayarda onaylayın",
|
|
1229
|
+
"tools.working": "İşleniyor",
|
|
1230
|
+
"tools.resultOk": "başarılı",
|
|
1231
|
+
"tools.resultFail": "başarısız",
|
|
1232
|
+
"tools.installing": "Kuruluyor…",
|
|
1233
|
+
"tools.updating": "Güncelleniyor…",
|
|
945
1234
|
},
|
|
946
1235
|
/* locale: vi */
|
|
947
1236
|
"vi": {
|
|
@@ -993,6 +1282,23 @@ window.__ModuleLoader__.load({
|
|
|
993
1282
|
"python.hint": "Khi tắt (mặc định), run_code dùng backend Node/TypeScript chính thức, giống từng byte với tổ hợp ptc được phát hành; khi bật, dsh chuyển sang backend CPython thử nghiệm (@deepseek-ai/dsh-experimental-ptc-runtime-python), kéo theo ngôn ngữ, prompt SDK được sinh và cách trình bày của run_code chuyển sang Python. Yêu cầu POSIX và CPython ≥ 3.10 (không dùng được trên Windows) và loại trừ lẫn nhau với công cụ workflow — tổ hợp Python chính thức cũng tắt workflow, nên phía workflow của cả bốn biến thể bị tắt trong lúc bật (giá trị workflow của bạn được giữ và trở lại khi tắt). Thay đổi có hiệu lực sau khi khởi động lại dsh; đây chính là công tắc trên thẻ của dsh-ptc-cordis-preset — hai bên dùng chung một trạng thái. Chỉ hiện khi đã cài dsh-ptc-cordis-preset. Nếu bật mà không có hiệu lực, lý do nằm trong nhật ký khởi động dsh.",
|
|
994
1283
|
"python.degraded": "backend không khả dụng, vẫn là Node (lý do trong nhật ký khởi động dsh)",
|
|
995
1284
|
"python.blocked": "Máy chủ này là Windows: backend Python thử nghiệm chỉ hỗ trợ POSIX, nên công tắc này không dùng được.",
|
|
1285
|
+
"sec.tools": "Công cụ terminal",
|
|
1286
|
+
"tools.hint": "Cài các công cụ dòng lệnh phổ biến từ nguồn winget chính thức. Thứ đã có sẽ không bao giờ được cài lại, và bộ công cụ do LLVM, WinLibs… cung cấp sẽ không bao giờ bị nâng cấp — chỉ hiển thị nguồn gốc.",
|
|
1287
|
+
"tools.refresh": "Làm mới trạng thái",
|
|
1288
|
+
"tools.run": "Cài / nâng cấp mục đã chọn",
|
|
1289
|
+
"tools.selectMissing": "Chọn mục cài được",
|
|
1290
|
+
"tools.loading": "Đang kiểm tra…",
|
|
1291
|
+
"tools.nowinget": "Không tìm thấy winget nên không thể cài hay nâng cấp. Nó có sẵn từ Windows 10 1809 trở lên; hãy cập nhật “App Installer” trong Microsoft Store.",
|
|
1292
|
+
"tools.state.missing": "Chưa cài",
|
|
1293
|
+
"tools.state.external": "Đã có (nguồn khác)",
|
|
1294
|
+
"tools.state.managed": "Có bản nâng cấp",
|
|
1295
|
+
"tools.state.current": "Mới nhất",
|
|
1296
|
+
"tools.adminHint": "Cần quyền quản trị: cửa sổ UAC sẽ hiện ra — hãy xác nhận trên máy này",
|
|
1297
|
+
"tools.working": "Đang xử lý",
|
|
1298
|
+
"tools.resultOk": "thành công",
|
|
1299
|
+
"tools.resultFail": "thất bại",
|
|
1300
|
+
"tools.installing": "Đang cài…",
|
|
1301
|
+
"tools.updating": "Đang nâng cấp…",
|
|
996
1302
|
},
|
|
997
1303
|
/* locale: zh-hk */
|
|
998
1304
|
"zh-hk": {
|
|
@@ -1044,6 +1350,23 @@ window.__ModuleLoader__.load({
|
|
|
1044
1350
|
"python.hint": "閂咗(預設)嗰陣 run_code 用官方 Node/TypeScript 後端,同官方 ptc 組合逐位元組一致;開咗就轉用 dsh 實驗性 CPython 後端(@deepseek-ai/dsh-experimental-ptc-runtime-python),run_code 嘅語言、生成嘅 SDK 提示詞同工具呈現都會轉去 Python。需要 POSIX 平台同 CPython ≥ 3.10(Windows 用唔到),而且同 workflow 工具互斥——官方 Python 組合同樣停用 workflow,所以開住嗰陣本插件四個變體嘅 workflow 側會強制關閉(你嘅工作流設定值會保留,閂咗之後恢復)。改動要重啟 dsh 先生效;呢個開關就係 dsh-ptc-cordis-preset 設定卡上面同一個開關——兩邊共享同一份狀態。只喺已安裝 dsh-ptc-cordis-preset 時顯示。開咗之後唔生效,原因喺 dsh 啟動日誌度。",
|
|
1045
1351
|
"python.degraded": "後端用唔到,暫時仍然係 Node(原因喺 dsh 啟動日誌)",
|
|
1046
1352
|
"python.blocked": "呢部主機係 Windows:實驗性 Python 後端淨係支援 POSIX,所以呢個開關用唔到。",
|
|
1353
|
+
"sec.tools": "終端工具",
|
|
1354
|
+
"tools.hint": "由 winget 官方源安裝常用命令列工具。已經有嘅(唔理乜來源)一律唔會重複安裝;LLVM、WinLibs 等提供嘅工具鏈亦都唔會升級,只會照實顯示來源。",
|
|
1355
|
+
"tools.refresh": "更新狀態",
|
|
1356
|
+
"tools.run": "安裝 / 升級已揀",
|
|
1357
|
+
"tools.selectMissing": "全選可安裝",
|
|
1358
|
+
"tools.loading": "檢查緊…",
|
|
1359
|
+
"tools.nowinget": "搵唔到 winget,所以裝唔到亦升級唔到。Windows 10 1809 起已經內置,可以喺 Microsoft Store 更新「應用程式安裝程式」。",
|
|
1360
|
+
"tools.state.missing": "未安裝",
|
|
1361
|
+
"tools.state.external": "已有(其他來源)",
|
|
1362
|
+
"tools.state.managed": "可升級",
|
|
1363
|
+
"tools.state.current": "已經最新",
|
|
1364
|
+
"tools.adminHint": "需要管理員權限:會彈出 UAC 視窗,請喺電腦度確認",
|
|
1365
|
+
"tools.working": "處理緊",
|
|
1366
|
+
"tools.resultOk": "成功",
|
|
1367
|
+
"tools.resultFail": "失敗",
|
|
1368
|
+
"tools.installing": "安裝緊…",
|
|
1369
|
+
"tools.updating": "升級緊…",
|
|
1047
1370
|
},
|
|
1048
1371
|
/* locale: zh-mo */
|
|
1049
1372
|
"zh-mo": {
|
|
@@ -1095,6 +1418,23 @@ window.__ModuleLoader__.load({
|
|
|
1095
1418
|
"python.hint": "閂咗(預設)嗰陣 run_code 用官方 Node/TypeScript 後端,同官方 ptc 組合逐位元組一致;開咗就轉用 dsh 實驗性 CPython 後端(@deepseek-ai/dsh-experimental-ptc-runtime-python),run_code 嘅語言、生成嘅 SDK 提示詞同工具呈現都會轉去 Python。需要 POSIX 平台同 CPython ≥ 3.10(Windows 用唔到),而且同 workflow 工具互斥——官方 Python 組合同樣停用 workflow,所以開住嗰陣本插件四個變體嘅 workflow 側會強制關閉(你嘅工作流設定值會保留,閂咗之後恢復)。改動要重啟 dsh 先生效;呢個開關就係 dsh-ptc-cordis-preset 設定卡上面同一個開關——兩邊共享同一份狀態。只喺已安裝 dsh-ptc-cordis-preset 時顯示。開咗之後唔生效,原因喺 dsh 啟動日誌度。",
|
|
1096
1419
|
"python.degraded": "後端用唔到,暫時仍然係 Node(原因喺 dsh 啟動日誌)",
|
|
1097
1420
|
"python.blocked": "呢部主機係 Windows:實驗性 Python 後端淨係支援 POSIX,所以呢個開關用唔到。",
|
|
1421
|
+
"sec.tools": "終端工具",
|
|
1422
|
+
"tools.hint": "由 winget 官方源安裝常用命令列工具。已經有嘅(唔理乜來源)一律唔會重複安裝;LLVM、WinLibs 等提供嘅工具鏈亦都唔會升級,只會照實顯示來源。",
|
|
1423
|
+
"tools.refresh": "更新狀態",
|
|
1424
|
+
"tools.run": "安裝 / 升級已揀",
|
|
1425
|
+
"tools.selectMissing": "全選可安裝",
|
|
1426
|
+
"tools.loading": "檢查緊…",
|
|
1427
|
+
"tools.nowinget": "搵唔到 winget,所以裝唔到亦升級唔到。Windows 10 1809 起已經內置,可以喺 Microsoft Store 更新「應用程式安裝程式」。",
|
|
1428
|
+
"tools.state.missing": "未安裝",
|
|
1429
|
+
"tools.state.external": "已有(其他來源)",
|
|
1430
|
+
"tools.state.managed": "可升級",
|
|
1431
|
+
"tools.state.current": "已經最新",
|
|
1432
|
+
"tools.adminHint": "需要管理員權限:會彈出 UAC 視窗,請喺電腦度確認",
|
|
1433
|
+
"tools.working": "處理緊",
|
|
1434
|
+
"tools.resultOk": "成功",
|
|
1435
|
+
"tools.resultFail": "失敗",
|
|
1436
|
+
"tools.installing": "安裝緊…",
|
|
1437
|
+
"tools.updating": "升級緊…",
|
|
1098
1438
|
},
|
|
1099
1439
|
/* locale: zh-tw */
|
|
1100
1440
|
"zh-tw": {
|
|
@@ -1146,6 +1486,23 @@ window.__ModuleLoader__.load({
|
|
|
1146
1486
|
"python.hint": "關閉(預設)時 run_code 使用官方 Node/TypeScript 後端,與官方 ptc 組合逐位元組一致;開啟後改用 dsh 實驗性 CPython 後端(@deepseek-ai/dsh-experimental-ptc-runtime-python),run_code 的語言、產生的 SDK 提示詞與工具呈現都會切換到 Python。需要 POSIX 平台與 CPython ≥ 3.10(Windows 無法使用),且與 workflow 工具互斥——官方 Python 組合同樣會停用 workflow,因此開啟期間本外掛四個變體的 workflow 側強制關閉(你的工作流設定值會保留,關閉後恢復)。變更需重新啟動 dsh 後生效;這個開關就是 dsh-ptc-cordis-preset 設定卡上的同一個開關——兩側共用同一份狀態。僅在已安裝 dsh-ptc-cordis-preset 時顯示。若設為開啟後未生效,原因見 dsh 啟動日誌。",
|
|
1147
1487
|
"python.degraded": "後端無法使用,目前仍為 Node(原因見 dsh 啟動日誌)",
|
|
1148
1488
|
"python.blocked": "此主機是 Windows:實驗性 Python 後端僅支援 POSIX,因此這個開關無法使用。",
|
|
1489
|
+
"sec.tools": "終端工具",
|
|
1490
|
+
"tools.hint": "從 winget 官方來源安裝常用命令列工具。已經存在的(不論來源)一律不重複安裝;由 LLVM、WinLibs 等提供的工具鏈也不會被升級,只會如實顯示來源。",
|
|
1491
|
+
"tools.refresh": "重新整理狀態",
|
|
1492
|
+
"tools.run": "安裝 / 升級選取項目",
|
|
1493
|
+
"tools.selectMissing": "全選可安裝項目",
|
|
1494
|
+
"tools.loading": "正在檢查…",
|
|
1495
|
+
"tools.nowinget": "未偵測到 winget,無法安裝或升級。Windows 10 1809 起內建,可在 Microsoft Store 更新「應用程式安裝程式」。",
|
|
1496
|
+
"tools.state.missing": "未安裝",
|
|
1497
|
+
"tools.state.external": "已有(其他來源)",
|
|
1498
|
+
"tools.state.managed": "可升級",
|
|
1499
|
+
"tools.state.current": "已是最新",
|
|
1500
|
+
"tools.adminHint": "需要管理員權限:會彈出 UAC 視窗,請在這台電腦上確認",
|
|
1501
|
+
"tools.working": "處理中",
|
|
1502
|
+
"tools.resultOk": "成功",
|
|
1503
|
+
"tools.resultFail": "失敗",
|
|
1504
|
+
"tools.installing": "安裝中…",
|
|
1505
|
+
"tools.updating": "更新中…",
|
|
1149
1506
|
},
|
|
1150
1507
|
};
|
|
1151
1508
|
|
|
@@ -1252,6 +1609,35 @@ window.__ModuleLoader__.load({
|
|
|
1252
1609
|
".gb-saveBtn:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:1px}",
|
|
1253
1610
|
".gb-saveBtn.gb-saved{border-color:var(--dsw-alias-state-success-primary,#3fb950);color:var(--dsw-alias-state-success-primary,#3fb950)}",
|
|
1254
1611
|
".gb-stack{display:flex;flex-direction:column;gap:8px}",
|
|
1612
|
+
/* terminal toolchain (v0.30.0) */
|
|
1613
|
+
".gb-tools{display:flex;flex-direction:column;max-height:260px;overflow:auto;border:1px solid var(--dsw-alias-border-l2);border-radius:8px;padding:4px 8px;background:var(--dsw-alias-bg-layer-1,transparent)}",
|
|
1614
|
+
".gb-toolRow{display:flex;align-items:center;gap:8px;font-size:12.5px;line-height:1.95;color:var(--dsw-alias-label-secondary);cursor:pointer}",
|
|
1615
|
+
".gb-toolRow input{flex:none;margin:0}",
|
|
1616
|
+
".gb-toolCmd{flex:none;min-width:78px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:var(--dsw-alias-label-primary)}",
|
|
1617
|
+
".gb-toolState{flex:none;font-size:11.5px;padding:0 6px;border-radius:6px;border:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-tertiary);white-space:nowrap}",
|
|
1618
|
+
".gb-st-missing{border-color:var(--dsw-alias-brand-primary);color:var(--dsw-alias-brand-primary)}",
|
|
1619
|
+
".gb-st-managed{border-color:var(--dsw-alias-state-warning-primary,#d29922);color:var(--dsw-alias-state-warning-primary,#d29922)}",
|
|
1620
|
+
".gb-st-current{border-color:var(--dsw-alias-state-success-primary,#3fb950);color:var(--dsw-alias-state-success-primary,#3fb950)}",
|
|
1621
|
+
".gb-toolSrc{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;color:var(--dsw-alias-label-tertiary)}",
|
|
1622
|
+
".gb-toolResult{display:flex;gap:6px;font-size:11.5px;line-height:1.6;color:var(--dsw-alias-label-tertiary);overflow-wrap:anywhere}",
|
|
1623
|
+
".gb-ok{flex:none;color:var(--dsw-alias-state-success-primary,#3fb950)}",
|
|
1624
|
+
".gb-bad{flex:none;color:var(--dsw-alias-status-danger,#e5484d)}",
|
|
1625
|
+
".gb-segBtn:disabled{opacity:.45;cursor:default}",
|
|
1626
|
+
/* in-list progress (v0.30.1): the row being installed/upgraded shows a
|
|
1627
|
+
spinner, its action, and a sweeping bar; finished rows keep their
|
|
1628
|
+
verdict, and a failure prints its reason under the row. */
|
|
1629
|
+
".gb-toolRow.gb-rowActive{border-radius:6px;background:var(--dsw-alias-bg-layer-2,transparent)}",
|
|
1630
|
+
".gb-toolState.gb-st-running{border-color:var(--dsw-alias-brand-primary);color:var(--dsw-alias-brand-primary);display:inline-flex;align-items:center;gap:5px}",
|
|
1631
|
+
".gb-st-ok{border-color:var(--dsw-alias-state-success-primary,#3fb950);color:var(--dsw-alias-state-success-primary,#3fb950)}",
|
|
1632
|
+
".gb-st-fail{border-color:var(--dsw-alias-status-danger,#e5484d);color:var(--dsw-alias-status-danger,#e5484d)}",
|
|
1633
|
+
".gb-spin{flex:none;display:inline-block;width:10px;height:10px;border:2px solid var(--dsw-alias-border-l2);border-top-color:var(--dsw-alias-brand-primary);border-radius:50%;animation:gb-spin .8s linear infinite}",
|
|
1634
|
+
".gb-toolBar{flex:1 1 auto;min-width:32px;height:4px;border-radius:2px;background:var(--dsw-alias-border-l2);overflow:hidden}",
|
|
1635
|
+
".gb-toolBarFill{display:block;height:100%;width:38%;border-radius:2px;background:var(--dsw-alias-brand-primary);animation:gb-slide 1.15s ease-in-out infinite}",
|
|
1636
|
+
".gb-jobBar{height:6px;border-radius:3px;background:var(--dsw-alias-border-l2);overflow:hidden}",
|
|
1637
|
+
".gb-jobBarFill{display:block;height:100%;border-radius:3px;background:var(--dsw-alias-brand-primary);transition:width .3s ease}",
|
|
1638
|
+
".gb-toolFail{margin:0 0 4px 26px;font-size:11.5px;line-height:1.5;color:var(--dsw-alias-status-danger,#e5484d);overflow-wrap:anywhere}",
|
|
1639
|
+
"@keyframes gb-spin{to{transform:rotate(360deg)}}",
|
|
1640
|
+
"@keyframes gb-slide{0%{margin-left:-38%}100%{margin-left:100%}}",
|
|
1255
1641
|
].join("\n");
|
|
1256
1642
|
|
|
1257
1643
|
function ensureStyles() {
|
|
@@ -1336,6 +1722,9 @@ window.__ModuleLoader__.load({
|
|
|
1336
1722
|
* write bumps a local tick so the card re-reads without an external-store
|
|
1337
1723
|
* hook adapter.
|
|
1338
1724
|
*/
|
|
1725
|
+
/** Host route serving the winget toolchain status and job control. */
|
|
1726
|
+
var TOOLS_URL = "dsh-gitbash-shell/api/tools";
|
|
1727
|
+
|
|
1339
1728
|
function GitBashCard(props) {
|
|
1340
1729
|
var t = typeof props.t === "function" ? props.t : function (key) { return key; };
|
|
1341
1730
|
|
|
@@ -1362,6 +1751,29 @@ window.__ModuleLoader__.load({
|
|
|
1362
1751
|
var peer = peerState[0];
|
|
1363
1752
|
var setPeer = peerState[1];
|
|
1364
1753
|
|
|
1754
|
+
/* Terminal toolchain (v0.30.0): the winget catalog behind the
|
|
1755
|
+
"install / upgrade" buttons. Loaded only once the card is open, and
|
|
1756
|
+
polled only while a job is actually running. */
|
|
1757
|
+
var toolsState = useState(null);
|
|
1758
|
+
var toolsData = toolsState[0];
|
|
1759
|
+
var setToolsData = toolsState[1];
|
|
1760
|
+
var toolSelState = useState({});
|
|
1761
|
+
var toolSel = toolSelState[0];
|
|
1762
|
+
var setToolSel = toolSelState[1];
|
|
1763
|
+
var toolJobState = useState(null);
|
|
1764
|
+
var toolJob = toolJobState[0];
|
|
1765
|
+
var setToolJob = toolJobState[1];
|
|
1766
|
+
var toolBusyState = useState(false);
|
|
1767
|
+
var toolBusy = toolBusyState[0];
|
|
1768
|
+
var setToolBusy = toolBusyState[1];
|
|
1769
|
+
var toolErrState = useState("");
|
|
1770
|
+
var toolErr = toolErrState[0];
|
|
1771
|
+
var setToolErr = toolErrState[1];
|
|
1772
|
+
var toolsLoadedState = useState(false);
|
|
1773
|
+
var toolsLoaded = toolsLoadedState[0];
|
|
1774
|
+
var setToolsLoaded = toolsLoadedState[1];
|
|
1775
|
+
void toolsLoaded;
|
|
1776
|
+
|
|
1365
1777
|
useEffect(function () {
|
|
1366
1778
|
var forms;
|
|
1367
1779
|
try {
|
|
@@ -1663,9 +2075,203 @@ window.__ModuleLoader__.load({
|
|
|
1663
2075
|
),
|
|
1664
2076
|
) : null;
|
|
1665
2077
|
|
|
2078
|
+
/* ── terminal toolchain (v0.30.0) ────────────────────────────────
|
|
2079
|
+
Installs the fixed catalog from src/toolchain.js through winget.
|
|
2080
|
+
The card never invents a package id: it posts CATALOG ids to the
|
|
2081
|
+
host route, which maps them and pins `--exact --source winget`.
|
|
2082
|
+
Rows already present are shown but never re-installed — a toolchain
|
|
2083
|
+
provided by LLVM/WinLibs arrives as state 'external', which cannot
|
|
2084
|
+
even be ticked, so an upgrade can never touch it. */
|
|
2085
|
+
var toolRows = toolsData !== null && Array.isArray(toolsData.tools) ? toolsData.tools : [];
|
|
2086
|
+
var wingetOk = !!(toolsData !== null && toolsData.winget && toolsData.winget.ok);
|
|
2087
|
+
/* The job lives on the HOST and keeps running long after the POST has
|
|
2088
|
+
returned, so "busy" must be derived from the JOB, not from the request.
|
|
2089
|
+
Keying the buttons off the POST alone re-enabled them the instant the
|
|
2090
|
+
host answered 202 — which is precisely how a second click could land on
|
|
2091
|
+
an already-running batch. */
|
|
2092
|
+
var jobRunning = toolJob !== null && toolJob.finished !== true;
|
|
2093
|
+
var busyNow = toolBusy || jobRunning;
|
|
2094
|
+
var jobById = {};
|
|
2095
|
+
if (toolJob !== null && Array.isArray(toolJob.results)) {
|
|
2096
|
+
toolJob.results.forEach(function (entry) {
|
|
2097
|
+
if (entry !== null && typeof entry === "object" && typeof entry.id === "string") jobById[entry.id] = entry;
|
|
2098
|
+
});
|
|
2099
|
+
}
|
|
2100
|
+
var activeCmd = jobRunning && typeof toolJob.current === "string" ? toolJob.current : "";
|
|
2101
|
+
var jobPct = jobRunning && toolJob.total > 0 ? Math.round(toolJob.done / toolJob.total * 100) : 0;
|
|
2102
|
+
function toolSelectable(row) {
|
|
2103
|
+
return wingetOk && !busyNow && (row.state === "missing" || row.state === "managed");
|
|
2104
|
+
}
|
|
2105
|
+
var toolSelCount = toolRows.filter(function (row) { return toolSel[row.id] === true; }).length;
|
|
2106
|
+
|
|
2107
|
+
function loadTools() {
|
|
2108
|
+
setToolBusy(true);
|
|
2109
|
+
setToolErr("");
|
|
2110
|
+
return fetch(TOOLS_URL, { headers: { accept: "application/json" } })
|
|
2111
|
+
.then(function (res) {
|
|
2112
|
+
if (!res.ok) throw new Error("HTTP " + res.status);
|
|
2113
|
+
return res.json();
|
|
2114
|
+
})
|
|
2115
|
+
.then(function (data) {
|
|
2116
|
+
setToolsData(data);
|
|
2117
|
+
setToolsLoaded(true);
|
|
2118
|
+
setToolJob(data !== null && typeof data === "object" && data.job ? data.job : null);
|
|
2119
|
+
// Pre-tick only what is genuinely absent: anything already on the
|
|
2120
|
+
// machine is never re-installed by default.
|
|
2121
|
+
var next = {};
|
|
2122
|
+
var list = data !== null && typeof data === "object" && Array.isArray(data.tools) ? data.tools : [];
|
|
2123
|
+
list.forEach(function (row) { if (row.state === "missing") next[row.id] = true; });
|
|
2124
|
+
setToolSel(next);
|
|
2125
|
+
})
|
|
2126
|
+
.catch(function (err) {
|
|
2127
|
+
setToolsData(null);
|
|
2128
|
+
setToolErr(String((err && err.message) || err));
|
|
2129
|
+
})
|
|
2130
|
+
.then(function () { setToolBusy(false); });
|
|
2131
|
+
}
|
|
2132
|
+
|
|
2133
|
+
function toggleTool(id) {
|
|
2134
|
+
setToolSel(function (prev) {
|
|
2135
|
+
var next = {};
|
|
2136
|
+
for (var key in prev) if (Object.prototype.hasOwnProperty.call(prev, key)) next[key] = prev[key];
|
|
2137
|
+
if (next[id] === true) delete next[id]; else next[id] = true;
|
|
2138
|
+
return next;
|
|
2139
|
+
});
|
|
2140
|
+
}
|
|
2141
|
+
|
|
2142
|
+
function selectInstallable() {
|
|
2143
|
+
var next = {};
|
|
2144
|
+
toolRows.forEach(function (row) {
|
|
2145
|
+
if (wingetOk && (row.state === "missing" || row.state === "managed")) next[row.id] = true;
|
|
2146
|
+
});
|
|
2147
|
+
setToolSel(next);
|
|
2148
|
+
}
|
|
2149
|
+
|
|
2150
|
+
function runTools() {
|
|
2151
|
+
var ids = toolRows
|
|
2152
|
+
.filter(function (row) { return toolSel[row.id] === true && (row.state === "missing" || row.state === "managed"); })
|
|
2153
|
+
.map(function (row) { return row.id; });
|
|
2154
|
+
if (ids.length === 0 || !wingetOk) return;
|
|
2155
|
+
setToolBusy(true);
|
|
2156
|
+
setToolErr("");
|
|
2157
|
+
// action 'auto': the host upgrades what winget already owns and installs
|
|
2158
|
+
// the rest, so one button covers both halves of the request.
|
|
2159
|
+
fetch(TOOLS_URL + "?action=run", {
|
|
2160
|
+
method: "POST",
|
|
2161
|
+
headers: { "content-type": "application/json" },
|
|
2162
|
+
body: JSON.stringify({ action: "auto", ids: ids }),
|
|
2163
|
+
})
|
|
2164
|
+
.then(function (res) { return res.json(); })
|
|
2165
|
+
.then(function (data) { setToolJob(data !== null && typeof data === "object" && data.job ? data.job : null); })
|
|
2166
|
+
.catch(function (err) { setToolErr(String((err && err.message) || err)); })
|
|
2167
|
+
.then(function () { setToolBusy(false); });
|
|
2168
|
+
}
|
|
2169
|
+
|
|
2170
|
+
useEffect(function () {
|
|
2171
|
+
if (!open && !pageView) return undefined;
|
|
2172
|
+
if (toolsLoaded || toolBusy) return undefined;
|
|
2173
|
+
loadTools();
|
|
2174
|
+
return undefined;
|
|
2175
|
+
}, [open]);
|
|
2176
|
+
|
|
2177
|
+
/* Poll ONLY while a job is unfinished, and through the cheap ?job=1
|
|
2178
|
+
form: a full probe re-runs three winget commands per second. */
|
|
2179
|
+
useEffect(function () {
|
|
2180
|
+
if (toolJob === null || toolJob.finished) return undefined;
|
|
2181
|
+
var timer = setTimeout(function () {
|
|
2182
|
+
fetch(TOOLS_URL + "?job=1", { headers: { accept: "application/json" } })
|
|
2183
|
+
.then(function (res) { return res.json(); })
|
|
2184
|
+
.then(function (data) {
|
|
2185
|
+
var next = data !== null && typeof data === "object" && data.job ? data.job : null;
|
|
2186
|
+
setToolJob(next);
|
|
2187
|
+
if (next !== null && next.finished) loadTools();
|
|
2188
|
+
})
|
|
2189
|
+
.catch(function () { /* keep the last known progress */ });
|
|
2190
|
+
}, 1200);
|
|
2191
|
+
return function () { clearTimeout(timer); };
|
|
2192
|
+
}, [toolJob]);
|
|
2193
|
+
|
|
2194
|
+
var toolsSection = E("div", { className: "gb-section" },
|
|
2195
|
+
E("div", { className: "gb-sectionTitle" }, t("sec.tools")),
|
|
2196
|
+
E("div", { className: "gb-stack" },
|
|
2197
|
+
toolsData === null && toolErr === "" ? E("p", { className: "gb-hint" }, t("tools.loading")) : null,
|
|
2198
|
+
toolErr !== "" ? E("p", { className: "gb-error" }, toolErr) : null,
|
|
2199
|
+
toolsData !== null && !wingetOk ? E("p", { className: "gb-error" }, t("tools.nowinget")) : null,
|
|
2200
|
+
toolRows.length > 0 ? E("div", { className: "gb-tools" },
|
|
2201
|
+
/* ONE row per tool, and the row itself carries the progress: the
|
|
2202
|
+
tool being worked on shows a spinner, whether it is being
|
|
2203
|
+
installed or upgraded, and a sweeping bar; a finished tool keeps
|
|
2204
|
+
its verdict; a failure prints its reason directly underneath, so
|
|
2205
|
+
nothing has to be hunted for in a separate log area. */
|
|
2206
|
+
toolRows.reduce(function (acc, row) {
|
|
2207
|
+
var entry = jobById[row.id];
|
|
2208
|
+
var active = activeCmd !== "" && activeCmd === row.cmd;
|
|
2209
|
+
var isUpgrade = row.state === "managed";
|
|
2210
|
+
var badge;
|
|
2211
|
+
if (active) {
|
|
2212
|
+
badge = E("span", { className: "gb-toolState gb-st-running" },
|
|
2213
|
+
E("span", { className: "gb-spin" }),
|
|
2214
|
+
t(isUpgrade ? "tools.updating" : "tools.installing"));
|
|
2215
|
+
} else if (entry !== undefined) {
|
|
2216
|
+
badge = E("span", { className: "gb-toolState " + (entry.ok ? "gb-st-ok" : "gb-st-fail") },
|
|
2217
|
+
(entry.ok ? "✓ " : "✗ ") + t(entry.ok ? "tools.resultOk" : "tools.resultFail"));
|
|
2218
|
+
} else {
|
|
2219
|
+
badge = E("span", { className: "gb-toolState gb-st-" + row.state }, t("tools.state." + row.state));
|
|
2220
|
+
}
|
|
2221
|
+
acc.push(E("label", {
|
|
2222
|
+
key: row.id,
|
|
2223
|
+
className: "gb-toolRow" + (active ? " gb-rowActive" : ""),
|
|
2224
|
+
title: row.publisher + " · " + row.source,
|
|
2225
|
+
},
|
|
2226
|
+
E("input", {
|
|
2227
|
+
type: "checkbox",
|
|
2228
|
+
checked: toolSel[row.id] === true,
|
|
2229
|
+
disabled: !toolSelectable(row),
|
|
2230
|
+
onChange: function () { toggleTool(row.id); },
|
|
2231
|
+
}),
|
|
2232
|
+
E("span", { className: "gb-toolCmd" }, row.cmd),
|
|
2233
|
+
badge,
|
|
2234
|
+
active ? E("span", { className: "gb-toolBar" }, E("span", { className: "gb-toolBarFill" })) : null,
|
|
2235
|
+
E("span", { className: "gb-toolSrc" }, (row.version !== "" ? row.version + " · " : "") + (row.provider !== "" ? row.provider : row.source) + (row.admin ? " · " + t("tools.adminHint") : "")),
|
|
2236
|
+
));
|
|
2237
|
+
if (entry !== undefined && entry.ok !== true) {
|
|
2238
|
+
acc.push(E("p", { key: row.id + ":fail", className: "gb-toolFail" },
|
|
2239
|
+
t(entry.action === "upgrade" ? "tools.updating" : "tools.installing") + " — " + t("tools.resultFail") + ": " + (entry.detail || "")));
|
|
2240
|
+
}
|
|
2241
|
+
return acc;
|
|
2242
|
+
}, []),
|
|
2243
|
+
) : null,
|
|
2244
|
+
toolsData !== null && wingetOk ? E("div", { className: "gb-seg" },
|
|
2245
|
+
E("button", { type: "button", className: "gb-segBtn", disabled: busyNow, onClick: function () { loadTools(); } }, t("tools.refresh")),
|
|
2246
|
+
E("button", { type: "button", className: "gb-segBtn", disabled: busyNow, onClick: selectInstallable }, t("tools.selectMissing")),
|
|
2247
|
+
/* A running job DISABLES this button and says so — the host keeps
|
|
2248
|
+
working after the POST returns, so re-enabling on the response
|
|
2249
|
+
would invite a second click onto a batch already in flight. */
|
|
2250
|
+
E("button", {
|
|
2251
|
+
type: "button",
|
|
2252
|
+
className: "gb-segBtn" + (toolSelCount > 0 && !busyNow ? " gb-segActive" : ""),
|
|
2253
|
+
disabled: busyNow || toolSelCount === 0,
|
|
2254
|
+
onClick: runTools,
|
|
2255
|
+
}, busyNow ? t("tools.working") : t("tools.run")),
|
|
2256
|
+
) : null,
|
|
2257
|
+
jobRunning ? E("div", { className: "gb-stack" },
|
|
2258
|
+
E("div", { className: "gb-row" },
|
|
2259
|
+
E("span", { className: "gb-spin" }),
|
|
2260
|
+
E("span", { className: "gb-rowLabel" }, (activeCmd !== "" ? activeCmd + " · " : "") + t("tools.working") + ":"),
|
|
2261
|
+
E("span", { className: "gb-rowValue" }, toolJob.done + " / " + toolJob.total),
|
|
2262
|
+
),
|
|
2263
|
+
E("div", { className: "gb-jobBar" },
|
|
2264
|
+
E("div", { className: "gb-jobBarFill", style: { width: jobPct + "%" } }),
|
|
2265
|
+
),
|
|
2266
|
+
) : null,
|
|
2267
|
+
E("p", { className: "gb-hint" }, t("tools.hint")),
|
|
2268
|
+
),
|
|
2269
|
+
);
|
|
2270
|
+
|
|
1666
2271
|
var bodyContent = E("div", { className: "gb-body" },
|
|
1667
2272
|
dialectSection,
|
|
1668
2273
|
terminalSection,
|
|
2274
|
+
toolsSection,
|
|
1669
2275
|
dedupeSection,
|
|
1670
2276
|
pythonSection,
|
|
1671
2277
|
error ? E("p", { className: "gb-error" }, error) : null,
|