dsh-better-workspace 0.25.0 → 0.26.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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "id": "dsh-external/dsh-better-workspace",
3
- "version": "0.25.0",
3
+ "version": "0.26.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.25.0",
3
+ "version": "0.26.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
@@ -86,6 +86,9 @@ window.__ModuleLoader__.load({
86
86
  'settings.desc': '工作区树的外观与折叠偏好',
87
87
  'settings.expand': '展开',
88
88
  'settings.collapse': '收起',
89
+ 'settings.group.tree': '树与列表',
90
+ 'settings.group.interaction': '会话交互',
91
+ 'settings.group.appearance': '外观',
89
92
  'settings.compactChains': '单链分组折叠显示',
90
93
  'settings.compactChains.hint': '单层链合并为一行,出现多个子级时自动展开为树状;拖拽工作区期间单链临时展开回文件夹树,可放入任意一级;展开状态与自定义外观保存在当前浏览器。',
91
94
  'settings.statusPulse': '状态呼吸灯',
@@ -236,6 +239,9 @@ window.__ModuleLoader__.load({
236
239
  'settings.desc': 'Workspace tree appearance and folding preferences',
237
240
  'settings.expand': 'Expand',
238
241
  'settings.collapse': 'Collapse',
242
+ 'settings.group.tree': 'Tree & list',
243
+ 'settings.group.interaction': 'Session interaction',
244
+ 'settings.group.appearance': 'Appearance',
239
245
  'settings.compactChains': 'Merge single-child chains',
240
246
  '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
247
  'settings.statusPulse': 'Status breathing light',
@@ -394,6 +400,9 @@ window.__ModuleLoader__.load({
394
400
  'settings.desc': 'مظهر شجرة مساحات العمل وتفضيلات الطيّ',
395
401
  'settings.expand': 'توسيع',
396
402
  'settings.collapse': 'طيّ',
403
+ 'settings.group.tree': 'الشجرة والقائمة',
404
+ 'settings.group.interaction': 'تفاعل الجلسات',
405
+ 'settings.group.appearance': 'المظهر',
397
406
  'settings.compactChains': 'دمج السلاسل ذات الفرع الواحد',
398
407
  'settings.compactChains.hint': 'تُدمج المستويات ذات الفرع الواحد في سطر واحد، وتتوسع الشجرة تلقائياً عند وجود أكثر من فرع؛ أثناء سحب مساحة عمل تُفكّ السلاسل مؤقتاً إلى مجلدات ليصبح الإفلات ممكناً في أي مستوى؛ تُحفظ حالة التوسيع والمظهر المخصص في هذا المتصفح.',
399
408
  'settings.statusPulse': 'مؤشر حالة نابض',
@@ -544,6 +553,9 @@ window.__ModuleLoader__.load({
544
553
  'settings.desc': 'Aussehen und Einklappverhalten des Arbeitsbereich-Baums',
545
554
  'settings.expand': 'Ausklappen',
546
555
  'settings.collapse': 'Einklappen',
556
+ 'settings.group.tree': 'Baum & Liste',
557
+ 'settings.group.interaction': 'Sitzungsinteraktion',
558
+ 'settings.group.appearance': 'Aussehen',
547
559
  'settings.compactChains': 'Einzelketten zusammenfassen',
548
560
  '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
561
  'settings.statusPulse': 'Status-Pulslicht',
@@ -694,6 +706,9 @@ window.__ModuleLoader__.load({
694
706
  'settings.desc': 'Apparence et repli de l\'arborescence des espaces de travail',
695
707
  'settings.expand': 'Développer',
696
708
  'settings.collapse': 'Réduire',
709
+ 'settings.group.tree': 'Arborescence et liste',
710
+ 'settings.group.interaction': 'Interactions de session',
711
+ 'settings.group.appearance': 'Apparence',
697
712
  'settings.compactChains': 'Fusionner les chaînes à un seul enfant',
698
713
  '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
714
  'settings.statusPulse': 'Voyant d\'état pulsant',
@@ -844,6 +859,9 @@ window.__ModuleLoader__.load({
844
859
  'settings.desc': 'कार्यस्थान वृक्ष का रूप और समेटने की प्राथमिकताएँ',
845
860
  'settings.expand': 'फैलाएँ',
846
861
  'settings.collapse': 'समेटें',
862
+ 'settings.group.tree': 'ट्री और सूची',
863
+ 'settings.group.interaction': 'सेशन इंटरैक्शन',
864
+ 'settings.group.appearance': 'उपस्थिति',
847
865
  'settings.compactChains': 'एकल-संतान श्रृंखलाएँ मिलाएँ',
848
866
  'settings.compactChains.hint': 'जिन स्तरों पर केवल एक संतान होती है वे एक पंक्ति में मिल जाते हैं; कई संतानें होने पर वृक्ष खुल जाता है; कार्यस्थान खींचते समय श्रृंखलाएँ अस्थायी रूप से फ़ोल्डरों में खुल जाती हैं ताकि किसी भी स्तर पर छोड़ा जा सके; खुलने की स्थिति और अनुकूलित रूप इसी ब्राउज़र में सहेजे जाते हैं।',
849
867
  'settings.statusPulse': 'स्थिति की साँस लेती बत्ती',
@@ -994,6 +1012,9 @@ window.__ModuleLoader__.load({
994
1012
  'settings.desc': 'Tampilan dan pelipatan pohon ruang kerja',
995
1013
  'settings.expand': 'Bentangkan',
996
1014
  'settings.collapse': 'Ciutkan',
1015
+ 'settings.group.tree': 'Pohon & daftar',
1016
+ 'settings.group.interaction': 'Interaksi sesi',
1017
+ 'settings.group.appearance': 'Tampilan',
997
1018
  'settings.compactChains': 'Gabungkan rantai beranak tunggal',
998
1019
  '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
1020
  'settings.statusPulse': 'Lampu status bernapas',
@@ -1144,6 +1165,9 @@ window.__ModuleLoader__.load({
1144
1165
  'settings.desc': 'Aspetto e compressione dell\'albero delle aree di lavoro',
1145
1166
  'settings.expand': 'Espandi',
1146
1167
  'settings.collapse': 'Comprimi',
1168
+ 'settings.group.tree': 'Albero ed elenco',
1169
+ 'settings.group.interaction': 'Interazione sessioni',
1170
+ 'settings.group.appearance': 'Aspetto',
1147
1171
  'settings.compactChains': 'Unisci le catene a figlio unico',
1148
1172
  '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
1173
  'settings.statusPulse': 'Spia di stato pulsante',
@@ -1294,6 +1318,9 @@ window.__ModuleLoader__.load({
1294
1318
  'settings.desc': 'ワークスペースツリーの外観と折りたたみ設定',
1295
1319
  'settings.expand': '展開',
1296
1320
  'settings.collapse': '折りたたむ',
1321
+ 'settings.group.tree': 'ツリーとリスト',
1322
+ 'settings.group.interaction': 'セッション操作',
1323
+ 'settings.group.appearance': '外観',
1297
1324
  'settings.compactChains': '一本鎖の階層を 1 行にまとめる',
1298
1325
  'settings.compactChains.hint': '子が 1 つだけの階層は 1 行にまとまり,複数の子がある階層はツリーとして展開されます;ワークスペースのドラッグ中は一時的にフォルダーツリーへ戻り,どの階層にもドロップできます;展開状態とカスタム外観はこのブラウザーに保存されます。',
1299
1326
  'settings.statusPulse': 'ステータス表示灯',
@@ -1444,6 +1471,9 @@ window.__ModuleLoader__.load({
1444
1471
  'settings.desc': '워크스페이스 트리의 모양과 접기 설정',
1445
1472
  'settings.expand': '펼치기',
1446
1473
  'settings.collapse': '접기',
1474
+ 'settings.group.tree': '트리와 목록',
1475
+ 'settings.group.interaction': '세션 상호작용',
1476
+ 'settings.group.appearance': '모양',
1447
1477
  'settings.compactChains': '단일 체인을 한 줄로 접기',
1448
1478
  'settings.compactChains.hint': '자식이 하나뿐인 단계는 한 줄로 합쳐지고, 자식이 여러 개면 트리로 펼쳐집니다; 워크스페이스를 끌어 놓는 동안에는 체인이 잠시 폴더 트리로 펼쳐져 어느 단계에나 놓을 수 있습니다; 펼침 상태와 사용자 지정 모양은 이 브라우저에 저장됩니다.',
1449
1479
  'settings.statusPulse': '상태 표시등',
@@ -1594,6 +1624,9 @@ window.__ModuleLoader__.load({
1594
1624
  'settings.desc': 'Uiterlijk en inklapgedrag van de werkruimteboom',
1595
1625
  'settings.expand': 'Uitklappen',
1596
1626
  'settings.collapse': 'Inklappen',
1627
+ 'settings.group.tree': 'Boom en lijst',
1628
+ 'settings.group.interaction': 'Sessie-interactie',
1629
+ 'settings.group.appearance': 'Uiterlijk',
1597
1630
  'settings.compactChains': 'Enkelvoudige ketens samenvoegen',
1598
1631
  '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
1632
  'settings.statusPulse': 'Pulserend statuslampje',
@@ -1744,6 +1777,9 @@ window.__ModuleLoader__.load({
1744
1777
  'settings.desc': 'Wygląd i zwijanie drzewa obszarów roboczych',
1745
1778
  'settings.expand': 'Rozwiń',
1746
1779
  'settings.collapse': 'Zwiń',
1780
+ 'settings.group.tree': 'Drzewo i lista',
1781
+ 'settings.group.interaction': 'Interakcje sesji',
1782
+ 'settings.group.appearance': 'Wygląd',
1747
1783
  'settings.compactChains': 'Scal łańcuchy z jednym dzieckiem',
1748
1784
  '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
1785
  'settings.statusPulse': 'Pulsująca lampka stanu',
@@ -1894,6 +1930,9 @@ window.__ModuleLoader__.load({
1894
1930
  'settings.desc': 'Aparência e recolhimento da árvore de espaços de trabalho',
1895
1931
  'settings.expand': 'Expandir',
1896
1932
  'settings.collapse': 'Recolher',
1933
+ 'settings.group.tree': 'Árvore e lista',
1934
+ 'settings.group.interaction': 'Interação de sessões',
1935
+ 'settings.group.appearance': 'Aparência',
1897
1936
  'settings.compactChains': 'Mesclar cadeias de filho único',
1898
1937
  '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
1938
  'settings.statusPulse': 'Luz de status pulsante',
@@ -2044,6 +2083,9 @@ window.__ModuleLoader__.load({
2044
2083
  'settings.desc': 'Внешний вид и сворачивание дерева рабочих областей',
2045
2084
  'settings.expand': 'Развернуть',
2046
2085
  'settings.collapse': 'Свернуть',
2086
+ 'settings.group.tree': 'Дерево и список',
2087
+ 'settings.group.interaction': 'Взаимодействие с сессиями',
2088
+ 'settings.group.appearance': 'Внешний вид',
2047
2089
  'settings.compactChains': 'Объединять цепочки с одним потомком',
2048
2090
  'settings.compactChains.hint': 'Уровни с единственным потомком сливаются в одну строку; при нескольких потомках дерево разворачивается; во время перетаскивания рабочей области цепочки временно разворачиваются в папки, чтобы можно было положить элемент на любой уровень; состояние сворачивания и оформление хранятся в этом браузере.',
2049
2091
  'settings.statusPulse': 'Пульсирующий индикатор состояния',
@@ -2194,6 +2236,9 @@ window.__ModuleLoader__.load({
2194
2236
  'settings.desc': 'Utseende och ihopfällning för arbetsyteträdet',
2195
2237
  'settings.expand': 'Fäll ut',
2196
2238
  'settings.collapse': 'Fäll ihop',
2239
+ 'settings.group.tree': 'Träd och lista',
2240
+ 'settings.group.interaction': 'Sessionsinteraktion',
2241
+ 'settings.group.appearance': 'Utseende',
2197
2242
  'settings.compactChains': 'Slå ihop enkelkedjor',
2198
2243
  '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
2244
  'settings.statusPulse': 'Pulserande statuslampa',
@@ -2344,6 +2389,9 @@ window.__ModuleLoader__.load({
2344
2389
  'settings.desc': 'รูปลักษณ์และการย่อของต้นไม้พื้นที่ทำงาน',
2345
2390
  'settings.expand': 'ขยาย',
2346
2391
  'settings.collapse': 'ย่อ',
2392
+ 'settings.group.tree': 'ต้นไม้และรายการ',
2393
+ 'settings.group.interaction': 'การโต้ตอบของเซสชัน',
2394
+ 'settings.group.appearance': 'ลักษณะที่ปรากฏ',
2347
2395
  'settings.compactChains': 'รวมสายที่มีลูกเดียว',
2348
2396
  'settings.compactChains.hint': 'ระดับที่มีลูกเพียงหนึ่งจะถูกรวมเป็นบรรทัดเดียว เมื่อมีลูกหลายตัวต้นไม้จะขยายออก ขณะลากพื้นที่ทำงาน สายจะขยายกลับเป็นโฟลเดอร์ชั่วคราวเพื่อให้วางได้ทุกระดับ สถานะการขยายและรูปลักษณ์ที่กำหนดเองจะถูกเก็บไว้ในเบราว์เซอร์นี้',
2349
2397
  'settings.statusPulse': 'ไฟสถานะหายใจ',
@@ -2494,6 +2542,9 @@ window.__ModuleLoader__.load({
2494
2542
  'settings.desc': 'Çalışma alanı ağacının görünümü ve daraltma tercihleri',
2495
2543
  'settings.expand': 'Genişlet',
2496
2544
  'settings.collapse': 'Daralt',
2545
+ 'settings.group.tree': 'Ağaç ve liste',
2546
+ 'settings.group.interaction': 'Oturum etkileşimi',
2547
+ 'settings.group.appearance': 'Görünüm',
2497
2548
  'settings.compactChains': 'Tek çocuklu zincirleri birleştir',
2498
2549
  '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
2550
  'settings.statusPulse': 'Nefes alan durum ışığı',
@@ -2644,6 +2695,9 @@ window.__ModuleLoader__.load({
2644
2695
  'settings.desc': 'Giao diện và cách thu gọn của cây không gian làm việc',
2645
2696
  'settings.expand': 'Mở rộng',
2646
2697
  'settings.collapse': 'Thu gọn',
2698
+ 'settings.group.tree': 'Cây và danh sách',
2699
+ 'settings.group.interaction': 'Tương tác phiên',
2700
+ 'settings.group.appearance': 'Diện mạo',
2647
2701
  'settings.compactChains': 'Gộp chuỗi một nhánh',
2648
2702
  '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
2703
  'settings.statusPulse': 'Đèn trạng thái nhấp nháy',
@@ -2794,6 +2848,9 @@ window.__ModuleLoader__.load({
2794
2848
  'settings.desc': '工作區樹嘅外觀同收起偏好',
2795
2849
  'settings.expand': '展開',
2796
2850
  'settings.collapse': '收起',
2851
+ 'settings.group.tree': '樹與列表',
2852
+ 'settings.group.interaction': '會話互動',
2853
+ 'settings.group.appearance': '外觀',
2797
2854
  'settings.compactChains': '單鏈分組摺疊顯示',
2798
2855
  'settings.compactChains.hint': '單層鏈會合併成一行,出現多個子級就會自動展開成樹狀;拖拽工作區期間單鏈會臨時展開返做文件夾樹,可以放入任何一級;展開狀態同自訂外觀會喺呢個瀏覽器保存。',
2799
2856
  'settings.statusPulse': '狀態呼吸燈',
@@ -2944,6 +3001,9 @@ window.__ModuleLoader__.load({
2944
3001
  'settings.desc': '工作區樹嘅外觀同收起偏好',
2945
3002
  'settings.expand': '展開',
2946
3003
  'settings.collapse': '收起',
3004
+ 'settings.group.tree': '樹與列表',
3005
+ 'settings.group.interaction': '會話互動',
3006
+ 'settings.group.appearance': '外觀',
2947
3007
  'settings.compactChains': '單鏈分組摺疊顯示',
2948
3008
  'settings.compactChains.hint': '單層鏈會合併成一行,出現多個子級就會自動展開成樹狀;拖拽工作區期間單鏈會臨時展開返做文件夾樹,可以放入任何一級;展開狀態同自訂外觀會喺呢個瀏覽器保存。',
2949
3009
  'settings.statusPulse': '狀態呼吸燈',
@@ -3094,6 +3154,9 @@ window.__ModuleLoader__.load({
3094
3154
  'settings.desc': '工作區樹的外觀與收合偏好',
3095
3155
  'settings.expand': '展開',
3096
3156
  'settings.collapse': '收合',
3157
+ 'settings.group.tree': '樹與清單',
3158
+ 'settings.group.interaction': '會話互動',
3159
+ 'settings.group.appearance': '外觀',
3097
3160
  'settings.compactChains': '單鏈群組合併顯示',
3098
3161
  'settings.compactChains.hint': '單層鏈會合併成一行,出現多個子層級時自動展開為樹狀;拖曳工作區期間單鏈會暫時展開回資料夾樹,可放入任一層級;展開狀態與自訂外觀會保存在本瀏覽器。',
3099
3162
  'settings.statusPulse': '狀態呼吸燈',
@@ -4102,6 +4165,7 @@ window.__ModuleLoader__.load({
4102
4165
  '.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
4166
  '.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
4167
  '.bw-setting-label{flex:1;min-width:0;font-size:13px;line-height:1.5;color:var(--dsw-alias-label-secondary,#b8b8b8)}',
4168
+ '.bw-settings-group-title{margin-top:14px;font-size:13px;font-weight:600;color:var(--dsw-alias-label-primary,#e6e6e6)}',
4105
4169
  '.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
4170
  '.bw-switch:hover{background:var(--dsw-alias-label-dimmed,#7a7a7a)}',
4107
4171
  '.bw-switch-on{background:var(--dsw-alias-brand-primary,#5b8def)}',
@@ -5898,6 +5962,7 @@ window.__ModuleLoader__.load({
5898
5962
  }, label)
5899
5963
  return E('div', { className: 'bw-settings' },
5900
5964
  StyleNode(),
5965
+ E('div', { className: 'bw-settings-group-title' }, t('settings.group.tree')),
5901
5966
  E('div', { className: 'bw-setting-row' },
5902
5967
  E('div', { className: 'bw-setting-label' }, t('settings.compactChains')),
5903
5968
  E('button', {
@@ -5931,19 +5996,21 @@ window.__ModuleLoader__.load({
5931
5996
  ),
5932
5997
  ),
5933
5998
  E('div', { className: 'bw-hint' }, t('settings.workspaceGroup.hint')),
5934
- E('div', { className: 'bw-setting-row', style: { marginTop: 10 } },
5935
- E('div', { className: 'bw-setting-label' }, t('settings.statusPulse')),
5936
- E('button', {
5937
- type: 'button',
5938
- role: 'switch',
5939
- 'aria-checked': statusPulse,
5940
- 'aria-label': t('settings.statusPulse'),
5941
- className: cls('bw-switch', statusPulse && 'bw-switch-on'),
5942
- onClick: () => { setPref('statusPulse', !statusPulse) },
5943
- }, E('span', { className: 'bw-switch-thumb' })),
5999
+ E('div', { className: 'bw-setting-row' },
6000
+ E('div', { className: 'bw-setting-label' }, t('settings.sessionLimit')),
6001
+ E('div', { className: 'bw-seg' },
6002
+ [[0, t('settings.sessionLimit.all')], [5, '5'], [10, '10'], [25, '25']].map(([value, label]) =>
6003
+ E('button', {
6004
+ type: 'button',
6005
+ key: String(value),
6006
+ className: cls('bw-seg-btn', sessionLimit === value && 'bw-seg-btn-active'),
6007
+ onClick: () => { setPref('sessionLimit', value) },
6008
+ }, label)),
6009
+ ),
5944
6010
  ),
5945
- E('div', { className: 'bw-hint' }, t('settings.statusPulse.hint')),
5946
- E('div', { className: 'bw-setting-row', style: { marginTop: 10 } },
6011
+ E('div', { className: 'bw-hint' }, t('settings.sessionLimit.hint')),
6012
+ E('div', { className: 'bw-settings-group-title' }, t('settings.group.interaction')),
6013
+ E('div', { className: 'bw-setting-row' },
5947
6014
  E('div', { className: 'bw-setting-label' }, t('settings.sessionMenu')),
5948
6015
  E('button', {
5949
6016
  type: 'button',
@@ -5967,7 +6034,20 @@ window.__ModuleLoader__.load({
5967
6034
  }, E('span', { className: 'bw-switch-thumb' })),
5968
6035
  ),
5969
6036
  E('div', { className: 'bw-hint' }, t('settings.rowActions.hint')),
5970
- E('div', { className: 'bw-setting-row', style: { marginTop: 10 } },
6037
+ E('div', { className: 'bw-settings-group-title' }, t('settings.group.appearance')),
6038
+ E('div', { className: 'bw-setting-row' },
6039
+ E('div', { className: 'bw-setting-label' }, t('settings.statusPulse')),
6040
+ E('button', {
6041
+ type: 'button',
6042
+ role: 'switch',
6043
+ 'aria-checked': statusPulse,
6044
+ 'aria-label': t('settings.statusPulse'),
6045
+ className: cls('bw-switch', statusPulse && 'bw-switch-on'),
6046
+ onClick: () => { setPref('statusPulse', !statusPulse) },
6047
+ }, E('span', { className: 'bw-switch-thumb' })),
6048
+ ),
6049
+ E('div', { className: 'bw-hint' }, t('settings.statusPulse.hint')),
6050
+ E('div', { className: 'bw-setting-row' },
5971
6051
  E('div', { className: 'bw-setting-label' }, t('settings.autoStyle')),
5972
6052
  E('button', {
5973
6053
  type: 'button',
@@ -5979,20 +6059,7 @@ window.__ModuleLoader__.load({
5979
6059
  }, E('span', { className: 'bw-switch-thumb' })),
5980
6060
  ),
5981
6061
  E('div', { className: 'bw-hint' }, t('settings.autoStyle.hint')),
5982
- E('div', { className: 'bw-setting-row', style: { marginTop: 10 } },
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')),
6062
+ E('div', { className: 'bw-setting-label' }, t('settings.appearance')),
5996
6063
  E('div', { className: 'bw-hint' }, t('settings.appearance.hint')),
5997
6064
  E('div', { className: 'bw-appearance-box' },
5998
6065
  E(AppearanceControls, {