dsh-better-workspace 0.25.0 → 0.27.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/dsh.plugin.json +2 -2
- package/package.json +3 -3
- package/src/client.js +102 -50
- package/src/index.js +8 -15
package/dsh.plugin.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "dsh-external/dsh-better-workspace",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.27.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": {
|
|
7
|
-
"dsh": ">=0.
|
|
7
|
+
"dsh": ">=0.1.6-alpha.2"
|
|
8
8
|
},
|
|
9
9
|
"contributes": {
|
|
10
10
|
"tools": [],
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-better-workspace",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.27.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": {
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
},
|
|
20
20
|
"engines": {
|
|
21
21
|
"node": ">=18",
|
|
22
|
-
"dsh": ">=0.1.
|
|
22
|
+
"dsh": ">=0.1.6-alpha.2"
|
|
23
23
|
},
|
|
24
24
|
"dsh": {
|
|
25
25
|
"bundle": {
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
"license": "MIT",
|
|
63
63
|
"peerDependencies": {
|
|
64
64
|
"@deepseek-ai/cordis": "^4.0.1",
|
|
65
|
-
"@deepseek-ai/dsh": ">=0.1.
|
|
65
|
+
"@deepseek-ai/dsh": ">=0.1.6-alpha.2",
|
|
66
66
|
"@deepseek-ai/dsh-settings": ">=0.1.0-rc.7",
|
|
67
67
|
"@deepseek-ai/schemastery": "^3.18.1"
|
|
68
68
|
},
|
package/src/client.js
CHANGED
|
@@ -10,10 +10,9 @@
|
|
|
10
10
|
* declares the sidebar.workspaces.directoryFlow child hole without
|
|
11
11
|
* occupying it, so the official composed picker (OS chooser or in-app
|
|
12
12
|
* browser, whichever the Host serves) drives the add-workspace flow.
|
|
13
|
-
* 2.
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* per host era — a seat whose slot is never declared never registers.
|
|
13
|
+
* 2. plugins.bundle.config (the Plugins panel's bundle page, dsh
|
|
14
|
+
* 0.1.6-alpha.2+; keyed by package name): the settings card — the single
|
|
15
|
+
* settings seat since the host floor was raised past the old list seat.
|
|
17
16
|
*
|
|
18
17
|
* Every require below is a dsh client baseline module (see
|
|
19
18
|
* @deepseek-ai/dsh-client-web seed.ts): react, @deepseek-ai/dsh-client-store,
|
|
@@ -86,6 +85,9 @@ window.__ModuleLoader__.load({
|
|
|
86
85
|
'settings.desc': '工作区树的外观与折叠偏好',
|
|
87
86
|
'settings.expand': '展开',
|
|
88
87
|
'settings.collapse': '收起',
|
|
88
|
+
'settings.group.tree': '树与列表',
|
|
89
|
+
'settings.group.interaction': '会话交互',
|
|
90
|
+
'settings.group.appearance': '外观',
|
|
89
91
|
'settings.compactChains': '单链分组折叠显示',
|
|
90
92
|
'settings.compactChains.hint': '单层链合并为一行,出现多个子级时自动展开为树状;拖拽工作区期间单链临时展开回文件夹树,可放入任意一级;展开状态与自定义外观保存在当前浏览器。',
|
|
91
93
|
'settings.statusPulse': '状态呼吸灯',
|
|
@@ -236,6 +238,9 @@ window.__ModuleLoader__.load({
|
|
|
236
238
|
'settings.desc': 'Workspace tree appearance and folding preferences',
|
|
237
239
|
'settings.expand': 'Expand',
|
|
238
240
|
'settings.collapse': 'Collapse',
|
|
241
|
+
'settings.group.tree': 'Tree & list',
|
|
242
|
+
'settings.group.interaction': 'Session interaction',
|
|
243
|
+
'settings.group.appearance': 'Appearance',
|
|
239
244
|
'settings.compactChains': 'Merge single-child chains',
|
|
240
245
|
'settings.compactChains.hint': 'Single-child chains merge into one row; levels with multiple children expand as a tree. Chains re-expand into folder rows while you drag a workspace, so it can drop into any level. State and custom styling persist in this browser.',
|
|
241
246
|
'settings.statusPulse': 'Status breathing light',
|
|
@@ -394,6 +399,9 @@ window.__ModuleLoader__.load({
|
|
|
394
399
|
'settings.desc': 'مظهر شجرة مساحات العمل وتفضيلات الطيّ',
|
|
395
400
|
'settings.expand': 'توسيع',
|
|
396
401
|
'settings.collapse': 'طيّ',
|
|
402
|
+
'settings.group.tree': 'الشجرة والقائمة',
|
|
403
|
+
'settings.group.interaction': 'تفاعل الجلسات',
|
|
404
|
+
'settings.group.appearance': 'المظهر',
|
|
397
405
|
'settings.compactChains': 'دمج السلاسل ذات الفرع الواحد',
|
|
398
406
|
'settings.compactChains.hint': 'تُدمج المستويات ذات الفرع الواحد في سطر واحد، وتتوسع الشجرة تلقائياً عند وجود أكثر من فرع؛ أثناء سحب مساحة عمل تُفكّ السلاسل مؤقتاً إلى مجلدات ليصبح الإفلات ممكناً في أي مستوى؛ تُحفظ حالة التوسيع والمظهر المخصص في هذا المتصفح.',
|
|
399
407
|
'settings.statusPulse': 'مؤشر حالة نابض',
|
|
@@ -544,6 +552,9 @@ window.__ModuleLoader__.load({
|
|
|
544
552
|
'settings.desc': 'Aussehen und Einklappverhalten des Arbeitsbereich-Baums',
|
|
545
553
|
'settings.expand': 'Ausklappen',
|
|
546
554
|
'settings.collapse': 'Einklappen',
|
|
555
|
+
'settings.group.tree': 'Baum & Liste',
|
|
556
|
+
'settings.group.interaction': 'Sitzungsinteraktion',
|
|
557
|
+
'settings.group.appearance': 'Aussehen',
|
|
547
558
|
'settings.compactChains': 'Einzelketten zusammenfassen',
|
|
548
559
|
'settings.compactChains.hint': 'Ebenen mit genau einem Kind werden zu einer Zeile zusammengefasst; bei mehreren Kindern klappt der Baum auf; beim Ziehen eines Arbeitsbereichs klappen die Ketten vorübergehend zum Ordnerbaum auf, sodass jede Ebene als Ziel dient; Klappzustand und eigenes Aussehen bleiben in diesem Browser gespeichert.',
|
|
549
560
|
'settings.statusPulse': 'Status-Pulslicht',
|
|
@@ -694,6 +705,9 @@ window.__ModuleLoader__.load({
|
|
|
694
705
|
'settings.desc': 'Apparence et repli de l\'arborescence des espaces de travail',
|
|
695
706
|
'settings.expand': 'Développer',
|
|
696
707
|
'settings.collapse': 'Réduire',
|
|
708
|
+
'settings.group.tree': 'Arborescence et liste',
|
|
709
|
+
'settings.group.interaction': 'Interactions de session',
|
|
710
|
+
'settings.group.appearance': 'Apparence',
|
|
697
711
|
'settings.compactChains': 'Fusionner les chaînes à un seul enfant',
|
|
698
712
|
'settings.compactChains.hint': 'Les niveaux à un seul enfant se fusionnent en une ligne; dès qu\'il y a plusieurs enfants, l\'arborescence se déploie; pendant le glisser-déposer d\'un espace de travail, les chaînes se déploient temporairement en dossiers pour permettre le dépôt à n\'importe quel niveau; l\'état déplié et l\'apparence personnalisée sont conservés dans ce navigateur.',
|
|
699
713
|
'settings.statusPulse': 'Voyant d\'état pulsant',
|
|
@@ -844,6 +858,9 @@ window.__ModuleLoader__.load({
|
|
|
844
858
|
'settings.desc': 'कार्यस्थान वृक्ष का रूप और समेटने की प्राथमिकताएँ',
|
|
845
859
|
'settings.expand': 'फैलाएँ',
|
|
846
860
|
'settings.collapse': 'समेटें',
|
|
861
|
+
'settings.group.tree': 'ट्री और सूची',
|
|
862
|
+
'settings.group.interaction': 'सेशन इंटरैक्शन',
|
|
863
|
+
'settings.group.appearance': 'उपस्थिति',
|
|
847
864
|
'settings.compactChains': 'एकल-संतान श्रृंखलाएँ मिलाएँ',
|
|
848
865
|
'settings.compactChains.hint': 'जिन स्तरों पर केवल एक संतान होती है वे एक पंक्ति में मिल जाते हैं; कई संतानें होने पर वृक्ष खुल जाता है; कार्यस्थान खींचते समय श्रृंखलाएँ अस्थायी रूप से फ़ोल्डरों में खुल जाती हैं ताकि किसी भी स्तर पर छोड़ा जा सके; खुलने की स्थिति और अनुकूलित रूप इसी ब्राउज़र में सहेजे जाते हैं।',
|
|
849
866
|
'settings.statusPulse': 'स्थिति की साँस लेती बत्ती',
|
|
@@ -994,6 +1011,9 @@ window.__ModuleLoader__.load({
|
|
|
994
1011
|
'settings.desc': 'Tampilan dan pelipatan pohon ruang kerja',
|
|
995
1012
|
'settings.expand': 'Bentangkan',
|
|
996
1013
|
'settings.collapse': 'Ciutkan',
|
|
1014
|
+
'settings.group.tree': 'Pohon & daftar',
|
|
1015
|
+
'settings.group.interaction': 'Interaksi sesi',
|
|
1016
|
+
'settings.group.appearance': 'Tampilan',
|
|
997
1017
|
'settings.compactChains': 'Gabungkan rantai beranak tunggal',
|
|
998
1018
|
'settings.compactChains.hint': 'Tingkat yang hanya punya satu anak digabung jadi satu baris; bila anaknya banyak, pohon terbentang; saat menyeret ruang kerja, rantai sementara terbentang kembali jadi folder sehingga bisa dijatuhkan di tingkat mana pun; status terbentang dan tampilan khusus disimpan di browser ini.',
|
|
999
1019
|
'settings.statusPulse': 'Lampu status bernapas',
|
|
@@ -1144,6 +1164,9 @@ window.__ModuleLoader__.load({
|
|
|
1144
1164
|
'settings.desc': 'Aspetto e compressione dell\'albero delle aree di lavoro',
|
|
1145
1165
|
'settings.expand': 'Espandi',
|
|
1146
1166
|
'settings.collapse': 'Comprimi',
|
|
1167
|
+
'settings.group.tree': 'Albero ed elenco',
|
|
1168
|
+
'settings.group.interaction': 'Interazione sessioni',
|
|
1169
|
+
'settings.group.appearance': 'Aspetto',
|
|
1147
1170
|
'settings.compactChains': 'Unisci le catene a figlio unico',
|
|
1148
1171
|
'settings.compactChains.hint': 'I livelli con un solo figlio si fondono in una riga; con più figli l\'albero si espande; durante il trascinamento di un\'area di lavoro le catene si riespandono temporaneamente in cartelle, così puoi rilasciare su qualsiasi livello; stato di espansione e aspetto personalizzato restano in questo browser.',
|
|
1149
1172
|
'settings.statusPulse': 'Spia di stato pulsante',
|
|
@@ -1294,6 +1317,9 @@ window.__ModuleLoader__.load({
|
|
|
1294
1317
|
'settings.desc': 'ワークスペースツリーの外観と折りたたみ設定',
|
|
1295
1318
|
'settings.expand': '展開',
|
|
1296
1319
|
'settings.collapse': '折りたたむ',
|
|
1320
|
+
'settings.group.tree': 'ツリーとリスト',
|
|
1321
|
+
'settings.group.interaction': 'セッション操作',
|
|
1322
|
+
'settings.group.appearance': '外観',
|
|
1297
1323
|
'settings.compactChains': '一本鎖の階層を 1 行にまとめる',
|
|
1298
1324
|
'settings.compactChains.hint': '子が 1 つだけの階層は 1 行にまとまり,複数の子がある階層はツリーとして展開されます;ワークスペースのドラッグ中は一時的にフォルダーツリーへ戻り,どの階層にもドロップできます;展開状態とカスタム外観はこのブラウザーに保存されます。',
|
|
1299
1325
|
'settings.statusPulse': 'ステータス表示灯',
|
|
@@ -1444,6 +1470,9 @@ window.__ModuleLoader__.load({
|
|
|
1444
1470
|
'settings.desc': '워크스페이스 트리의 모양과 접기 설정',
|
|
1445
1471
|
'settings.expand': '펼치기',
|
|
1446
1472
|
'settings.collapse': '접기',
|
|
1473
|
+
'settings.group.tree': '트리와 목록',
|
|
1474
|
+
'settings.group.interaction': '세션 상호작용',
|
|
1475
|
+
'settings.group.appearance': '모양',
|
|
1447
1476
|
'settings.compactChains': '단일 체인을 한 줄로 접기',
|
|
1448
1477
|
'settings.compactChains.hint': '자식이 하나뿐인 단계는 한 줄로 합쳐지고, 자식이 여러 개면 트리로 펼쳐집니다; 워크스페이스를 끌어 놓는 동안에는 체인이 잠시 폴더 트리로 펼쳐져 어느 단계에나 놓을 수 있습니다; 펼침 상태와 사용자 지정 모양은 이 브라우저에 저장됩니다.',
|
|
1449
1478
|
'settings.statusPulse': '상태 표시등',
|
|
@@ -1594,6 +1623,9 @@ window.__ModuleLoader__.load({
|
|
|
1594
1623
|
'settings.desc': 'Uiterlijk en inklapgedrag van de werkruimteboom',
|
|
1595
1624
|
'settings.expand': 'Uitklappen',
|
|
1596
1625
|
'settings.collapse': 'Inklappen',
|
|
1626
|
+
'settings.group.tree': 'Boom en lijst',
|
|
1627
|
+
'settings.group.interaction': 'Sessie-interactie',
|
|
1628
|
+
'settings.group.appearance': 'Uiterlijk',
|
|
1597
1629
|
'settings.compactChains': 'Enkelvoudige ketens samenvoegen',
|
|
1598
1630
|
'settings.compactChains.hint': 'Niveaus met één kind worden tot één regel samengevoegd; bij meerdere kinderen klapt de boom open; tijdens het slepen van een werkruimte klappen de ketens tijdelijk terug naar mappen, zodat je op elk niveau kunt neerzetten; de uitgeklapte staat en het eigen uiterlijk blijven in deze browser bewaard.',
|
|
1599
1631
|
'settings.statusPulse': 'Pulserend statuslampje',
|
|
@@ -1744,6 +1776,9 @@ window.__ModuleLoader__.load({
|
|
|
1744
1776
|
'settings.desc': 'Wygląd i zwijanie drzewa obszarów roboczych',
|
|
1745
1777
|
'settings.expand': 'Rozwiń',
|
|
1746
1778
|
'settings.collapse': 'Zwiń',
|
|
1779
|
+
'settings.group.tree': 'Drzewo i lista',
|
|
1780
|
+
'settings.group.interaction': 'Interakcje sesji',
|
|
1781
|
+
'settings.group.appearance': 'Wygląd',
|
|
1747
1782
|
'settings.compactChains': 'Scal łańcuchy z jednym dzieckiem',
|
|
1748
1783
|
'settings.compactChains.hint': 'Poziomy z jednym dzieckiem scalają się w jeden wiersz; przy większej liczbie dzieci drzewo się rozwija; podczas przeciągania obszaru roboczego łańcuchy tymczasowo rozwijają się do folderów, więc upuszczenie działa na każdym poziomie; stan rozwinięcia i własny wygląd są zapisywane w tej przeglądarce.',
|
|
1749
1784
|
'settings.statusPulse': 'Pulsująca lampka stanu',
|
|
@@ -1894,6 +1929,9 @@ window.__ModuleLoader__.load({
|
|
|
1894
1929
|
'settings.desc': 'Aparência e recolhimento da árvore de espaços de trabalho',
|
|
1895
1930
|
'settings.expand': 'Expandir',
|
|
1896
1931
|
'settings.collapse': 'Recolher',
|
|
1932
|
+
'settings.group.tree': 'Árvore e lista',
|
|
1933
|
+
'settings.group.interaction': 'Interação de sessões',
|
|
1934
|
+
'settings.group.appearance': 'Aparência',
|
|
1897
1935
|
'settings.compactChains': 'Mesclar cadeias de filho único',
|
|
1898
1936
|
'settings.compactChains.hint': 'Níveis com um único filho viram uma linha; com vários filhos a árvore se expande; ao arrastar um espaço de trabalho, as cadeias voltam temporariamente a pastas, permitindo soltar em qualquer nível; o estado de expansão e o estilo personalizado ficam neste navegador.',
|
|
1899
1937
|
'settings.statusPulse': 'Luz de status pulsante',
|
|
@@ -2044,6 +2082,9 @@ window.__ModuleLoader__.load({
|
|
|
2044
2082
|
'settings.desc': 'Внешний вид и сворачивание дерева рабочих областей',
|
|
2045
2083
|
'settings.expand': 'Развернуть',
|
|
2046
2084
|
'settings.collapse': 'Свернуть',
|
|
2085
|
+
'settings.group.tree': 'Дерево и список',
|
|
2086
|
+
'settings.group.interaction': 'Взаимодействие с сессиями',
|
|
2087
|
+
'settings.group.appearance': 'Внешний вид',
|
|
2047
2088
|
'settings.compactChains': 'Объединять цепочки с одним потомком',
|
|
2048
2089
|
'settings.compactChains.hint': 'Уровни с единственным потомком сливаются в одну строку; при нескольких потомках дерево разворачивается; во время перетаскивания рабочей области цепочки временно разворачиваются в папки, чтобы можно было положить элемент на любой уровень; состояние сворачивания и оформление хранятся в этом браузере.',
|
|
2049
2090
|
'settings.statusPulse': 'Пульсирующий индикатор состояния',
|
|
@@ -2194,6 +2235,9 @@ window.__ModuleLoader__.load({
|
|
|
2194
2235
|
'settings.desc': 'Utseende och ihopfällning för arbetsyteträdet',
|
|
2195
2236
|
'settings.expand': 'Fäll ut',
|
|
2196
2237
|
'settings.collapse': 'Fäll ihop',
|
|
2238
|
+
'settings.group.tree': 'Träd och lista',
|
|
2239
|
+
'settings.group.interaction': 'Sessionsinteraktion',
|
|
2240
|
+
'settings.group.appearance': 'Utseende',
|
|
2197
2241
|
'settings.compactChains': 'Slå ihop enkelkedjor',
|
|
2198
2242
|
'settings.compactChains.hint': 'Nivåer med ett enda barn slås ihop till en rad; med flera barn fälls trädet ut; medan du drar en arbetsyta fälls kedjorna tillfälligt ut till mappar så att du kan släppa på vilken nivå som helst; utfällt läge och eget utseende sparas i den här webbläsaren.',
|
|
2199
2243
|
'settings.statusPulse': 'Pulserande statuslampa',
|
|
@@ -2344,6 +2388,9 @@ window.__ModuleLoader__.load({
|
|
|
2344
2388
|
'settings.desc': 'รูปลักษณ์และการย่อของต้นไม้พื้นที่ทำงาน',
|
|
2345
2389
|
'settings.expand': 'ขยาย',
|
|
2346
2390
|
'settings.collapse': 'ย่อ',
|
|
2391
|
+
'settings.group.tree': 'ต้นไม้และรายการ',
|
|
2392
|
+
'settings.group.interaction': 'การโต้ตอบของเซสชัน',
|
|
2393
|
+
'settings.group.appearance': 'ลักษณะที่ปรากฏ',
|
|
2347
2394
|
'settings.compactChains': 'รวมสายที่มีลูกเดียว',
|
|
2348
2395
|
'settings.compactChains.hint': 'ระดับที่มีลูกเพียงหนึ่งจะถูกรวมเป็นบรรทัดเดียว เมื่อมีลูกหลายตัวต้นไม้จะขยายออก ขณะลากพื้นที่ทำงาน สายจะขยายกลับเป็นโฟลเดอร์ชั่วคราวเพื่อให้วางได้ทุกระดับ สถานะการขยายและรูปลักษณ์ที่กำหนดเองจะถูกเก็บไว้ในเบราว์เซอร์นี้',
|
|
2349
2396
|
'settings.statusPulse': 'ไฟสถานะหายใจ',
|
|
@@ -2494,6 +2541,9 @@ window.__ModuleLoader__.load({
|
|
|
2494
2541
|
'settings.desc': 'Çalışma alanı ağacının görünümü ve daraltma tercihleri',
|
|
2495
2542
|
'settings.expand': 'Genişlet',
|
|
2496
2543
|
'settings.collapse': 'Daralt',
|
|
2544
|
+
'settings.group.tree': 'Ağaç ve liste',
|
|
2545
|
+
'settings.group.interaction': 'Oturum etkileşimi',
|
|
2546
|
+
'settings.group.appearance': 'Görünüm',
|
|
2497
2547
|
'settings.compactChains': 'Tek çocuklu zincirleri birleştir',
|
|
2498
2548
|
'settings.compactChains.hint': 'Tek çocuklu düzeyler tek satırda birleşir; birden çok çocuk olduğunda ağaç açılır; bir çalışma alanını sürüklerken zincirler geçici olarak klasörlere açılır, böylece her düzeye bırakabilirsiniz; açılma durumu ve özel görünüm bu tarayıcıda saklanır.',
|
|
2499
2549
|
'settings.statusPulse': 'Nefes alan durum ışığı',
|
|
@@ -2644,6 +2694,9 @@ window.__ModuleLoader__.load({
|
|
|
2644
2694
|
'settings.desc': 'Giao diện và cách thu gọn của cây không gian làm việc',
|
|
2645
2695
|
'settings.expand': 'Mở rộng',
|
|
2646
2696
|
'settings.collapse': 'Thu gọn',
|
|
2697
|
+
'settings.group.tree': 'Cây và danh sách',
|
|
2698
|
+
'settings.group.interaction': 'Tương tác phiên',
|
|
2699
|
+
'settings.group.appearance': 'Diện mạo',
|
|
2647
2700
|
'settings.compactChains': 'Gộp chuỗi một nhánh',
|
|
2648
2701
|
'settings.compactChains.hint': 'Các tầng chỉ có một nhánh con được gộp thành một dòng; khi có nhiều nhánh con, cây tự mở ra; khi kéo không gian làm việc, chuỗi tạm mở lại thành thư mục để có thể thả vào bất kỳ tầng nào; trạng thái mở và giao diện tùy chỉnh được lưu trong trình duyệt này.',
|
|
2649
2702
|
'settings.statusPulse': 'Đèn trạng thái nhấp nháy',
|
|
@@ -2794,6 +2847,9 @@ window.__ModuleLoader__.load({
|
|
|
2794
2847
|
'settings.desc': '工作區樹嘅外觀同收起偏好',
|
|
2795
2848
|
'settings.expand': '展開',
|
|
2796
2849
|
'settings.collapse': '收起',
|
|
2850
|
+
'settings.group.tree': '樹與列表',
|
|
2851
|
+
'settings.group.interaction': '會話互動',
|
|
2852
|
+
'settings.group.appearance': '外觀',
|
|
2797
2853
|
'settings.compactChains': '單鏈分組摺疊顯示',
|
|
2798
2854
|
'settings.compactChains.hint': '單層鏈會合併成一行,出現多個子級就會自動展開成樹狀;拖拽工作區期間單鏈會臨時展開返做文件夾樹,可以放入任何一級;展開狀態同自訂外觀會喺呢個瀏覽器保存。',
|
|
2799
2855
|
'settings.statusPulse': '狀態呼吸燈',
|
|
@@ -2944,6 +3000,9 @@ window.__ModuleLoader__.load({
|
|
|
2944
3000
|
'settings.desc': '工作區樹嘅外觀同收起偏好',
|
|
2945
3001
|
'settings.expand': '展開',
|
|
2946
3002
|
'settings.collapse': '收起',
|
|
3003
|
+
'settings.group.tree': '樹與列表',
|
|
3004
|
+
'settings.group.interaction': '會話互動',
|
|
3005
|
+
'settings.group.appearance': '外觀',
|
|
2947
3006
|
'settings.compactChains': '單鏈分組摺疊顯示',
|
|
2948
3007
|
'settings.compactChains.hint': '單層鏈會合併成一行,出現多個子級就會自動展開成樹狀;拖拽工作區期間單鏈會臨時展開返做文件夾樹,可以放入任何一級;展開狀態同自訂外觀會喺呢個瀏覽器保存。',
|
|
2949
3008
|
'settings.statusPulse': '狀態呼吸燈',
|
|
@@ -3094,6 +3153,9 @@ window.__ModuleLoader__.load({
|
|
|
3094
3153
|
'settings.desc': '工作區樹的外觀與收合偏好',
|
|
3095
3154
|
'settings.expand': '展開',
|
|
3096
3155
|
'settings.collapse': '收合',
|
|
3156
|
+
'settings.group.tree': '樹與清單',
|
|
3157
|
+
'settings.group.interaction': '會話互動',
|
|
3158
|
+
'settings.group.appearance': '外觀',
|
|
3097
3159
|
'settings.compactChains': '單鏈群組合併顯示',
|
|
3098
3160
|
'settings.compactChains.hint': '單層鏈會合併成一行,出現多個子層級時自動展開為樹狀;拖曳工作區期間單鏈會暫時展開回資料夾樹,可放入任一層級;展開狀態與自訂外觀會保存在本瀏覽器。',
|
|
3099
3161
|
'settings.statusPulse': '狀態呼吸燈',
|
|
@@ -4102,6 +4164,7 @@ window.__ModuleLoader__.load({
|
|
|
4102
4164
|
'.bw-plugin-body{border-top:1px solid var(--dsw-alias-border-l2,rgba(127,127,127,.18));margin:0 16px;padding:12px 0 16px}',
|
|
4103
4165
|
'.bw-setting-row{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;font-size:13px;line-height:1.5;color:var(--dsw-alias-label-secondary,#b8b8b8)}',
|
|
4104
4166
|
'.bw-setting-label{flex:1;min-width:0;font-size:13px;line-height:1.5;color:var(--dsw-alias-label-secondary,#b8b8b8)}',
|
|
4167
|
+
'.bw-settings-group-title{margin-top:14px;font-size:13px;font-weight:600;color:var(--dsw-alias-label-primary,#e6e6e6)}',
|
|
4105
4168
|
'.bw-switch{box-sizing:border-box;position:relative;flex:0 0 auto;width:36px;height:20px;padding:2px;border:0;border-radius:10px;background:var(--dsw-alias-border-l3,rgba(127,127,127,.3));cursor:pointer;transition:background 120ms ease}',
|
|
4106
4169
|
'.bw-switch:hover{background:var(--dsw-alias-label-dimmed,#7a7a7a)}',
|
|
4107
4170
|
'.bw-switch-on{background:var(--dsw-alias-brand-primary,#5b8def)}',
|
|
@@ -5898,6 +5961,7 @@ window.__ModuleLoader__.load({
|
|
|
5898
5961
|
}, label)
|
|
5899
5962
|
return E('div', { className: 'bw-settings' },
|
|
5900
5963
|
StyleNode(),
|
|
5964
|
+
E('div', { className: 'bw-settings-group-title' }, t('settings.group.tree')),
|
|
5901
5965
|
E('div', { className: 'bw-setting-row' },
|
|
5902
5966
|
E('div', { className: 'bw-setting-label' }, t('settings.compactChains')),
|
|
5903
5967
|
E('button', {
|
|
@@ -5931,19 +5995,21 @@ window.__ModuleLoader__.load({
|
|
|
5931
5995
|
),
|
|
5932
5996
|
),
|
|
5933
5997
|
E('div', { className: 'bw-hint' }, t('settings.workspaceGroup.hint')),
|
|
5934
|
-
E('div', { className: 'bw-setting-row'
|
|
5935
|
-
E('div', { className: 'bw-setting-label' }, t('settings.
|
|
5936
|
-
E('
|
|
5937
|
-
|
|
5938
|
-
|
|
5939
|
-
|
|
5940
|
-
|
|
5941
|
-
|
|
5942
|
-
|
|
5943
|
-
|
|
5998
|
+
E('div', { className: 'bw-setting-row' },
|
|
5999
|
+
E('div', { className: 'bw-setting-label' }, t('settings.sessionLimit')),
|
|
6000
|
+
E('div', { className: 'bw-seg' },
|
|
6001
|
+
[[0, t('settings.sessionLimit.all')], [5, '5'], [10, '10'], [25, '25']].map(([value, label]) =>
|
|
6002
|
+
E('button', {
|
|
6003
|
+
type: 'button',
|
|
6004
|
+
key: String(value),
|
|
6005
|
+
className: cls('bw-seg-btn', sessionLimit === value && 'bw-seg-btn-active'),
|
|
6006
|
+
onClick: () => { setPref('sessionLimit', value) },
|
|
6007
|
+
}, label)),
|
|
6008
|
+
),
|
|
5944
6009
|
),
|
|
5945
|
-
E('div', { className: 'bw-hint' }, t('settings.
|
|
5946
|
-
E('div', { className: 'bw-
|
|
6010
|
+
E('div', { className: 'bw-hint' }, t('settings.sessionLimit.hint')),
|
|
6011
|
+
E('div', { className: 'bw-settings-group-title' }, t('settings.group.interaction')),
|
|
6012
|
+
E('div', { className: 'bw-setting-row' },
|
|
5947
6013
|
E('div', { className: 'bw-setting-label' }, t('settings.sessionMenu')),
|
|
5948
6014
|
E('button', {
|
|
5949
6015
|
type: 'button',
|
|
@@ -5967,7 +6033,20 @@ window.__ModuleLoader__.load({
|
|
|
5967
6033
|
}, E('span', { className: 'bw-switch-thumb' })),
|
|
5968
6034
|
),
|
|
5969
6035
|
E('div', { className: 'bw-hint' }, t('settings.rowActions.hint')),
|
|
5970
|
-
E('div', { className: 'bw-
|
|
6036
|
+
E('div', { className: 'bw-settings-group-title' }, t('settings.group.appearance')),
|
|
6037
|
+
E('div', { className: 'bw-setting-row' },
|
|
6038
|
+
E('div', { className: 'bw-setting-label' }, t('settings.statusPulse')),
|
|
6039
|
+
E('button', {
|
|
6040
|
+
type: 'button',
|
|
6041
|
+
role: 'switch',
|
|
6042
|
+
'aria-checked': statusPulse,
|
|
6043
|
+
'aria-label': t('settings.statusPulse'),
|
|
6044
|
+
className: cls('bw-switch', statusPulse && 'bw-switch-on'),
|
|
6045
|
+
onClick: () => { setPref('statusPulse', !statusPulse) },
|
|
6046
|
+
}, E('span', { className: 'bw-switch-thumb' })),
|
|
6047
|
+
),
|
|
6048
|
+
E('div', { className: 'bw-hint' }, t('settings.statusPulse.hint')),
|
|
6049
|
+
E('div', { className: 'bw-setting-row' },
|
|
5971
6050
|
E('div', { className: 'bw-setting-label' }, t('settings.autoStyle')),
|
|
5972
6051
|
E('button', {
|
|
5973
6052
|
type: 'button',
|
|
@@ -5979,20 +6058,7 @@ window.__ModuleLoader__.load({
|
|
|
5979
6058
|
}, E('span', { className: 'bw-switch-thumb' })),
|
|
5980
6059
|
),
|
|
5981
6060
|
E('div', { className: 'bw-hint' }, t('settings.autoStyle.hint')),
|
|
5982
|
-
E('div', { className: 'bw-setting-
|
|
5983
|
-
E('div', { className: 'bw-setting-label' }, t('settings.sessionLimit')),
|
|
5984
|
-
E('div', { className: 'bw-seg' },
|
|
5985
|
-
[[0, t('settings.sessionLimit.all')], [5, '5'], [10, '10'], [25, '25']].map(([value, label]) =>
|
|
5986
|
-
E('button', {
|
|
5987
|
-
type: 'button',
|
|
5988
|
-
key: String(value),
|
|
5989
|
-
className: cls('bw-seg-btn', sessionLimit === value && 'bw-seg-btn-active'),
|
|
5990
|
-
onClick: () => { setPref('sessionLimit', value) },
|
|
5991
|
-
}, label)),
|
|
5992
|
-
),
|
|
5993
|
-
),
|
|
5994
|
-
E('div', { className: 'bw-hint' }, t('settings.sessionLimit.hint')),
|
|
5995
|
-
E('div', { className: 'bw-setting-label', style: { marginTop: 16 } }, t('settings.appearance')),
|
|
6061
|
+
E('div', { className: 'bw-setting-label' }, t('settings.appearance')),
|
|
5996
6062
|
E('div', { className: 'bw-hint' }, t('settings.appearance.hint')),
|
|
5997
6063
|
E('div', { className: 'bw-appearance-box' },
|
|
5998
6064
|
E(AppearanceControls, {
|
|
@@ -8790,26 +8856,12 @@ window.__ModuleLoader__.load({
|
|
|
8790
8856
|
console.warn('[dsh-better-workspace] configForms wiring failed', error)
|
|
8791
8857
|
}
|
|
8792
8858
|
|
|
8793
|
-
//
|
|
8794
|
-
// served namespaces — registered host-side — and settings.plugin.item
|
|
8795
|
-
// cards). The old left-nav settings.section entry was removed: the
|
|
8796
|
-
// plugins-section card is the single settings surface now.
|
|
8797
|
-
slots.inject('settings.plugin.item', guarded(
|
|
8798
|
-
'settings.plugin.item',
|
|
8799
|
-
{
|
|
8800
|
-
name: 'settings.plugin.item',
|
|
8801
|
-
key: 'better-workspace',
|
|
8802
|
-
locale: NS,
|
|
8803
|
-
store: viewStore,
|
|
8804
|
-
},
|
|
8805
|
-
BetterWorkspacePluginCard,
|
|
8806
|
-
))
|
|
8807
|
-
|
|
8808
|
-
// dsh 0.1.6-alpha.2+ moves third-party configuration to the Plugins
|
|
8859
|
+
// dsh 0.1.6-alpha.2+ hosts third-party configuration on the Plugins
|
|
8809
8860
|
// panel's bundle page: plugins.bundle.config, keyed by PACKAGE name and
|
|
8810
|
-
// rendered with view: 'page'.
|
|
8811
|
-
//
|
|
8812
|
-
//
|
|
8861
|
+
// rendered with view: 'page'. This is the only settings seat now — the
|
|
8862
|
+
// legacy settings-list card (the pre-alpha.2 Settings → Plugins list)
|
|
8863
|
+
// went away with the raised host floor. The inject waits for the
|
|
8864
|
+
// declaration, so older hosts simply never grow this seat.
|
|
8813
8865
|
slots.inject('plugins.bundle.config', guarded(
|
|
8814
8866
|
'plugins.bundle.config',
|
|
8815
8867
|
{
|
package/src/index.js
CHANGED
|
@@ -100,26 +100,19 @@ export function apply(ctx) {
|
|
|
100
100
|
// (schema(mergeLayers(...))) — that is @deepseek-ai/schemastery's contract:
|
|
101
101
|
// its schemas are callable and fill defaults on undefined. zod objects are
|
|
102
102
|
// NOT callable, so a zod schema throws "TypeError: ... is not a function"
|
|
103
|
-
// at register(); the namespace is then never served and the
|
|
104
|
-
//
|
|
105
|
-
// dispatches our card. Both modules resolve at runtime through normal Node
|
|
103
|
+
// at register(); the namespace is then never served and the settings card
|
|
104
|
+
// never gets data. The module resolves at runtime through normal Node
|
|
106
105
|
// resolution from the plugin's own node_modules (the same static-import
|
|
107
106
|
// pattern dsh-context uses).
|
|
108
|
-
|
|
109
|
-
.then((
|
|
107
|
+
import('@deepseek-ai/schemastery')
|
|
108
|
+
.then((sm) => {
|
|
110
109
|
const settings = sctx && sctx.settings
|
|
111
110
|
if (!settings || typeof settings.register !== 'function') return
|
|
112
111
|
const Schema = sm.default
|
|
113
|
-
// dsh
|
|
114
|
-
//
|
|
115
|
-
//
|
|
116
|
-
|
|
117
|
-
// accepted by the older register() — one call, both eras. Only use the
|
|
118
|
-
// helper when the installed package still ships it.
|
|
119
|
-
const ns = typeof ds.settingsNamespace === 'function'
|
|
120
|
-
? ds.settingsNamespace('better-workspace')
|
|
121
|
-
: 'better-workspace'
|
|
122
|
-
settings.register(ns, Schema.object({
|
|
112
|
+
// register() takes a plain string since dsh 0.1.2-alpha.2 removed the
|
|
113
|
+
// settingsNamespace() helper (the helper was compile-time branding only).
|
|
114
|
+
// The 0.1.6 floor guarantees the plain-string register() is what runs.
|
|
115
|
+
settings.register('better-workspace', Schema.object({
|
|
123
116
|
// Cross-device preferences live in the HOST settings store
|
|
124
117
|
// (~/.dsh/settings.yaml): web and the desktop app share one
|
|
125
118
|
// DSH_HOME, so appearance (styling) and the two toggles follow
|