@xcanwin/manyoyo 6.2.5 → 6.2.7

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.
@@ -13,9 +13,8 @@
13
13
 
14
14
  --line: #d9c7ad;
15
15
  --line-strong: #b59263;
16
- --tree-guide: rgba(181, 146, 99, 0.44);
17
- --tree-guide-soft: rgba(181, 146, 99, 0.44);
18
- --tree-active: #ecdfc8;
16
+ --tree-active: #e0c99b;
17
+ --session-card-hover: #f0e0c4;
19
18
 
20
19
  --surface-panel: linear-gradient(180deg, rgba(255, 255, 255, 0.88) 0%, rgba(252, 246, 236, 0.88) 100%);
21
20
 
@@ -394,7 +393,8 @@ textarea:focus-visible {
394
393
 
395
394
  .form-grid input,
396
395
  .form-grid select,
397
- .text-block textarea {
396
+ .text-block textarea,
397
+ .text-block input {
398
398
  border: 1px solid var(--line);
399
399
  border-radius: 10px;
400
400
  padding: 9px 11px;
@@ -528,138 +528,80 @@ textarea:focus-visible {
528
528
  border-radius: 8px;
529
529
  }
530
530
 
531
- .tree-node-block,
532
- .tree-node-children {
531
+ .crumb-bar {
533
532
  display: flex;
534
- flex-direction: column;
535
- gap: 8px;
536
- }
537
-
538
- .tree-node-row {
539
- display: grid;
540
- grid-template-columns: auto minmax(0, 1fr);
541
- align-items: stretch;
542
- column-gap: 8px;
543
- }
544
-
545
- .tree-node-row.tree-node-row-container,
546
- .tree-node-row.tree-node-row-agent {
547
- position: relative;
548
- }
549
-
550
- .tree-prefix {
551
- min-height: 38px;
552
- display: inline-flex;
553
- align-items: stretch;
554
- gap: 3px;
555
- position: relative;
556
- }
557
-
558
- .tree-prefix-toggle {
559
- position: relative;
560
- width: 16px;
561
- flex: 0 0 16px;
562
- display: inline-flex;
533
+ flex-wrap: wrap;
563
534
  align-items: center;
564
- justify-content: center;
565
- }
566
-
567
- .tree-prefix-segment,
568
- .tree-prefix-branch {
569
- position: relative;
570
- width: 10px;
571
- flex: 0 0 10px;
572
- }
573
-
574
- .tree-prefix-branch::before,
575
- .tree-prefix-branch::after {
576
- content: "";
577
- position: absolute;
578
- background: var(--tree-guide);
535
+ gap: 6px;
536
+ padding: 0 2px;
537
+ min-height: 20px;
579
538
  }
580
539
 
581
- .tree-prefix-branch::before {
582
- left: 5px;
583
- top: -6px;
584
- bottom: 50%;
585
- width: 1px;
540
+ .container-search-input {
541
+ width: 100%;
542
+ font-size: 12px;
543
+ padding: 6px 9px;
544
+ border: 1px solid var(--line);
545
+ border-radius: 8px;
546
+ background: var(--panel-soft);
547
+ color: var(--text);
586
548
  }
587
549
 
588
- .tree-prefix-branch.is-mid::before {
589
- bottom: -6px;
550
+ .container-search-input[hidden] {
551
+ display: none;
590
552
  }
591
553
 
592
- .tree-prefix-branch::after {
593
- left: 5px;
594
- top: 50%;
595
- width: 9px;
596
- height: 1px;
597
- background: var(--tree-guide-soft);
554
+ .crumb-item {
555
+ border: none;
556
+ background: transparent;
557
+ color: var(--accent-strong);
558
+ font-size: 12px;
559
+ font-weight: 600;
560
+ padding: 2px 2px;
561
+ border-radius: 6px;
562
+ cursor: pointer;
563
+ max-width: 220px;
564
+ overflow: hidden;
565
+ text-overflow: ellipsis;
566
+ white-space: nowrap;
598
567
  }
599
568
 
600
- .tree-prefix-leaf {
601
- position: relative;
602
- width: 12px;
603
- flex: 0 0 12px;
569
+ .crumb-item:hover {
570
+ transform: none;
571
+ text-decoration: underline;
604
572
  }
605
573
 
606
- .tree-prefix-leaf::before {
607
- content: "";
608
- position: absolute;
609
- left: 1px;
610
- top: 50%;
611
- width: 10px;
612
- height: 1px;
613
- background: var(--tree-guide-soft);
614
- transform: translateY(0);
574
+ .crumb-item.is-current {
575
+ color: var(--text);
576
+ cursor: default;
577
+ font-weight: 700;
615
578
  }
616
579
 
617
- .disclosure-toggle {
618
- width: 16px;
619
- height: 16px;
620
- padding: 0;
621
- align-self: center;
622
- display: inline-flex;
623
- align-items: center;
624
- justify-content: center;
625
- border: none;
626
- border-radius: 6px;
627
- color: #8c7257;
628
- background: transparent;
629
- transition: transform 140ms ease, background-color 140ms ease, color 140ms ease;
580
+ .crumb-item.is-current:hover {
581
+ text-decoration: none;
630
582
  }
631
583
 
632
- .disclosure-toggle svg {
633
- width: 12px;
634
- height: 12px;
635
- display: block;
636
- fill: none;
637
- stroke: currentColor;
638
- stroke-width: 1.8;
639
- stroke-linecap: round;
640
- stroke-linejoin: round;
641
- vector-effect: non-scaling-stroke;
584
+ .crumb-sep {
585
+ color: #a3927c;
586
+ font-size: 12px;
642
587
  }
643
588
 
644
- .disclosure-toggle:hover {
645
- transform: none;
589
+ .crumb-jump-active {
590
+ margin-left: auto;
591
+ border: 1px solid var(--line);
592
+ background: var(--panel-soft);
646
593
  color: var(--accent-strong);
647
- background: rgba(196, 85, 31, 0.08);
648
- }
649
-
650
- .disclosure-toggle:active {
651
- transform: none;
652
- }
653
-
654
- .disclosure-toggle[aria-expanded="true"] {
655
- transform: rotate(90deg);
594
+ font-size: 11px;
595
+ font-weight: 600;
596
+ padding: 3px 8px;
597
+ border-radius: 999px;
656
598
  }
657
599
 
658
- .disclosure-toggle[aria-expanded="true"]:hover {
659
- transform: rotate(90deg);
600
+ .session-card {
601
+ position: relative;
660
602
  }
661
603
 
662
- .tree-node-button {
604
+ .session-card-button {
663
605
  width: 100%;
664
606
  text-align: left;
665
607
  border: 1px solid transparent;
@@ -670,67 +612,86 @@ textarea:focus-visible {
670
612
  transition: background-color 120ms ease;
671
613
  }
672
614
 
673
- .tree-node-button:hover {
615
+ .session-card-container .session-card-button,
616
+ .session-card-agent .session-card-button {
617
+ padding-right: 38px;
618
+ }
619
+
620
+ .session-card-button:hover {
674
621
  transform: none;
675
- background: var(--panel-soft);
622
+ background: var(--session-card-hover);
676
623
  }
677
624
 
678
- .tree-node-button:active {
625
+ .session-card-button:active {
679
626
  transform: none;
680
627
  }
681
628
 
682
- .tree-node-button:focus-visible {
629
+ .session-card-button:focus-visible {
683
630
  outline: none;
684
631
  box-shadow: 0 0 0 3px rgba(196, 85, 31, 0.14);
685
632
  }
686
633
 
687
- .tree-node-button.active {
634
+ .session-card-button.active {
688
635
  background: var(--tree-active);
689
636
  }
690
637
 
691
- .tree-node-button.tree-node-tone-history .tree-node-title,
692
- .tree-node-button.tree-node-tone-history .tree-node-meta {
638
+ .session-card.tree-node-tone-history .session-card-title,
639
+ .session-card.tree-node-tone-history .session-card-meta {
693
640
  color: var(--tree-history-text);
694
641
  }
695
642
 
696
- .tree-node-block.has-active > .tree-node-row > .tree-node-button:not(.active) {
697
- background: var(--panel-soft);
698
- }
699
-
700
- .tree-node-row-container .tree-node-button-container,
701
- .tree-node-row-agent .tree-node-button-agent {
702
- padding-right: 38px;
643
+ .session-card.has-active .session-card-button:not(.active) {
644
+ background: var(--tree-active);
703
645
  }
704
646
 
705
- .tree-node-main {
647
+ .session-card-main {
706
648
  min-width: 0;
707
649
  display: flex;
708
650
  flex-direction: column;
709
651
  gap: 6px;
710
652
  }
711
653
 
712
- .tree-node-title {
654
+ .session-card-title-row {
655
+ display: flex;
656
+ align-items: center;
657
+ justify-content: space-between;
658
+ gap: 8px;
659
+ }
660
+
661
+ .session-card-title {
713
662
  margin-top: 0;
714
663
  font-weight: 700;
715
664
  font-size: 13px;
716
665
  line-height: 1.5;
717
666
  overflow-wrap: anywhere;
667
+ min-width: 0;
668
+ overflow: hidden;
669
+ text-overflow: ellipsis;
670
+ white-space: nowrap;
718
671
  }
719
672
 
720
- .tree-node-button-directory .tree-node-title,
721
- .tree-node-button-container .tree-node-title {
673
+ .session-card-container .session-card-title {
722
674
  font-family: var(--font-mono);
723
675
  font-size: 12px;
724
676
  font-weight: 600;
725
677
  }
726
678
 
727
- .tree-node-meta {
679
+ .session-card-meta {
728
680
  color: #7b6d5d;
729
681
  font-size: 11px;
730
682
  line-height: 1.45;
731
683
  overflow-wrap: anywhere;
732
684
  }
733
685
 
686
+ .session-card-submeta {
687
+ color: #a3927c;
688
+ font-size: 10px;
689
+ line-height: 1.4;
690
+ overflow: hidden;
691
+ text-overflow: ellipsis;
692
+ white-space: nowrap;
693
+ }
694
+
734
695
  .tree-node-status {
735
696
  font-weight: 700;
736
697
  font-size: 12px;
@@ -763,7 +724,7 @@ textarea:focus-visible {
763
724
  transition: opacity 140ms ease;
764
725
  }
765
726
 
766
- .tree-node-row:hover .tree-node-menu,
727
+ .session-card:hover .tree-node-menu,
767
728
  .tree-node-menu:focus-within,
768
729
  .tree-node-menu.is-open {
769
730
  opacity: 1;
@@ -843,10 +804,6 @@ textarea:focus-visible {
843
804
  background: var(--danger-soft);
844
805
  }
845
806
 
846
- .tree-node-children[hidden] {
847
- display: none;
848
- }
849
-
850
807
  .dir-picker-modal {
851
808
  width: min(720px, calc(100vw - 24px));
852
809
  }
@@ -1267,6 +1224,23 @@ body.workspace-switcher-open .workspace-switcher-panel {
1267
1224
  line-height: 1.6;
1268
1225
  }
1269
1226
 
1227
+ .files-markdown-preview {
1228
+ padding: 4px 6px;
1229
+ }
1230
+
1231
+ .files-image-preview {
1232
+ display: flex;
1233
+ justify-content: center;
1234
+ padding: 12px;
1235
+ }
1236
+
1237
+ .files-image-preview img {
1238
+ max-width: 100%;
1239
+ height: auto;
1240
+ border-radius: 8px;
1241
+ border: 1px solid rgba(181, 146, 99, 0.2);
1242
+ }
1243
+
1270
1244
  .files-editor-host {
1271
1245
  min-height: 100%;
1272
1246
  }
@@ -32,7 +32,15 @@
32
32
  <span>工作台</span>
33
33
  <span id="sessionCount">0 个</span>
34
34
  </div>
35
- <div id="sessionList" role="tree" aria-label="会话树"></div>
35
+ <nav class="crumb-bar" id="sessionBreadcrumb" aria-label="导航路径"></nav>
36
+ <input
37
+ type="text"
38
+ id="containerSearchInput"
39
+ class="container-search-input"
40
+ placeholder="按工作目录 / 容器名搜索"
41
+ spellcheck="false"
42
+ />
43
+ <div id="sessionList" aria-label="容器与 AGENT 列表"></div>
36
44
  <div class="sidebar-bottom">
37
45
  <button type="button" id="openConfigBtn" class="secondary">系统设置</button>
38
46
  </div>
@@ -295,6 +303,25 @@
295
303
  </footer>
296
304
  </section>
297
305
  </div>
306
+
307
+ <div id="cloneNameModal" class="modal-backdrop" hidden>
308
+ <section class="modal" role="dialog" aria-modal="true" aria-labelledby="cloneNameTitle">
309
+ <header class="modal-header">
310
+ <h2 id="cloneNameTitle">创建相同配置容器</h2>
311
+ <button type="button" id="cloneNameCancelBtn" class="secondary">关闭</button>
312
+ </header>
313
+ <div class="modal-body">
314
+ <div id="cloneNameTip" class="modal-tip"></div>
315
+ <label class="text-block">新容器名称
316
+ <input type="text" id="cloneNameInput" spellcheck="false" />
317
+ </label>
318
+ <div id="cloneNameError" class="modal-error" hidden></div>
319
+ </div>
320
+ <footer class="modal-footer">
321
+ <button type="button" id="cloneNameConfirmBtn">确认</button>
322
+ </footer>
323
+ </section>
324
+ </div>
298
325
  </div>
299
326
 
300
327
  <script src="/app/vendor/xterm.js"></script>