dsh-better-workspace 0.32.2 → 0.33.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/README.md CHANGED
@@ -55,7 +55,7 @@
55
55
  <table>
56
56
  <tr>
57
57
  <td align="center" width="58%"><img src="docs/screenshots/5-context-menu.png" alt="右键菜单"/></td>
58
- <td valign="top"><b>右键菜单</b><br/>操作都收进右键:工作区行——重命名 / 删除 / 分叉 / 归档 / 自定义外观 / <b>修改工作区默认预设</b>(v0.32.0 起,改写该工作区常驻新会话所用的 agent 预设,走官方同一通道;工作区暂无待命新会话时仅提示跟随全局默认,不替你建会话);工作区分组行——重命名分组(同步更新组内所有工作区名称)/ 自定义外观;会话与会话分组行——重命名 / 分叉 / 归档 / 自定义外观;会话行另有<b>复制 Session ID</b>(v0.30.0 起,对齐 dsh 0.2.1-alpha.5 官方会话菜单第五项——写剪贴板走宿主原语,复制成功与否均有提示)。</td>
58
+ <td valign="top"><b>右键菜单</b><br/>操作都收进右键:工作区行——重命名 / 删除 / 分叉 / 归档 / 自定义外观 / <b>修改工作区默认预设</b>(v0.32.0 起,改写该工作区常驻新会话所用的 agent 预设,走官方同一通道;内置预设显示官方本地化名——标准模式 / PTC 模式 / 极简模式 / 创造模式,v0.33.0 起;工作区暂无待命新会话时,确认后会预备一个带所选预设的新会话作为该工作区默认);工作区分组行——重命名分组(同步更新组内所有工作区名称)/ 自定义外观;会话与会话分组行——重命名 / 分叉 / 归档 / 自定义外观;会话行另有<b>复制 Session ID</b>(v0.30.0 起,对齐 dsh 0.2.1-alpha.5 官方会话菜单第五项——写剪贴板走宿主原语,复制成功与否均有提示)。</td>
59
59
  </tr>
60
60
  </table>
61
61
 
package/dsh.plugin.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "id": "dsh-external/dsh-better-workspace",
3
- "version": "0.32.2",
3
+ "version": "0.33.0",
4
4
  "main": "./src/index.js",
5
5
  "description": "侧边栏工作区树:按官方磁盘目录嵌套(官方 workspace-tree 语义),可选按名称中的 / 分组(默认关闭,设置里开启);新会话页的工作区选择器同树。Workspace tree for the DSH sidebar workspace list, nested by official disk folders with optional \"/\"-name grouping; the New Session workspace picker shows the same tree.",
6
6
  "engines": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-better-workspace",
3
- "version": "0.32.2",
3
+ "version": "0.33.0",
4
4
  "description": "侧边栏工作区树:按官方磁盘目录嵌套(官方 workspace-tree 语义),可选按名称中的 / 分组(默认关闭,设置里开启);新会话页的工作区选择器同树(同一份视图选项即时同步);添加工作区走官方目录流。Workspace tree for the DSH sidebar: disk-path nesting (official workspace-tree semantics), with optional \"/\"-name grouping (off by default), and the same tree in the New Session workspace picker; add-workspace rides the official directory flow.",
5
5
  "type": "module",
6
6
  "repository": {
package/src/client.js CHANGED
@@ -90,7 +90,11 @@ window.__ModuleLoader__.load({
90
90
  'wsPreset.title': '修改工作区默认预设',
91
91
  'wsPreset.current': '当前默认预设',
92
92
  'wsPreset.currentUnknown': '当前预设未知',
93
- 'wsPreset.noBlank': '该工作区暂无待命的新会话,当前跟随全局默认预设',
93
+ 'presetStandardName': '标准模式',
94
+ 'presetPtcName': 'PTC 模式',
95
+ 'presetMinimalName': '极简模式',
96
+ 'presetCordisName': '创造模式',
97
+ 'wsPreset.createHint': '该工作区暂无待命的新会话,确认后将预备一个使用所选预设的新会话作为工作区默认',
94
98
  'wsPreset.empty': '没有可用的预设',
95
99
  'wsPreset.loadFailed': '预设列表读取失败',
96
100
  'wsPreset.done': '已更新工作区默认预设',
@@ -257,7 +261,11 @@ window.__ModuleLoader__.load({
257
261
  'wsPreset.title': 'Change workspace default preset',
258
262
  'wsPreset.current': 'Current default preset',
259
263
  'wsPreset.currentUnknown': 'Current preset unknown',
260
- 'wsPreset.noBlank': 'No standing draft in this workspace; it follows the global default preset',
264
+ 'presetStandardName': 'Standard mode',
265
+ 'presetPtcName': 'PTC mode',
266
+ 'presetMinimalName': 'Minimal mode',
267
+ 'presetCordisName': 'Creator mode',
268
+ 'wsPreset.createHint': 'No standing draft in this workspace; confirming prepares a new draft with the picked preset as the workspace default',
261
269
  'wsPreset.empty': 'No presets available',
262
270
  'wsPreset.loadFailed': 'Failed to load the preset list',
263
271
  'wsPreset.done': 'Workspace default preset updated',
@@ -432,7 +440,11 @@ window.__ModuleLoader__.load({
432
440
  'wsPreset.title': 'تغيير الإعداد المسبق الافتراضي لمساحة العمل',
433
441
  'wsPreset.current': 'الإعداد المسبق الافتراضي الحالي',
434
442
  'wsPreset.currentUnknown': 'الإعداد المسبق الحالي غير معروف',
435
- 'wsPreset.noBlank': 'لا توجد جلسة جديدة بانتظار في مساحة العمل هذه؛ تتبع الإعداد الافتراضي العام',
443
+ 'presetStandardName': 'الوضع القياسي',
444
+ 'presetPtcName': 'وضع PTC',
445
+ 'presetMinimalName': 'الوضع البسيط',
446
+ 'presetCordisName': 'وضع المبدع',
447
+ 'wsPreset.createHint': 'لا توجد جلسة جديدة بانتظار في مساحة العمل هذه؛ عند التأكيد سيُجهَّز جلسة جديدة بالإعداد المسبق المختار كافتراضي لمساحة العمل',
436
448
  'wsPreset.empty': 'لا توجد إعدادات مسبقة متاحة',
437
449
  'wsPreset.loadFailed': 'فشل تحميل قائمة الإعدادات المسبقة',
438
450
  'wsPreset.done': 'تم تحديث الإعداد المسبق الافتراضي لمساحة العمل',
@@ -599,7 +611,11 @@ window.__ModuleLoader__.load({
599
611
  'wsPreset.title': 'Workspace-Standardpreset ändern',
600
612
  'wsPreset.current': 'Aktueller Standardpreset',
601
613
  'wsPreset.currentUnknown': 'Aktueller Preset unbekannt',
602
- 'wsPreset.noBlank': 'Kein wartender Sitzungsentwurf in diesem Workspace; es gilt der globale Standard',
614
+ 'presetStandardName': 'Standardmodus',
615
+ 'presetPtcName': 'PTC-Modus',
616
+ 'presetMinimalName': 'Minimalmodus',
617
+ 'presetCordisName': 'Kreativmodus',
618
+ 'wsPreset.createHint': 'Kein wartender Sitzungsentwurf in diesem Workspace; nach dem Bestätigen wird ein neuer Entwurf mit dem gewählten Preset als Workspace-Standard vorbereitet',
603
619
  'wsPreset.empty': 'Keine Presets verfügbar',
604
620
  'wsPreset.loadFailed': 'Preset-Liste konnte nicht geladen werden',
605
621
  'wsPreset.done': 'Workspace-Standardpreset aktualisiert',
@@ -766,7 +782,11 @@ window.__ModuleLoader__.load({
766
782
  'wsPreset.title': 'Modifier le préréglage par défaut du workspace',
767
783
  'wsPreset.current': 'Préréglage par défaut actuel',
768
784
  'wsPreset.currentUnknown': 'Préréglage actuel inconnu',
769
- 'wsPreset.noBlank': 'Aucune nouvelle session en attente : ce workspace suit le préréglage global par défaut',
785
+ 'presetStandardName': 'Mode standard',
786
+ 'presetPtcName': 'Mode PTC',
787
+ 'presetMinimalName': 'Mode minimal',
788
+ 'presetCordisName': 'Mode créateur',
789
+ 'wsPreset.createHint': 'Aucune nouvelle session en attente dans ce workspace ; la confirmation prépare une nouvelle session avec le préréglage choisi comme valeur par défaut',
770
790
  'wsPreset.empty': 'Aucun préréglage disponible',
771
791
  'wsPreset.loadFailed': 'Échec du chargement de la liste des préréglages',
772
792
  'wsPreset.done': 'Préréglage par défaut du workspace mis à jour',
@@ -933,7 +953,11 @@ window.__ModuleLoader__.load({
933
953
  'wsPreset.title': 'वर्कस्पेस डिफ़ॉल्ट प्रीसेट बदलें',
934
954
  'wsPreset.current': 'वर्तमान डिफ़ॉल्ट प्रीसेट',
935
955
  'wsPreset.currentUnknown': 'वर्तमान प्रीसेट अज्ञात',
936
- 'wsPreset.noBlank': 'इस वर्कस्पेस में कोई प्रतीक्षारत नया सेशन नहीं है; यह वैश्विक डिफ़ॉल्ट का पालन करता है',
956
+ 'presetStandardName': 'मानक मोड',
957
+ 'presetPtcName': 'PTC मोड',
958
+ 'presetMinimalName': 'मिनिमल मोड',
959
+ 'presetCordisName': 'क्रिएटर मोड',
960
+ 'wsPreset.createHint': 'इस वर्कस्पेस में कोई प्रतीक्षारत नया सेशन नहीं है; पुष्टि करने पर चयनित प्रीसेट के साथ एक नया सेशन वर्कस्पेस डिफ़ॉल्ट के रूप में तैयार किया जाएगा',
937
961
  'wsPreset.empty': 'कोई प्रीसेट उपलब्ध नहीं',
938
962
  'wsPreset.loadFailed': 'प्रीसेट सूची लोड करने में विफल',
939
963
  'wsPreset.done': 'वर्कस्पेस डिफ़ॉल्ट प्रीसेट अपडेट हुआ',
@@ -1100,7 +1124,11 @@ window.__ModuleLoader__.load({
1100
1124
  'wsPreset.title': 'Ubah preset bawaan ruang kerja',
1101
1125
  'wsPreset.current': 'Preset bawaan saat ini',
1102
1126
  'wsPreset.currentUnknown': 'Preset saat ini tidak diketahui',
1103
- 'wsPreset.noBlank': 'Tidak ada sesi baru yang menunggu di ruang kerja ini; mengikuti bawaan global',
1127
+ 'presetStandardName': 'Mode standar',
1128
+ 'presetPtcName': 'Mode PTC',
1129
+ 'presetMinimalName': 'Mode minimal',
1130
+ 'presetCordisName': 'Mode kreator',
1131
+ 'wsPreset.createHint': 'Tidak ada sesi baru yang menunggu di ruang kerja ini; setelah dikonfirmasi, sesi baru dengan prasetel pilihan akan disiapkan sebagai bawaan ruang kerja',
1104
1132
  'wsPreset.empty': 'Tidak ada preset yang tersedia',
1105
1133
  'wsPreset.loadFailed': 'Gagal memuat daftar preset',
1106
1134
  'wsPreset.done': 'Preset bawaan ruang kerja diperbarui',
@@ -1267,7 +1295,11 @@ window.__ModuleLoader__.load({
1267
1295
  'wsPreset.title': 'Modifica il preset predefinito dello workspace',
1268
1296
  'wsPreset.current': 'Preset predefinito attuale',
1269
1297
  'wsPreset.currentUnknown': 'Preset attuale sconosciuto',
1270
- 'wsPreset.noBlank': 'Nessuna nuova sessione in attesa in questo workspace; vale il predefinito globale',
1298
+ 'presetStandardName': 'Modalità standard',
1299
+ 'presetPtcName': 'Modalità PTC',
1300
+ 'presetMinimalName': 'Modalità minimale',
1301
+ 'presetCordisName': 'Modalità creatore',
1302
+ 'wsPreset.createHint': 'Nessuna nuova sessione in attesa in questo workspace; confermando verrà preparata una nuova sessione con il preset scelto come predefinito del workspace',
1271
1303
  'wsPreset.empty': 'Nessun preset disponibile',
1272
1304
  'wsPreset.loadFailed': 'Impossibile caricare la lista dei preset',
1273
1305
  'wsPreset.done': 'Preset predefinito dello workspace aggiornato',
@@ -1434,7 +1466,11 @@ window.__ModuleLoader__.load({
1434
1466
  'wsPreset.title': 'ワークスペース既定プリセットを変更',
1435
1467
  'wsPreset.current': '現在の既定プリセット',
1436
1468
  'wsPreset.currentUnknown': '現在のプリセットは不明',
1437
- 'wsPreset.noBlank': 'このワークスペースには待機中の新規セッションがなく、グローバル既定に従います',
1469
+ 'presetStandardName': '標準モード',
1470
+ 'presetPtcName': 'PTC モード',
1471
+ 'presetMinimalName': 'ミニマルモード',
1472
+ 'presetCordisName': 'クリエイターモード',
1473
+ 'wsPreset.createHint': 'このワークスペースには待機中の新規セッションがありません。確定すると、選択したプリセットで新しいセッションをワークスペースの既定として用意します',
1438
1474
  'wsPreset.empty': '利用可能なプリセットがありません',
1439
1475
  'wsPreset.loadFailed': 'プリセット一覧の読み込みに失敗しました',
1440
1476
  'wsPreset.done': 'ワークスペース既定プリセットを更新しました',
@@ -1601,7 +1637,11 @@ window.__ModuleLoader__.load({
1601
1637
  'wsPreset.title': '작업 공간 기본 프리셋 변경',
1602
1638
  'wsPreset.current': '현재 기본 프리셋',
1603
1639
  'wsPreset.currentUnknown': '현재 프리셋을 알 수 없음',
1604
- 'wsPreset.noBlank': '이 작업 공간에는 대기 중인 새 세션이 없으며 전역 기본값을 따릅니다',
1640
+ 'presetStandardName': '표준 모드',
1641
+ 'presetPtcName': 'PTC 모드',
1642
+ 'presetMinimalName': '미니멀 모드',
1643
+ 'presetCordisName': '크리에이터 모드',
1644
+ 'wsPreset.createHint': '이 작업 공간에는 대기 중인 새 세션이 없습니다. 확인하면 선택한 프리셋으로 새 세션을 준비해 작업 공간 기본값으로 사용합니다',
1605
1645
  'wsPreset.empty': '사용 가능한 프리셋이 없습니다',
1606
1646
  'wsPreset.loadFailed': '프리셋 목록을 불러오지 못했습니다',
1607
1647
  'wsPreset.done': '작업 공간 기본 프리셋이 업데이트되었습니다',
@@ -1768,7 +1808,11 @@ window.__ModuleLoader__.load({
1768
1808
  'wsPreset.title': 'Standaardpreset van workspace wijzigen',
1769
1809
  'wsPreset.current': 'Huidige standaardpreset',
1770
1810
  'wsPreset.currentUnknown': 'Huidige preset onbekend',
1771
- 'wsPreset.noBlank': 'Geen wachtende nieuwe sessie in deze workspace; de globale standaard geldt',
1811
+ 'presetStandardName': 'Standaardmodus',
1812
+ 'presetPtcName': 'PTC-modus',
1813
+ 'presetMinimalName': 'Minimale modus',
1814
+ 'presetCordisName': 'Creatormodus',
1815
+ 'wsPreset.createHint': 'Geen wachtende nieuwe sessie in deze workspace; bij bevestigen wordt een nieuwe sessie met de gekozen preset als workspace-standaard voorbereid',
1772
1816
  'wsPreset.empty': 'Geen presets beschikbaar',
1773
1817
  'wsPreset.loadFailed': 'Laden van de presetlijst is mislukt',
1774
1818
  'wsPreset.done': 'Standaardpreset van workspace bijgewerkt',
@@ -1935,7 +1979,11 @@ window.__ModuleLoader__.load({
1935
1979
  'wsPreset.title': 'Zmień domyślny preset obszaru roboczego',
1936
1980
  'wsPreset.current': 'Aktualny domyślny preset',
1937
1981
  'wsPreset.currentUnknown': 'Aktualny preset nieznany',
1938
- 'wsPreset.noBlank': 'Brak oczekującej nowej sesji w tym obszarze; obowiązuje globalne ustawienie domyślne',
1982
+ 'presetStandardName': 'Tryb standardowy',
1983
+ 'presetPtcName': 'Tryb PTC',
1984
+ 'presetMinimalName': 'Tryb minimalny',
1985
+ 'presetCordisName': 'Tryb twórcy',
1986
+ 'wsPreset.createHint': 'Brak oczekującej nowej sesji w tym obszarze roboczym; po potwierdzeniu zostanie przygotowana nowa sesja z wybranym ustawieniem jako domyślnym obszaru roboczego',
1939
1987
  'wsPreset.empty': 'Brak dostępnych presetów',
1940
1988
  'wsPreset.loadFailed': 'Nie udało się wczytać listy presetów',
1941
1989
  'wsPreset.done': 'Zaktualizowano domyślny preset obszaru roboczego',
@@ -2102,7 +2150,11 @@ window.__ModuleLoader__.load({
2102
2150
  'wsPreset.title': 'Alterar o preset padrão do workspace',
2103
2151
  'wsPreset.current': 'Preset padrão atual',
2104
2152
  'wsPreset.currentUnknown': 'Preset atual desconhecido',
2105
- 'wsPreset.noBlank': 'Nenhuma nova sessão em espera neste workspace; vale o padrão global',
2153
+ 'presetStandardName': 'Modo padrão',
2154
+ 'presetPtcName': 'Modo PTC',
2155
+ 'presetMinimalName': 'Modo mínimo',
2156
+ 'presetCordisName': 'Modo criador',
2157
+ 'wsPreset.createHint': 'Nenhuma nova sessão em espera neste workspace; ao confirmar, uma nova sessão com o predefinido escolhido será preparada como padrão do workspace',
2106
2158
  'wsPreset.empty': 'Nenhum preset disponível',
2107
2159
  'wsPreset.loadFailed': 'Falha ao carregar a lista de presets',
2108
2160
  'wsPreset.done': 'Preset padrão do workspace atualizado',
@@ -2269,7 +2321,11 @@ window.__ModuleLoader__.load({
2269
2321
  'wsPreset.title': 'Изменить пресет воркспейса по умолчанию',
2270
2322
  'wsPreset.current': 'Текущий пресет по умолчанию',
2271
2323
  'wsPreset.currentUnknown': 'Текущий пресет неизвестен',
2272
- 'wsPreset.noBlank': 'В этом воркспейсе нет ожидающей новой сессии; действует глобальный пресет по умолчанию',
2324
+ 'presetStandardName': 'Стандартный режим',
2325
+ 'presetPtcName': 'Режим PTC',
2326
+ 'presetMinimalName': 'Минимальный режим',
2327
+ 'presetCordisName': 'Режим создателя',
2328
+ 'wsPreset.createHint': 'В этом воркспейсе нет ожидающей новой сессии; после подтверждения будет подготовлена новая сессия с выбранным пресетом в качестве дефолта воркспейса',
2273
2329
  'wsPreset.empty': 'Нет доступных пресетов',
2274
2330
  'wsPreset.loadFailed': 'Не удалось загрузить список пресетов',
2275
2331
  'wsPreset.done': 'Пресет воркспейса по умолчанию обновлён',
@@ -2436,7 +2492,11 @@ window.__ModuleLoader__.load({
2436
2492
  'wsPreset.title': 'Ändra standardförinställning för arbetsyta',
2437
2493
  'wsPreset.current': 'Aktuell standardförinställning',
2438
2494
  'wsPreset.currentUnknown': 'Aktuell förinställning okänd',
2439
- 'wsPreset.noBlank': 'Ingen väntande ny session i denna arbetsyta; den globala standarden gäller',
2495
+ 'presetStandardName': 'Standardläge',
2496
+ 'presetPtcName': 'PTC-läge',
2497
+ 'presetMinimalName': 'Minimalt läge',
2498
+ 'presetCordisName': 'Skaparläge',
2499
+ 'wsPreset.createHint': 'Ingen väntande ny session i denna arbetsyta; vid bekräftelse förbereds en ny session med den valda förinställningen som arbetsytans standard',
2440
2500
  'wsPreset.empty': 'Inga förinställningar tillgängliga',
2441
2501
  'wsPreset.loadFailed': 'Kunde inte läsa in förinställningslistan',
2442
2502
  'wsPreset.done': 'Standardförinställning för arbetsyta uppdaterad',
@@ -2603,7 +2663,11 @@ window.__ModuleLoader__.load({
2603
2663
  'wsPreset.title': 'เปลี่ยนพรีเซ็ตเริ่มต้นของพื้นที่ทำงาน',
2604
2664
  'wsPreset.current': 'พรีเซ็ตเริ่มต้นปัจจุบัน',
2605
2665
  'wsPreset.currentUnknown': 'ไม่ทราบพรีเซ็ตปัจจุบัน',
2606
- 'wsPreset.noBlank': 'ไม่มีเซสชันใหม่ที่รออยู่ในพื้นที่ทำงานนี้; ใช้ค่าเริ่มต้นส่วนกลาง',
2666
+ 'presetStandardName': 'โหมดมาตรฐาน',
2667
+ 'presetPtcName': 'โหมด PTC',
2668
+ 'presetMinimalName': 'โหมดมินิมอล',
2669
+ 'presetCordisName': 'โหมดครีเอเตอร์',
2670
+ 'wsPreset.createHint': 'ยังไม่มีเซสชันใหม่ที่รออยู่ในพื้นที่ทำงานนี้; เมื่อยืนยันจะเตรียมเซสชันใหม่ที่ใช้พรีเซ็ตที่เลือกเป็นค่าเริ่มต้นของพื้นที่ทำงาน',
2607
2671
  'wsPreset.empty': 'ไม่มีพรีเซ็ตที่ใช้ได้',
2608
2672
  'wsPreset.loadFailed': 'โหลดรายการพรีเซ็ตไม่สำเร็จ',
2609
2673
  'wsPreset.done': 'อัปเดตพรีเซ็ตเริ่มต้นของพื้นที่ทำงานแล้ว',
@@ -2770,7 +2834,11 @@ window.__ModuleLoader__.load({
2770
2834
  'wsPreset.title': 'Çalışma alanı varsayılan ön ayarını değiştir',
2771
2835
  'wsPreset.current': 'Geçerli varsayılan ön ayar',
2772
2836
  'wsPreset.currentUnknown': 'Geçerli ön ayar bilinmiyor',
2773
- 'wsPreset.noBlank': 'Bu çalışma alanında bekleyen yeni oturum yok; genel varsayılan izlenir',
2837
+ 'presetStandardName': 'Standart mod',
2838
+ 'presetPtcName': 'PTC modu',
2839
+ 'presetMinimalName': 'Minimal mod',
2840
+ 'presetCordisName': 'Oluşturucu modu',
2841
+ 'wsPreset.createHint': 'Bu çalışma alanında bekleyen yeni oturum yok; onaylayınca seçilen ön ayarla yeni bir oturum çalışma alanı varsayılanı olarak hazırlanır',
2774
2842
  'wsPreset.empty': 'Kullanılabilir ön ayar yok',
2775
2843
  'wsPreset.loadFailed': 'Ön ayar listesi yüklenemedi',
2776
2844
  'wsPreset.done': 'Çalışma alanı varsayılan ön ayarı güncellendi',
@@ -2937,7 +3005,11 @@ window.__ModuleLoader__.load({
2937
3005
  'wsPreset.title': 'Thay đổi preset mặc định của không gian làm việc',
2938
3006
  'wsPreset.current': 'Preset mặc định hiện tại',
2939
3007
  'wsPreset.currentUnknown': 'Không rõ preset hiện tại',
2940
- 'wsPreset.noBlank': 'Không gian làm việc này chưa có phiên mới đang chờ; đang theo mặc định toàn cục',
3008
+ 'presetStandardName': 'Chế độ chuẩn',
3009
+ 'presetPtcName': 'Chế độ PTC',
3010
+ 'presetMinimalName': 'Chế độ tối giản',
3011
+ 'presetCordisName': 'Chế độ người sáng tạo',
3012
+ 'wsPreset.createHint': 'Không gian làm việc này chưa có phiên mới đang chờ; xác nhận sẽ chuẩn bị một phiên mới dùng cấu hình đã chọn làm mặc định của không gian làm việc',
2941
3013
  'wsPreset.empty': 'Không có preset khả dụng',
2942
3014
  'wsPreset.loadFailed': 'Không tải được danh sách preset',
2943
3015
  'wsPreset.done': 'Đã cập nhật preset mặc định của không gian làm việc',
@@ -3104,7 +3176,11 @@ window.__ModuleLoader__.load({
3104
3176
  'wsPreset.title': '修改工作區預設',
3105
3177
  'wsPreset.current': '目前預設',
3106
3178
  'wsPreset.currentUnknown': '目前預設未知',
3107
- 'wsPreset.noBlank': '此工作區暫無待命的新會話,目前跟隨全域預設',
3179
+ 'presetStandardName': '標準模式',
3180
+ 'presetPtcName': 'PTC 模式',
3181
+ 'presetMinimalName': '極簡模式',
3182
+ 'presetCordisName': '創造模式',
3183
+ 'wsPreset.createHint': '該工作區暫無待命的新對話,確認後將預備一個使用所選預設的新對話作為工作區預設',
3108
3184
  'wsPreset.empty': '沒有可用的預設',
3109
3185
  'wsPreset.loadFailed': '預設清單讀取失敗',
3110
3186
  'wsPreset.done': '已更新工作區預設',
@@ -3271,7 +3347,11 @@ window.__ModuleLoader__.load({
3271
3347
  'wsPreset.title': '修改工作區預設',
3272
3348
  'wsPreset.current': '目前預設',
3273
3349
  'wsPreset.currentUnknown': '目前預設未知',
3274
- 'wsPreset.noBlank': '此工作區暫無待命的新會話,目前跟隨全域預設',
3350
+ 'presetStandardName': '標準模式',
3351
+ 'presetPtcName': 'PTC 模式',
3352
+ 'presetMinimalName': '極簡模式',
3353
+ 'presetCordisName': '創造模式',
3354
+ 'wsPreset.createHint': '該工作區暫無待命的新對話,確認後將預備一個使用所選預設的新對話作為工作區預設',
3275
3355
  'wsPreset.empty': '沒有可用的預設',
3276
3356
  'wsPreset.loadFailed': '預設清單讀取失敗',
3277
3357
  'wsPreset.done': '已更新工作區預設',
@@ -3438,7 +3518,11 @@ window.__ModuleLoader__.load({
3438
3518
  'wsPreset.title': '修改工作區預設',
3439
3519
  'wsPreset.current': '目前預設',
3440
3520
  'wsPreset.currentUnknown': '目前預設未知',
3441
- 'wsPreset.noBlank': '此工作區暫無待命的新會話,目前跟隨全域預設',
3521
+ 'presetStandardName': '標準模式',
3522
+ 'presetPtcName': 'PTC 模式',
3523
+ 'presetMinimalName': '極簡模式',
3524
+ 'presetCordisName': '創造模式',
3525
+ 'wsPreset.createHint': '此工作區暫無待命的新工作階段,確認後將準備一個使用所選預設的新工作階段作為工作區預設',
3442
3526
  'wsPreset.empty': '沒有可用的預設',
3443
3527
  'wsPreset.loadFailed': '預設清單讀取失敗',
3444
3528
  'wsPreset.done': '已更新工作區預設',
@@ -5250,8 +5334,25 @@ window.__ModuleLoader__.load({
5250
5334
  * applyPreset is null exactly when no blank exists (or the face is
5251
5335
  * absent); the roster is a feature-probed plugin-side read.
5252
5336
  */
5253
- function WorkspacePresetDialog({ applyPreset, loadRoster, current, onApplied, onClose, t }) {
5254
- const hasBlank = typeof applyPreset === 'function'
5337
+ /* BUILT-IN preset id → this plugin's dictionary key. Mirrors the official
5338
+ * display fold (agent-preset-registry display.ts isBuiltInPreset: built-ins
5339
+ * publish NO name) because that registry package is not on the client boot
5340
+ * graph and cannot be required here. Custom presets keep their authored
5341
+ * name; the id itself is the last-resort fallback. Host-follow: delete this
5342
+ * fold and require the official one once it ships on the boot graph. */
5343
+ const BUILT_IN_PRESET_LABEL_KEYS = {
5344
+ standard: 'presetStandardName',
5345
+ ptc: 'presetPtcName',
5346
+ minimal: 'presetMinimalName',
5347
+ cordis: 'presetCordisName',
5348
+ }
5349
+ const presetDisplayLabel = (row, t) => {
5350
+ if (row && row.name === undefined && BUILT_IN_PRESET_LABEL_KEYS[row.id] !== undefined) return t(BUILT_IN_PRESET_LABEL_KEYS[row.id])
5351
+ return (row && row.name) || (row && row.id) || ''
5352
+ }
5353
+
5354
+ function WorkspacePresetDialog({ applyPreset, hasBlank, loadRoster, current, onApplied, onClose, t }) {
5355
+ const editable = typeof applyPreset === 'function' && hasBlank !== false
5255
5356
  const menuReady = typeof ui.Menu === 'function'
5256
5357
  const [status, setStatus] = React.useState('loading') // loading | ready | error
5257
5358
  const [rows, setRows] = React.useState([])
@@ -5285,12 +5386,12 @@ window.__ModuleLoader__.load({
5285
5386
  return () => { alive = false }
5286
5387
  }, [])
5287
5388
  const nameOf = (id) => {
5288
- for (const row of rows) { if (row.id === id) return row.name || row.id }
5389
+ for (const row of rows) { if (row.id === id) return presetDisplayLabel(row, t) }
5289
5390
  return id
5290
5391
  }
5291
5392
  const options = rows.map((row) => ({
5292
5393
  value: row.id,
5293
- label: (row.name || row.id) + (row.isDefault ? ' (' + t('wsPreset.globalDefault') + ')' : ''),
5394
+ label: presetDisplayLabel(row, t) + (row.isDefault ? ' (' + t('wsPreset.globalDefault') + ')' : ''),
5294
5395
  }))
5295
5396
  const commit = () => {
5296
5397
  if (busy || !picked) { onClose(); return }
@@ -5307,7 +5408,9 @@ window.__ModuleLoader__.load({
5307
5408
  setErrorText(reason instanceof Error ? reason.message : String(reason || t('wsPreset.loadFailed')))
5308
5409
  })
5309
5410
  }
5310
- const currentLine = !hasBlank ? t('wsPreset.noBlank')
5411
+ // No standing draft → the confirm PREPARES one with the picked preset
5412
+ // (see the ws-preset menu branch); the hint line spells that out.
5413
+ const currentLine = !editable ? t('wsPreset.createHint')
5311
5414
  : current ? t('wsPreset.current') + ': ' + nameOf(current)
5312
5415
  : t('wsPreset.currentUnknown')
5313
5416
  return E(ui.Modal, {
@@ -5316,15 +5419,13 @@ window.__ModuleLoader__.load({
5316
5419
  closeLabel: t('close'),
5317
5420
  title: t('wsPreset.title'),
5318
5421
  footer: E('div', { className: 'bw-modal-actions' },
5319
- hasBlank ? E(BTN, { variant: 'outline', onClick: onClose, disabled: busy }, t('cancel')) : null,
5320
- hasBlank
5321
- ? E(BTN, { variant: 'primary', onClick: commit, disabled: busy || !picked || picked === current }, t('confirm'))
5322
- : E(BTN, { variant: 'primary', onClick: onClose }, t('close')),
5422
+ E(BTN, { variant: 'outline', onClick: onClose, disabled: busy }, t('cancel')),
5423
+ E(BTN, { variant: 'primary', onClick: commit, disabled: busy || !picked || picked === current }, t('confirm')),
5323
5424
  ),
5324
5425
  },
5325
5426
  E('div', { className: 'bw-modal-body' },
5326
5427
  status === 'error' ? E('div', { className: 'bw-error-text', role: 'alert' }, errorText) : null,
5327
- status === 'ready' && hasBlank ? (
5428
+ status === 'ready' ? (
5328
5429
  rows.length === 0
5329
5430
  ? E('div', { className: 'bw-hint' }, t('wsPreset.empty'))
5330
5431
  : E('div', { className: 'bw-field' },
@@ -5341,7 +5442,7 @@ window.__ModuleLoader__.load({
5341
5442
  )
5342
5443
  ) : null,
5343
5444
  E('div', { className: 'bw-hint' }, currentLine),
5344
- status === 'ready' && hasBlank && errorText !== ''
5445
+ status === 'ready' && errorText !== ''
5345
5446
  ? E('div', { className: 'bw-error-text', role: 'alert' }, errorText)
5346
5447
  : null,
5347
5448
  ),
@@ -8818,9 +8919,13 @@ window.__ModuleLoader__.load({
8818
8919
  // Freeze the target NOW (the dialog outlives the menu ctx): the
8819
8920
  // blank lookup mirrors the official createInWorkspace rule — a
8820
8921
  // standing blank IS the workspace default (its preset projection
8821
- // is what the hero chip shows); none → the workspace follows the
8822
- // GLOBAL default and the dialog says so instead of promising an
8823
- // edit. No session is ever created for the edit.
8922
+ // is what the hero chip shows). With NO standing blank the edit
8923
+ // still applies: ClientSessions.create prepares one WITH the
8924
+ // picked preset (the same channel as the official new-session
8925
+ // button), which makes it the workspace default. Creating a
8926
+ // session here is deliberate, not a side effect — the host has
8927
+ // no other per-workspace default store (agent-preset-registry
8928
+ // selectedDefault is GLOBAL; the standing blank IS the carrier).
8824
8929
  const raw = (storedItems || []).find((item) => item.workspaceId === payload.workspaceId)
8825
8930
  const blankIds = raw && Array.isArray(raw.sessionIds) ? raw.sessionIds : []
8826
8931
  const blankId = raw && raw.path
@@ -8834,7 +8939,15 @@ window.__ModuleLoader__.load({
8834
8939
  const projection = blankSummary ? blankSummary.projectionValues : undefined
8835
8940
  setDialog({
8836
8941
  kind: 'ws-preset',
8837
- applyPreset: blankId !== undefined ? (presetId) => presetFace.select(blankId, presetId) : null,
8942
+ hasBlank: blankId !== undefined,
8943
+ applyPreset: blankId !== undefined
8944
+ ? (presetId) => presetFace.select(blankId, presetId)
8945
+ // Reuse declined / no draft to reuse: create WITH the preset.
8946
+ // Shape matches select's { ok } contract; a SessionCreateError
8947
+ // lands in the dialog as an inline refusal line.
8948
+ : (presetId) => Promise.resolve()
8949
+ .then(() => sessions.create({ cwd: raw.path, agentPreset: presetId }))
8950
+ .then(() => ({ ok: true }), (reason) => ({ ok: false, refusal: reason instanceof Error ? reason.message : String(reason || 'session create failed') })),
8838
8951
  current: projection && typeof projection.agentPreset === 'string' ? projection.agentPreset : undefined,
8839
8952
  })
8840
8953
  }