@xcanwin/manyoyo 5.7.2 → 5.7.4
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/lib/web/frontend/app.css +171 -2
- package/lib/web/frontend/app.html +34 -5
- package/lib/web/frontend/app.js +512 -167
- package/lib/web/server.js +577 -192
- package/package.json +1 -1
package/lib/web/frontend/app.css
CHANGED
|
@@ -378,6 +378,17 @@ textarea:focus-visible {
|
|
|
378
378
|
font-family: var(--font-ui);
|
|
379
379
|
}
|
|
380
380
|
|
|
381
|
+
.field-inline {
|
|
382
|
+
display: grid;
|
|
383
|
+
grid-template-columns: minmax(0, 1fr) auto;
|
|
384
|
+
gap: 8px;
|
|
385
|
+
align-items: center;
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
.field-picker-btn {
|
|
389
|
+
white-space: nowrap;
|
|
390
|
+
}
|
|
391
|
+
|
|
381
392
|
.text-block {
|
|
382
393
|
margin-top: 10px;
|
|
383
394
|
}
|
|
@@ -519,6 +530,164 @@ textarea:focus-visible {
|
|
|
519
530
|
color: #7b6d5d;
|
|
520
531
|
}
|
|
521
532
|
|
|
533
|
+
.workbench-group {
|
|
534
|
+
display: flex;
|
|
535
|
+
flex-direction: column;
|
|
536
|
+
gap: 8px;
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
.workbench-group-head {
|
|
540
|
+
padding: 10px 12px;
|
|
541
|
+
border: 1px solid rgba(181, 146, 99, 0.38);
|
|
542
|
+
border-radius: 12px;
|
|
543
|
+
background: rgba(255, 250, 242, 0.92);
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
.workbench-group-kicker,
|
|
547
|
+
.container-card-kicker {
|
|
548
|
+
color: var(--muted);
|
|
549
|
+
font-size: 10px;
|
|
550
|
+
font-weight: 700;
|
|
551
|
+
letter-spacing: 0.7px;
|
|
552
|
+
text-transform: uppercase;
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
.workbench-group-title,
|
|
556
|
+
.container-card-title {
|
|
557
|
+
margin-top: 3px;
|
|
558
|
+
font-weight: 700;
|
|
559
|
+
font-size: 13px;
|
|
560
|
+
line-height: 1.45;
|
|
561
|
+
word-break: break-word;
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
.container-stack {
|
|
565
|
+
display: flex;
|
|
566
|
+
flex-direction: column;
|
|
567
|
+
gap: 8px;
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
.container-card {
|
|
571
|
+
border: 1px solid var(--line);
|
|
572
|
+
border-radius: 12px;
|
|
573
|
+
background: rgba(255, 255, 255, 0.9);
|
|
574
|
+
padding: 10px;
|
|
575
|
+
display: flex;
|
|
576
|
+
flex-direction: column;
|
|
577
|
+
gap: 10px;
|
|
578
|
+
}
|
|
579
|
+
|
|
580
|
+
.container-card-head {
|
|
581
|
+
display: flex;
|
|
582
|
+
align-items: flex-start;
|
|
583
|
+
justify-content: space-between;
|
|
584
|
+
gap: 10px;
|
|
585
|
+
}
|
|
586
|
+
|
|
587
|
+
.container-card-info {
|
|
588
|
+
min-width: 0;
|
|
589
|
+
display: flex;
|
|
590
|
+
flex-direction: column;
|
|
591
|
+
gap: 4px;
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
.container-card-meta {
|
|
595
|
+
display: flex;
|
|
596
|
+
flex-wrap: wrap;
|
|
597
|
+
gap: 6px;
|
|
598
|
+
align-items: center;
|
|
599
|
+
color: var(--muted);
|
|
600
|
+
font-size: 11px;
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
.add-agent-btn {
|
|
604
|
+
padding: 7px 10px;
|
|
605
|
+
font-size: 12px;
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
.agent-list {
|
|
609
|
+
display: flex;
|
|
610
|
+
flex-direction: column;
|
|
611
|
+
gap: 6px;
|
|
612
|
+
}
|
|
613
|
+
|
|
614
|
+
.agent-item {
|
|
615
|
+
text-align: left;
|
|
616
|
+
width: 100%;
|
|
617
|
+
border: 1px solid rgba(181, 146, 99, 0.42);
|
|
618
|
+
background: var(--panel-strong);
|
|
619
|
+
color: var(--text);
|
|
620
|
+
border-radius: 10px;
|
|
621
|
+
padding: 10px;
|
|
622
|
+
animation: itemIn 220ms ease both;
|
|
623
|
+
animation-delay: calc(var(--item-index, 0) * 24ms);
|
|
624
|
+
}
|
|
625
|
+
|
|
626
|
+
.agent-item:hover {
|
|
627
|
+
border-color: #d1aa7f;
|
|
628
|
+
background: #fff8ef;
|
|
629
|
+
}
|
|
630
|
+
|
|
631
|
+
.agent-item.active {
|
|
632
|
+
border-color: #c68d5a;
|
|
633
|
+
background: #fff3e8;
|
|
634
|
+
box-shadow: inset 3px 0 0 var(--accent), 0 0 0 2px rgba(196, 85, 31, 0.14);
|
|
635
|
+
}
|
|
636
|
+
|
|
637
|
+
.agent-name {
|
|
638
|
+
font-size: 13px;
|
|
639
|
+
font-weight: 700;
|
|
640
|
+
margin-bottom: 6px;
|
|
641
|
+
word-break: break-word;
|
|
642
|
+
}
|
|
643
|
+
|
|
644
|
+
.agent-meta {
|
|
645
|
+
display: flex;
|
|
646
|
+
align-items: center;
|
|
647
|
+
gap: 7px;
|
|
648
|
+
font-size: 12px;
|
|
649
|
+
}
|
|
650
|
+
|
|
651
|
+
.agent-time {
|
|
652
|
+
margin-top: 6px;
|
|
653
|
+
font-size: 11px;
|
|
654
|
+
color: #7b6d5d;
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
.dir-picker-modal {
|
|
658
|
+
width: min(720px, calc(100vw - 24px));
|
|
659
|
+
}
|
|
660
|
+
|
|
661
|
+
.dir-picker-toolbar {
|
|
662
|
+
display: flex;
|
|
663
|
+
justify-content: space-between;
|
|
664
|
+
gap: 8px;
|
|
665
|
+
margin-bottom: 10px;
|
|
666
|
+
}
|
|
667
|
+
|
|
668
|
+
.dir-picker-current {
|
|
669
|
+
margin-bottom: 10px;
|
|
670
|
+
padding: 10px 12px;
|
|
671
|
+
border: 1px solid rgba(181, 146, 99, 0.38);
|
|
672
|
+
border-radius: 10px;
|
|
673
|
+
background: rgba(255, 251, 244, 0.92);
|
|
674
|
+
color: var(--text);
|
|
675
|
+
font-family: var(--font-mono);
|
|
676
|
+
font-size: 12px;
|
|
677
|
+
word-break: break-all;
|
|
678
|
+
}
|
|
679
|
+
|
|
680
|
+
.dir-picker-list {
|
|
681
|
+
display: flex;
|
|
682
|
+
flex-direction: column;
|
|
683
|
+
gap: 8px;
|
|
684
|
+
}
|
|
685
|
+
|
|
686
|
+
.dir-picker-item {
|
|
687
|
+
width: 100%;
|
|
688
|
+
text-align: left;
|
|
689
|
+
}
|
|
690
|
+
|
|
522
691
|
.empty {
|
|
523
692
|
padding: 12px 10px;
|
|
524
693
|
border: 1px dashed #d4bf9f;
|
|
@@ -783,8 +952,8 @@ body.mobile-actions-open .header-actions {
|
|
|
783
952
|
color: var(--muted);
|
|
784
953
|
font-size: 12px;
|
|
785
954
|
font-weight: 700;
|
|
786
|
-
text-transform:
|
|
787
|
-
letter-spacing: 0.
|
|
955
|
+
text-transform: none;
|
|
956
|
+
letter-spacing: 0.1px;
|
|
788
957
|
line-height: 1.45;
|
|
789
958
|
overflow-wrap: anywhere;
|
|
790
959
|
}
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
>关闭</button>
|
|
32
32
|
</div>
|
|
33
33
|
<div class="session-head">
|
|
34
|
-
<span
|
|
34
|
+
<span>工作台</span>
|
|
35
35
|
<span id="sessionCount">0 个</span>
|
|
36
36
|
</div>
|
|
37
37
|
<div id="sessionList"></div>
|
|
@@ -126,7 +126,7 @@
|
|
|
126
126
|
<div id="configModal" class="modal-backdrop" hidden>
|
|
127
127
|
<section class="modal" role="dialog" aria-modal="true" aria-labelledby="configModalTitle">
|
|
128
128
|
<header class="modal-header">
|
|
129
|
-
<h2 id="configModalTitle"
|
|
129
|
+
<h2 id="configModalTitle">查看配置摘要 (~/.manyoyo/manyoyo.json)</h2>
|
|
130
130
|
<button type="button" id="configCancelBtn" class="secondary">关闭</button>
|
|
131
131
|
</header>
|
|
132
132
|
<div class="modal-body">
|
|
@@ -136,7 +136,7 @@
|
|
|
136
136
|
</div>
|
|
137
137
|
<footer class="modal-footer">
|
|
138
138
|
<button type="button" id="configReloadBtn" class="secondary">重新加载</button>
|
|
139
|
-
<button type="button" id="configSaveBtn"
|
|
139
|
+
<button type="button" id="configSaveBtn">只读</button>
|
|
140
140
|
</footer>
|
|
141
141
|
</section>
|
|
142
142
|
</div>
|
|
@@ -154,9 +154,19 @@
|
|
|
154
154
|
<option value="">(不使用 run)</option>
|
|
155
155
|
</select>
|
|
156
156
|
</label>
|
|
157
|
-
<label>hostPath
|
|
157
|
+
<label>hostPath
|
|
158
|
+
<div class="field-inline">
|
|
159
|
+
<input id="createHostPath" placeholder="/abs/path/project" />
|
|
160
|
+
<button type="button" id="pickHostPathBtn" class="secondary field-picker-btn">选择</button>
|
|
161
|
+
</div>
|
|
162
|
+
</label>
|
|
158
163
|
<label>containerName<input id="createContainerName" placeholder="my-dev 或 my-{now}" /></label>
|
|
159
|
-
<label>containerPath
|
|
164
|
+
<label>containerPath
|
|
165
|
+
<div class="field-inline">
|
|
166
|
+
<input id="createContainerPath" placeholder="/workspace" />
|
|
167
|
+
<button type="button" id="pickContainerPathBtn" class="secondary field-picker-btn">选择</button>
|
|
168
|
+
</div>
|
|
169
|
+
</label>
|
|
160
170
|
<label>imageName<input id="createImageName" placeholder="localhost/xcanwin/manyoyo" /></label>
|
|
161
171
|
<label>imageVersion<input id="createImageVersion" placeholder="1.7.4-common" /></label>
|
|
162
172
|
<label>containerMode
|
|
@@ -190,6 +200,25 @@
|
|
|
190
200
|
</form>
|
|
191
201
|
</section>
|
|
192
202
|
</div>
|
|
203
|
+
|
|
204
|
+
<div id="directoryPickerModal" class="modal-backdrop" hidden>
|
|
205
|
+
<section class="modal dir-picker-modal" role="dialog" aria-modal="true" aria-labelledby="directoryPickerTitle">
|
|
206
|
+
<header class="modal-header">
|
|
207
|
+
<h2 id="directoryPickerTitle">选择目录</h2>
|
|
208
|
+
<button type="button" id="directoryPickerCancelBtn" class="secondary">关闭</button>
|
|
209
|
+
</header>
|
|
210
|
+
<div class="modal-body">
|
|
211
|
+
<div id="directoryPickerTip" class="modal-tip"></div>
|
|
212
|
+
<div class="dir-picker-toolbar">
|
|
213
|
+
<button type="button" id="directoryPickerUpBtn" class="secondary">上一级</button>
|
|
214
|
+
<button type="button" id="directoryPickerSelectBtn">使用当前目录</button>
|
|
215
|
+
</div>
|
|
216
|
+
<div id="directoryPickerCurrent" class="dir-picker-current"></div>
|
|
217
|
+
<div id="directoryPickerError" class="modal-error" hidden></div>
|
|
218
|
+
<div id="directoryPickerList" class="dir-picker-list"></div>
|
|
219
|
+
</div>
|
|
220
|
+
</section>
|
|
221
|
+
</div>
|
|
193
222
|
</div>
|
|
194
223
|
|
|
195
224
|
<script src="/app/vendor/xterm.js"></script>
|